[C#] OOP Advanced Exam
начиии.... аз съм мнго тъпо парче....
https://1drv.ms/u/s!AqYxxc0vshUCg24OCEVvPcdv0E3I
Защо не можах да си видя грешките по време на изпита!? Не мога да го тествам сега в джъджа, но тестовете дадени в условието минаха.... Супер много ме е яд, че заради едно недоглеждане не можах да направя нищо.... Беше за 2 минути работа.......................
https://drive.google.com/file/d/0B0Rg1UZe_s4oT1BicmREd3BVVDA/view?usp=sharing
Отнасяй се критично, решението има своите проблеми :)))
Добавянето на стратегиите успях да го направя по-динамично, чрез рефлекшън. Малко е грозно, но поне работи, когато имаме консистентно именуване на атрибути и стратегии :)
<pastebin>
Не е грозно :))) Много се чудих вчера дали да не направя нещо подобно, но реших, че може би един бъдещ модел на боклук може да бъде използван от вече съществуваща стратегия. Като се прибрах ми дойде друга идея - още един атрибут върху стратегиите, който да указва имената на боклуците, които се асоциират със стратегиите:
[AssociateWith(ЕдиКакъвСиGarbage)]
[AssociateWith(ЕдиДругСиGarbage)]
public class ЕдиКакваСиСтратегия
Ами то това не е ли същото? :) Пак ще трябва да отидеш да модифицираш стратегията, за да работи новият боклук :)
Да... Какъв е оптималният вариант?
аз го направих да взима стратегията на място, а не с предварителен лоудър. Когато процесвам Waste му взимам анотейшъна от там с рефлекшън правя стратегия и я адвам в холдъра с тоя анотейшън.
А какво мислите за това DisposableAttribute-ите да си имат свойство, което да указва стратегията към тях? И съответно да зарежда с рефлекшън всички стратегии към съответните атрибути :) Така хем си пишеш новия модел боклук и всичко сработва, хем няма нужда имената на боклуците и стратегиите да се припокриват до някаква степен.
Здравейте.
Поздрави на всички колеги които бяха на изпита и се потиха честно над задачата. Малко съм изненадан от advanced reflection нещата, като се има предвид, че и подготовката за изпита не беше перфектна. Пуснаха ни в дълбокото сякаш.
Отнoсно Disposal attribute мисля, че е въпрос на избор. Използвах атрибути на няколко места, като за стратегиите така както е по авторското решение, за garbage моделите с property. Разликата в рефлекшъна после е малка.
Между другото този command handler от авторското решение не е много strong cohesion, както и магическите числа от стратегиите би трябвало да са константи.
Малко е тъпо, че за атрибути имаше само една задача в домашните в целия курс, лично аз не успях да се упражня върху тях и да разбрера защо ми трябват, въпреки, че гледах различни лекции, може би е специфично, но трябва повече задачи със сигурност, че тая ЕДНА задача оставя в хората впечатлението, че това е нещо странично.
Имаше и в юнит тестовете, там без тях не може.
Ако питаш по - advanced developer защо прави нещо няма да получиш дълго обяснение защото толкова време го е правил, че за него абстракцията и имплементацията са едно и също. Та така и по лекциите, ако се чудиш защо много не се дълбае върху причините, може да получиш най-много референции към класовете на .net, много от които широко използват атрибути.
Атрибутите са полезни, защото правят reflection по-лесен, в смисъл по-бърз, понеже стеснява търсенето на типове, методи, полета, пропъртита. Имат и описателни ползи, не като документация, а като допълнителна информация за обекта към който е прикрепен, но това пак се използва чрез reflection. Ето други ползи.
Допълнително инфо: MSDN
Да, за юнит тестовете ги ползваш, но не кастъм атрибути.
Здравейте ... и аз да покажа моето решение .... така както съм го предал ... приемам градивни критики :) ... https://github.com/alexeitcekov/school/tree/master/C%23/OOPAdvance/AdvanceOOPExam
.... след като излязох от изпита се усетих, че командите в while-a връщат стринг и можех да го направя с command pattern и рефлекшън ...