Професионална програма
Loading...
+ Нов въпрос
kristian.georgiev avatar kristian.georgiev 15 Точки

Vehicle Park System 17 May 2015 DRY принцип.

Здравейте,

 

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

На изпита Vehicle Park System от 17 May 2015 ми направи впечатление,че голяма чат от кода(95% сигурно) на методите InsertCar(), InsertMotorbike() и InsertTruck() е еднаква.

При това положение съм сигурен,че повечето колеги,ще се сетят за SOLID принципите и по-точно Don`t Repeat Yourself (DRY).Аз примерно направих една енумерация с 3-те типа превозни средства и един метод InsertVehicle на мястото на останалите 3 ,който приема и енумерацията.Смятам,че така е доста по близо до КПК.

Проблема е,че тези методи са част от IVehiclePark интерфейса,за който в условието пише, че не можем да променяме.Даже и в задачата с юнит тестовете първото,което трябва да тестваме е един от тези 3 метода по избор.

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

 

Успех на всички в неделя :)

Тагове:
1
C# OOP Advanced
aanguelov avatar aanguelov 219 Точки

Не можеш да променяш самия интерфейс, но какво ти пречи да променяш VehiclePark класа, къде са имплементирани тези методи?

Аз съм си направил един метод InsertVehicle и му подавам IVehicle, сектор, място и дата и го преизползвам във всеки от трите останали метода -> цък

1
kristian.georgiev avatar kristian.georgiev 15 Точки

aanguelov не бях се сетил за това. Много добро решение е :) 

0
ibakyrdjiev avatar ibakyrdjiev 172 Точки

Аз бях го рефакторирал това на изпита и нямаше ядове :)

0
Filkolev avatar Filkolev 4485 Точки

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

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

1
ibakyrdjiev avatar ibakyrdjiev 172 Точки

Не, това определено не направи проблем че бърках по интерфейсите. То аз дефакто го зачистих. Не би трябвало да има проблем, стига да се запази абстракцията и да се подобри.

0
Bogdan1899 avatar Bogdan1899 50 Точки

Здравейте!

Ще се включа към тази тема, че проблемът ми е свързан със задачата. След като я рефакторирах я пуснах в Judge - а, където ми дава 4 точки, но ми гърми на първия и втория zero тест. Интересното е, че не ми дава никаква разлика между expected output и моят output. Първият simple output го проверих ръчно и съвпада 1:1. Някой може ли да обясни защо така се получава, че ми дава грешен отговор а в същото време очакваният и моят изход са еднакви?

 

EDIT: Открих си грешката. Оказа се, че на едно място слагам един нов ред повече.

1
04/02/2016 23:46:48
ibakyrdjiev avatar ibakyrdjiev 172 Точки

Ползваш diffchecker нали ?

0
Bogdan1899 avatar Bogdan1899 50 Точки

Честно казано не ми се е налагало да го ползвам до сега.

0