Loading...
butanfire avatar butanfire 32 Точки

Проверяване на домашни - FUN & FAQ

Обръщам се към всички колеги които проверяват домашни, приемайте нещата с усмивка и най-вече критикувайки ако има причина :))

Отварям темата с идея, че със сигурност всеки е имал поне един абсурден или смешен коментар за домашното, или пък с който не е съгласен.
Още повече е хубаво темата да се разрастне и да се дават съвети какво е правилно да се гледа в кода за домашното, или за това как се пише. (мисля че имаше напътствия в някоя от лекциите, но бегло се сещам.)
Понеже домашните не са за Judge, и все хора ще ги проверяват, всеки има различни виждания и стандарти, затова е хубаво да наложим някои точки за домашните.

Досега съм попадал на доста свестни проверяващи, и браво на хората които имат време и силите да го правят!

 

FAQ :
Примерни съвети за проверяващите :

1) Забележките за именуване на функции/променливи са най-важни по КПК (ООП частично) и курсовете след него. (като тежест) 

2) Ако имаш по-добре предложение за решение - напиши го в коментара на домашното, няма нужда да даваш по-малко точки, защото някой е решил задачата по друг начин.

3) Във връзка с по-горното - не си налагайте вижданията за нещата като коментар в домашното.
Ако реша някоя задача с "go to" успешно, не значи че е грешно решена.
Не сме нито даскали, асистенти или професори, бъди колега! :)


Примерни съвети за коденето:
1)  Много добра практика е Copy/Paste на името на проблема от домашното - като име на проекта

Например :
Problem 1.       Create Your Own GitHub Developer Profile 

-> По-лесно се разбира, няма нужда да се гадае за коя задача става дума.
Лично аз преди си ги кръщавах Problem01 , Problem 02 , и т.н. и сигурно е било ужас за проверяващите :)

2) while(true) цикъл на цялата програма се слага с цел да улесни проверяващият да пусне всички входни данни на веднъж, вместо да пуска програмата 3-5 последователни пъти - това не трябва да се разглежда като проблем на решаването на задачата. 
Защото while цикъла не е част от логиката на програмата.

3) Не предавайте празни задачи. (имах такъв случай да проверявам празен проект...)
-> По-добре напиши каквото си могъл и напиши коментар какво те е затруднило.

Така този, който проверява ако е решил задачата ще ти даде насоки или ще ти каже къде си сгрешил.

4) Публикуването на домашното във форума помага. Но също и създава тенденция за мързел.
Решавай си задачите, мъчи се 1-2-3 дена, ако не стане, тогава погледни от някой колега.

Първо се чувстваш по-добре, че сам си успял, събираш повече самоувереност - а пък за по-сложни проблеми не се стряскаш.

Fundamental нивото всеки би трявало сам да може да се справи, без чужда помощ. (Алгоритми и Структури от данни са друга бира)

 

 

FUN : 

Ето и примерен код за следващият коментар:

public class Problem1_RectangleArea {
    public static void main(String[] args)
    {
        while(true) {
            Scanner input = new Scanner(System.in);
            String[] userInput = input.nextLine().split(" ");
            int sideA = Integer.parseInt(userInput[0]);
            int sideB = Integer.parseInt(userInput[1]);
            System.out.println(sideA * sideB);
        }
    }
}


Коментара мога да го публикувам, понеже името на човека не се споменава, но съжденията са култови :))

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

На всяка задача си вкарал още в началото по 1 безкраен while цикъл, който след вкарване на някакви данни, извършва всичко правилно и коректно, след което обаче иска отново да му бъдат подадени данни. Така направено, всяко от приложенията не може да се спре освен ако не натиснеш червения бутон отстрани. Можеше поне да сложиш 1 команда като "exit" / "stop", или !userInput.equals(null) за да може този цикъл да спре и приложението да приключи. 
Кодът е правилен, добре форматиран, има дори коментари за някои от действията, но за мен никоя задача не работи правилно, понеже за да бъде спряна трябва "да и набиеш хикса".

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

От духа на коментара трябва да разберете : Why so serious :)

Уважавайте труда на колегите си и ако не разбирате нещо... не значи че е лошо!:)

 

Поздрави,

Владо

4
Java Advanced
LittleZombie avatar LittleZombie 30 Точки

Напълно съгласна съм с написаното от теб, колега. В крайна сметка оценяването е по - скоро да се провери до каква степен функционира даден код и да се помогне на тези, които не са усвоили изцяло материала, а не да се правят забележки защо кодът е направен така, а не както на оценяващия му харесва и съответно да се отнемат точки при адекватно функциониращ код. Ако имате допълнителни знания просто ги споделете. В крайна сметка пък точно затова е и курсът "Teamwork and Personal Skills" - да се научим да помагаме на другите, а не да ги критикуваме.

0
Filkolev avatar Filkolev 4482 Точки

Не бих се съгласил с твърдението ти за goto. Дали такова решение заслужава да му бъдат отнети точки е друг въпрос, по-скоро не. Но, особено в кратките програми, които студентите в СофтУни пишат, едва ли някъде има случай, където ползването на този стейтмънт да е оправдано. Всичко, което може да се напише с goto може да се напише и без него, често с не много усилия. 

Не съм фанатичен противник на goto (напр. виж тук). Но широко разпространено мнение е, че използването му трябва да се сведе до минимум и в този смисъл използването му, особено когато може лесно да се избегне, се счита за лоша практика. Нали това е идеята на проверяването на домашни, да си даваме обратна връзка? Ако видя домашно с goto не е ли редно да посоча, че това е лоша практика? И това не е мое виждане, това е де факто консенсус сред професионалистите. 

Не е ли идеята на домашните и проверяването им да пишем по-качествен код? В този смисъл не би трябвало да подмина подобна забележка. Не бих подминал и някакво парче код, което не е четимо и в което се случват твърде много неща, които може да се разбият на по-малки и разбираеми стъпки. Да, това би било мое лично мнение, но след като съм се затруднил да разбера кода, вероятно не съм единствен. И понеже програмистите пишат код в екип и трябва да мислят за хората, на които в последствие ще им се наложи да поддържат програмата, четимостта на кода не е нещо, което трябва да се подмине с лека ръка и твърдението "абе работи вярно, нали това е важното; а и аз си го разбирам".

Всяка една критика по качеството (а не само по правилността) на кода е полезна и, стига да е отправена по правилния начин, а не с остър тон, помага на учещия да стане малко по-добър програмист.

Относно коментарите към домашните, бях писал преди време една обширна тема, тогава афектиран от ниското качество на обратната връзка, която редовно получавах. Може да ти е полезно - ЛИНК.

 

4
butanfire avatar butanfire 32 Точки

Окей, очевидно засегнах много силно go-to примера:))
Темата ми очевидно се дублира с твоята - https://softuni.bg/forum/2960/useful-info-kak-da-davame-polezna-obratna-vryzka-kym-chujdi-domashni , но идеята ми да се направи Fun тема за тези неща с цел да се подобрят нещата! :)

 

Поздрави,

Владо
 

1
Filkolev avatar Filkolev 4482 Точки

Идеята ми беше, че някой ден може да сме колеги и да работим по един и същи проект - тогава няма как да се игнорира обратна връзка, дори да е базирана на лично мнение, а не на установени практики. Ако смяташ, че кодът ти е перфектен, но колегите ти не харесват нещо в него, нормално е да се замислиш дали не са прави и дали няма потенциал и други хора в бъдеще да те споменават "с добро" при вида на 4-те вложени тернарни оператора, които с удоволствие си сложил, за да направиш на един ред четири проверки.

За мен лично е полезно ако някой ми напише коментар към домашно, че може да се направи (по негово мнение) малко по-чисто и/или кратко и/или четимо и/или ефикасно и т.н. След като е лично мнение, разбира се не бих бил длъжен да се съобразявам и не е редно това да се отразява на оценката на домашното. Може дори мнението да е грешно, но предпочитам да виждам от време на време и грешни препоръки, основани на лични възгледи, отколкото никакви.

3
alexei.tcekov avatar alexei.tcekov 33 Точки

Здравейте колеги ... да използвам и аз тази тема .... да дам един пример :  Когато застането пред банкомат и се опитвате да вкарате един банан в него , банкомата няма да Ви напише грешен вход или това не е карта и т.н. !!!... така че когато в условието не е зададено да проверяваме входа  е излишно да пишете коментар/ препоръка, че при грешен вход различен от условието програмата гърми, не работи  и т.н. :)

2
GerganaYord avatar GerganaYord 78 Точки

Принципно съм съгласна с теб, че когато по условие е зададено, че входните данни винаги ще бъдат в определен формат, не е нужно да правим проверки дали наистина е така, както и да извеждаме съобщения за грешка в противен случай. Но ако никъде не е споменато изрично, че входните данни няма да бъдат никога подавани грешно, то е добре да бъдат обхванати всички възможни случаи. В реалния свят по-скоро програмите се пишат така, с презумпция че на юзера не се знае какво може да му хрумне. 

А примера с банана и банкомата искрено ме разсмя. Май още никой не се е решил да го пробва, иначе все щеше да се разчуе. Банкоматът след това може и да не ти изведе съобщение за грешка, но определено ще спре да функционира, а ако след теб за него чакат други хора, то те определено ще "коментират" грешката ти, не се съмнявай. Все още по банкоматите няма инструкции да не се вкарват банани, именно защото никой не го е правил, но ако подобен инцидент се случи, не се съмнявам че на всички банкомати ще се появи надпис "Моля, не поставяйте в четеца за карти банани или други неуместни предмети", по същия начин, по който МакДонълдс ни предупреждават с надписи "Внимание, кафето е горещо", след като жена поляла се с горещо кафе ги осъди преди доста години. 

 

2
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.