Условие и решение на изпита по КПК (2015, ConsoleWebServer)


17

Здравейте, пускам линкове към условието и авторското решение на задачата.

Условие: https://github.com/TelerikAcademy/High-Quality-Code-Exam-ConsoleWebServer/releases/download/assignment/HQC-Exam-ConsoleWebServer.zip

Решение: https://github.com/TelerikAcademy/High-Quality-Code-Exam-ConsoleWebServer/archive/author-solution.zip

Код: https://github.com/TelerikAcademy/High-Quality-Code-Exam-ConsoleWebServer

Документация (в Markdown): https://github.com/TelerikAcademy/High-Quality-Code-Exam-ConsoleWebServer/blob/CleanCode/README.md

Утре ще пуснем оценяването.

Краен срок за оценяване (домашни и изпит): сряда 12:00. Поне по 3 домашни и поне 10 изпита.

Оценки за курса: след сряда.

Дано изпита ви е бил полезен и сте научили нещо от него :)




Отговори



3

В момента работим по критериите за оценка на изпита.

Ако намерите грешки предлагайте подобрения до следобяда. След това влизат в системата.

https://github.com/TelerikAcademy/High-Quality-Code-Exam-ConsoleWebServer/blob/CleanCode/Evaluation/ExamFileEvaluations/HighQualityCode2015ExamEvaluation.cs


от Nikolay.IT (39117 точки)


2
За strategy не е ли правилно да се ползва абстрактен клас вместо интерфейс ? 

от avalkov (628 точки)

2

аvalkov, мисля, че и двата варианта са правилни.

Ники,

var uriParts = uri.Split(new[] { '/', '/', '/', '/', '/' }.ToList().AsEnumerable().AsQueryable().ToArray(), StringSplitOptions.RemoveEmptyEntries);

Това не е ли bottleneck, който да се смени с:

var uriParts = uri.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries);


?





1

Aз съм потресаващо тъп. Докато си зипвах солюшъна с CleanProject забравих да преместя документацията афжеба и тя да се зипва. 15-20 точки отиват на вятъра.

Едит: засега не се взимат точки за неописани патърни но все пак ще изгубя някакви ако не ги намерят. Тъпо е за Solid принципите се дават повече точки отколкото за всеки отделен патърн при положение че ги имаме описани наготово в подготовката но така си пише в условието на задачата така че кофти за мен.


от dany90 (1340 точки)


1
Не е идеята да описваш самите SOLID принципи, а къде ти ги ползваш. Виж: https://github.com/TelerikAcademy/High-Quality-Code-Exam-ConsoleWebServer/blob/CleanCode/README.md

от Nikolay.IT (39117 точки)

0

Във формата за оценяване питате дали са описани. Дори да имам напълно оправен и перфектен код би-трябвало да взема само половината точки. Сега не е сигурно дали ще взема по 0 или 1 точки за всички.

Едит: описвах ги както на подготовката с примери естествено. Като имаш дефинициите всеки веднага ще се сети за примери за някои неща дори в оригиналния код. Стига да е гледал подготовката и да знае че ги има.


от dany90 (1340 точки)


1

Взеха ни доста damage, но така и трябва... нашия strenght ++ ;

Единственото, за което ме е яд , е че в бързината накрая не си пуснах отново StyleCop, и така заради някакви забравени отвън глупави usingi губя 9 точки от StyleCop-a, но карай. 

Успешна и безпроблемна проверка на всички.


от IvayloAndonov (1994 точки)


3

Не се притеснявай, едва ли ще загубиш всичките 9 заради няколко забравени usingi
"0 предупреждения" - 9
"1 или 2 предупреждения" - 8
"между 3 и 5 предупреждения, включително" - 7
"между 6 и 8 предупреждения, включително" - 6
"между 9 и 11 предупреждения, включително" - 5
"между 12 и 15 предупреждения, включително" - 4
"между 16 и 20 предупреждения, включително" - 3
"между 21 и 29 предупреждения, включително" - 2
"между 30 и 39 предупреждения, включително" - 1
"40 и повече предупреждения" - 0


от Mirka (1454 точки)


2
Имам въпрос относно това как ще се оценяват SOLID принципите. Например в критериите за Single Responsibility се пита дали класовете имат само една причина за промяна. Това за абсолютно всички класове ли се отнася или за примера, който е даден в проверяваната работа?

от antoanelenkov (1047 точки)


5

Имплементираш ги за кода ти като цяло, а в документацията даваш пример с един от класовете.

Ако имаш пример, но в кода ти е зле => половината точки.

Ако в кода си ги оправил, но не си дал пример в документацията => половината точки.


от Nikolay.IT (39117 точки)


2
"Класът HttpNotFound е преименуван на HttpNotFoundException"
А аз го преместих в папка CustomExceptions със съответният namespace. Май губя точки, а? :)

"Премахнат е дългият несвързан коментар в ActionInvoker"
Аз го махнах, но ми беше супер познат от  ученето на "C" във университета. Даже pprint(), fprint() и т.н. съм ги ползвал :D

"Например, където се подава интерфейс, вместо конкретен клас някъде, за да се свърши някаква работа"
Ползвах, ама документация йок! -
За solid същото, но само до където успях да реТракторирам.. щото на дългите if-else-if-else-if-else.. хич не им хванах спатиите. Предполагах "Chain of responsibility" но си остана с предположението. :)

Имам чувството, че тия патърни трябва малко по-машинално да се науча да ги прилагам..
Дано се смилят над мен проверяващите :D

от Obelixx (339 точки)


3

Малко фийдбек и от мен :)

Относно изпита - Лично аз щях да извлека доста повече полза от нещо подобно като изпита, но за отборна задача. Щях да имам 3 месеца да си се забавлявам и проучвам и със сигурност щях да науча повече отколкото от кравите и биковете.

Относно отборните - Според мен не трябва изобщо да се вземат предвид при оценките на курсовете, а да имат по-голяма тежест вече при раздаването на сертификатите - и да се гледа за конкретния курсист по-подробно какво и колко е допринесъл.

Поздрави!


от todorm85 (1347 точки)


13

Изпитът беше много труден, спор няма. Сега обаче, като виждам критериите за оценяване, те са доста човешки.

Изпитът запомням с тази история: приятелката ми ме чакаше пред академията след края на изпита. Около 22ч е излязло едно момиче от сградата и приятелката ми я е попитала дали е от телерик. Нейният отговор е бил ''след този изпит вече не съм сигурна''.

И аз точно така се чувствах през повечето време. Тъкмо събера малко самочувствие, че разбирам нещо от код и трейнерите ме удрят с всичка сила и ме връщат на земята...


от emil.nik (307 точки)


2

След като си изпълних норматива, реших да си погледна и собственото решение с критериите. Свалих си го от лаптопа и тръгнах да билдвам, но.... ядец - даде ми някаква странна грешка от рода на това, че някакви тагове по XML настройките на проектите не съответстват.

Панически погледнах за този проблем в интернет, но не открих нищо.

Оказа се, че ако отварям сълюшъна с doubleclick върху .sln файла, този проблем се появява. Ако, обаче отворя VS и отида на File -> Open Project/Solution, проблем няма и всичко се ребилдва нормално.

От 10 проверени изпита, никъде не срещнах такъв проблем. Опасявам се, че това може да ми онесе главата на този изпит и за това, реших да го опиша...

Та колеги, ако някой изпит дава странни грешки при отваряне на сълюшъна, моля опитайте по описания по-горе начин, преди да го занулите...


от AyrFX (948 точки)


6
Всички, които са те проверили са посочили, че кодът се компилира успешно, така че най-вероятно проблемът е само при теб.

от Nikolay.IT (39117 точки)

1

Ники, много благодаря!

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

Успех!


от AyrFX (948 точки)


2
UP на темата за изпита от миналата година :)

от dimkirov (155 точки)