Веселин обнови решението на 27.01.2016 20:25 (преди над 9 години)
Махнах 1 точка, защото по задачите има още какво да се оправя.
-
1.
- в 4-та задача можеш да използваш Comparable в Card -
5.
- хубаво е и да пишеш и твои :) -
10.
- това не го прави -
14.
- не си хвърлял изключения в кода -
15.
- и regex-ове не си използвал :D
В 4-та задача
- Можеше да сложиш
generate_belote_cards
вBeloteDeck
и тн.. Също кодът вgenerate_..
методите е еднакъв. - Често си писал неща от типа
card.belote_rank == Card::BELOTE_RANKS.index(:king)
, което изглежда грешно, можеше простоcard.rank == :king
. - Не си разделил логиката отностно различните видове ръце/карти пр. ръка в белот или ръка във война, което е грешно. Различни игри са все пак. Има я логиката, че ако играя на война и имам 4 валета ще кажа 200 или ще си обявя белота, но начина, по който едно AИ разбира, че има невероятна ръка, но в друга игра, не трябва да е като си изсипал логиката за всички игри в един клас :)
- Може да се справиш по-добре в методите за белот, двайсет, четирсет.
Виж нашето решение https://github.com/fmi/ruby-homework/blob/master/tasks/04/solution.rb.
Старай се да откриваш повтарящи неща, неща, които могат да се преизползват в кода/изискванията. Примерно имаш различните методи за генериране на тесте. Написал си ги, работят и си спрял до тук, а те правят едно и също и можеше да напишеш една помощна функция и да изчистиш малко повторенията. Друг пример е с втора задача. Методите grow
и move
са почти еднакви - слагат нов елемент в даден посока и в move
се маха последния.
Ако погледнеш obstacle_ahead?
ще видиш, че 50% от кода е излишен. Правил си нещо, променял си, тръгнало е и си го оставил :/