Стоян обнови решението на 08.11.2015 11:05 (преди около 9 години)
Имаш проблеми със спазването на конвенциите на места, направи справка с ръководството за стил.
На места подредбата на кода ти е странна, на други места направо нарушава конвенциите (редове 114-115 и на други места).
highest_of_suit
е също с грешна подредба.
if
-ът в allow_face_up?
е безсмислен, сравнението си връща истина/лъжа.
Прегледай решенията на колеги и нашето примерно решение за алтернативни идеи.
...
srsly!?
Стояне, не разбрах какво искаш да кажеш. Проблем ли има?
Решението ти минава всички тестове, но не спазва конвенциите, при това "нарушенията" изобщо не са пренебрежими. А на други места, кодът ти може да стане много по-елегантен, ако ползваш правилните методи от Enumerable
. И т.н.
Ако не отнемем точка, има опасност да станат две неща:
- Други твои колеги да гледат решението ти като примерно, защото има 6 точки и минава всички тестове и да си вземат грешен пример от тези части на кода и да си помислят, че "така трябва да се прави".
- Ти може да не положиш необходимите усилия за следващата задача, да видиш къде може да стане по-добре. Сега, след тази -1 точка, се съмнявам да не провериш къде може да стане по-добре.
Не мисля, че 1 точка по-малко е висока цена за тези потенциални ползи. Ако все пак смяташ, че има проблем, сподели, или ни пиши.
Не няма проблем, правилата са си правила :)
И все пак мен такива случки по-скоро ме демотивират.
"А на други места, кодът ти може да стане много по-елегантен, ако ползваш правилните методи от Enumerable"
Това малко ми напомня на проф. Бъчваров в първи курс, при когото ако не е както той го е казал не минава. Според мен е готино да показвате тези "правилните" неща с Enumerable например, но трябва да сме свободни да решаваме задачите както на нас ни е удобно, дори да не е your way/the Ruby way.
Поздрави, Стойо
P.S. Искрено се извинявам за първоначалната си реакция :) просто се бях ядосал.
И все пак мен такива случки по-скоро ме демотивират.
Може би донякъде разбирам фрустрацията ти. Предполагам как би се чувствал, ако си положил много време и усилия и накрая, след като минеш всички тестове, някой ти отнеме точки за привидно дребни неща.
Но аз не мисля, че това е твоят абсолютен лимит. Не мисля, че това е таванът на възможностите ти. Готов съм да се обзаложа, че си могъл да напишеш и по-добро решение. Знам, че изисква време и усилие, а понякога (особено ако работим), приоритетите ни се менят, но сме в този курс, за да учим неща и да си посочваме къде може да стане по-добре.
Пак казвам, че не смятам, че една точка е висока цена, за да научиш ценни уроци – било то технически или принципни.
Ако не съм прав за демотивацията, моля те, сподели кое точно те демотивира, защото целта ми не е да демотивирам студентите.
Това малко ми напомня на проф. Бъчваров в първи курс, при когото ако не е както той го е казал не минава.
Ти прегледа ли примерното ни решение и някои от решенията на колеги? Сравни ли това, което предлагаме като алтернатива на твоя код, преди да произнесеш присъдата "Бъчваров"?
Ще ти дам един пример, за да не е само на думи, със следния метод от твоя код:
def carre_helper(rank)
count = 0
@cards.each do
|card|
if card.rank == rank
count += 1
end
end
count == 4
end
Може да стане така:
def carre_of?(rank)
@cards.count { |card| card.rank == rank } == 4
end
Или:
def carre_of?(rank)
@cards.map(&:rank).count(rank) == 4
end
Не бих казал, че изискваме "нашия вариант" от късогледство или чист инат, защото не разбираме или поради друга причина не признаваме другите имплементации на даден метод.
Да, наистина предпочитаме някой от вторите два варианта, пред твоя код.
Но не казвам, че кодът ти е "грешен". Казвам само, че стилово куца и че може да стане по-добре и аз знам, че ти можеш да го направиш по-добре, ако положиш необходимото усилие.
Изборът как да възприемеш това и какво да правиш за следващите задачи е твой. Твоята съдба е в твоите ръце :)