Условие и решение на изпита по КПК (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 изпита.

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

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




Отговори



1
Беше много полезен. Лично аз съм доволен от наученото, макар и да можеше още... Е, сега и от проверката ще сопълним знанията...

от AyrFX (948 точки)


32
Аз научих, че не съм научил достатъчно преди него :))

от topalkata (6442 точки)


6

Хах! Ако ти не си бил научил достатъчно преди него, какво остава за мен? :D

Иначе от (към края на) курса разбрах, че КПК-то е толкова важно, колкото и основите на програмирането. И изисква повече мислене. Абсолютно недостатъчно е просто да можеш да напляскаш някакъв код.

Не става само с кодене, иска и акъл!

 Еми, успех на всички и дано не сме го оКПКазили изпита. :)


от Bruno (921 точки)


5
Дали ще има видео с примерно оценяване както беше по JS?

от georgimanov (135 точки)


3
Дано да има или поне някакво упътване.. за да се избегнат всевъзможни недоразумения :)

от Nayata (3190 точки)

8
Аз смятам да търся точките, по които се оценяваме и в самия код, не само в документацията, понеже съдейки по себе си, имам няколко недокументирани неща + 1 бъг оправен и неописан... той си каза Ники да не забравяме да описваме, но към края на изпита се чудех кое по-напред да свърша. 

от Alex_H (1616 точки)



4
Нищо ново не научих, само се потвъди, нещо което си го занм принципно - че, нищо не знам :)

от ivo.paunov (991 точки)


16

It was amazing.


Let's do it again 


от INKolev (4141 точки)


24

Научих че ми трябват не 6 часа ами 6 дена само за да осмисля кода...

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

По спагети-код от това не бях виждал... Усещам ръката на Ивайло в писането на задачата...

Друго не научих, тъй като след 5 тото извикване на под-клас, редовно завършващ със 7 реда lambda-linq изрази, които викат още 5 класа приключвах всякакви опити да изчистя някой базов клас и да почна да надграждам и разделям.

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

Реално не приложих абсолютно нищо от това което научих в този курс, всичкото което оправих (Namespace, Stylecop, Const, Renaming, разделяне в собствени класове) го знаех още и от преди курса.




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

от rossi.bundeva (1059 точки)

16
Ивайло не пише спагети код. :)

от ivaylo.kenov (30760 точки)



2

гледам сега ботълнека, който е даден и найстина си е стабилен, но аз лично още в началото видях това 

var uriParts = uri.Split(new[] { '/', '/', '/', '/', '/' }.ToList().AsEnumerable().AsQueryable().ToArray(), , което акооставиш и само ToArray програмата си работи пак по същия начин и на мен тези оставалите, дори и да са имали скрита логика ми се сториха нежуни операции върху стрингове, които знаем, че са си бавни попринцип и автомачитно спрях да търся за други.... та въпроса ми е това, може ли да мине за ботълнек, защото си е излишен код който бави програмата.


от simonspirit (412 точки)


5
Това new[] { '/', '/', '/', '/', '/' }.ToList().AsEnumerable().AsQueryable().ToArray() не бави особено - подава един енумератор 4 пъти, което е все едно да извикаш 4 метода без някаква логика и да им подадеш един параметър. :)

от ivaylo.kenov (30760 точки)

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

от simonspirit (412 точки)



32

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

Лекции - плацикаш се в басейна с пояс и се учиш лека полека.

Подготовка за изпит - плацикаш се в басейна без пояс, здраво стъпил на дъното и набираш увереност.

Изпит - Ники и Ивайло те хващат и те хвърлят в океана.


от GGarabedian (300 точки)


4

Ако две и две е равно на 4, пресметнете колко ще струва подобрението в топлинния щит на междупланетарната станция на Марс през 3032г.

Само ако бяхме слушали лекторите на JSapps............................................................................................................................................


от LaForce (756 точки)

13

И да ги бяхме слушали, какво? :D На мен курсът по КПК винаги ми е бил приоритет, домашните ми бяха готови 2 дена след лекцията, да не говорим, че лекциите за SOLID, DP, Unit testing ги гледах пролетта 2 пъти и по време на курса още 2 пъти. Изчел съм половината сайтове за патърни докато ги схвана. Имам разписани на тетрадка всеки един от тях както и всеки SOLID принцип, смея да кажа, че имам доста сериозен принос в отборната ни работа, и всичко това казвам не за да се хваля, а като извод да ви кажа, че тези неща по никакъв начин не ми помогнаха да разбера какво се случва на изпита. До последната минута аз не знаех как работи това НЕЩО :D Рефакторирах на части, сложих някой друг патърн, но това не е задача за 7 часа. Иска се доста повече, за да вникнеш и да рефакторираш, и никой не може да ме убеди, че това трябва да се решава за 7 часа от хора, които се занимават с програмиране от Януари. 

П.С.

Целият ми коментар не е с цел да се оплаквам от изпита. За всички е един и оценките се определят спрямо нашите резултати, а не спрямо критериите  на някой застарял професор. Така че, calm down, който е учил, няма за какво да се ядосва :))


от antoanelenkov (1047 точки)



3
Не знам за вас, но аз лично много се отчаях. Докато пътувах към София си мислех ще ги докарам някак си до 50-60 точки. Уви. Три месеца учение...!!Отборната работа я писах сам и загубих ценно време за подготовка покрай нея и домашните за бази данни. Определено този курс не е за работещи.Ако успееш да изгледаш лекциите не ти остава време за писане на код. Сега гледам отборната работа за бази данни погледнах съотборниците си по-един два commits in github ( May the force be with you). Сега се чудя да проверявам изпити ли да пиша отборна или домашни или да гледам лекции. Ще погледна от хубавата му страна каквото и да става изпитът е на 25-26, така че са само 10-на дена. 

от dchakov (861 точки)


3

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

Моето лично мнение е че е по-лесно да се напише от нулата, отколкото да се рефакторира.

За мен смислената задача беше тази от подготовката, там имаше какво да се прави и научи. Тук е загуба на време. Ако си почнал да се съмняваш в себе си, реши компютърните фабрики - сигурен съм че за 6 часа ще изкараш поне 60-70 точки, и нагоре.

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



8

Нещо сериозно си се объркал ми се струва. Като за курс, който трае 4 месеца -> задачата е трудна, но със сигурност е на нивото ви. HTTP също учихме по някое време. :)

Друг е въпросът, че на лекции идват по 20 човека (половината, от които не слушат) та чак списъци пускаме. Още по-друг е въпросът колко пъти се повтори колко е важен курсът и колко е сериозна материята и, че тая работа не е като оная работа. Трети е въпросът, че видеата се гледат на скорост 18.9, защото още малко отгоре и ушите спират да слушат, където к'во разбрал, к'во чул не е ясно, да минава. Видяхте три скучни лекции в началото и отказахте цялата материя.

Колко от вас са се готвили за изпита като са инсталирали няколко тула за автоматизирано рефакториране и са прегледали 5-6 презентации/видеа и колко са седнали да напишат малко дизайн патерни и реален код с упражнения. Някой да е прочел някоя от книгите, които сме дали? Code Complete се чете за 4 дни, имате месеци.

На работа да не мислите, че само котенца и компютърна периферия ще описвате с по пет пропъртита. Нещата са много по-сложни от 20-та класа, които имахте да осъзнаете. Програмирането е сериозно мислене върху абстракции от високо ниво, не е редене на бутончета. Welcome to the reality. :)

P.S. Оригиналния ти пост звучеше доста обидно срещу хората, които два дни са правили задачи по нощите в офиса ;)


от ivaylo.kenov (30760 точки)



5
Файла var.cs беше доста интересен като се махне коментара :D ~100 errors ...

от M.Yankov (1418 точки)


1
Да, и на мен ми хареса. Май Ивайло беше показал този трик още в C# 2, ако не се лъжа. Добре, че това не ни го скриха някъде по-надълбоко в мета данните или там някъде. XD
Леко подвеждащ (на пръв поглед) беше и онзи магически коментар за "fprint" нещо си, дето не трябваше да пипаме. 

от Bruno (921 точки)