Чувствайте се свободни да дискутирате всичко във форумите.
Този път кодът е публичен. Може да питате каквото искате:
"Как да направя това по-добре?", "Това добра идея ли е?",
"Не мога да преценя кое от тези две неща е по-удачно", "Тази
конструкция ми допада много." и прочее.
Кога да използваме #remainder
, и кога #%
?
Кога е допустимо да си кръстим променливата expr
, arg
, env
(съответно, вместо expression
, argument
, environment
)?
Желателно ли е да използваме мутиращи методи върху аргумент на метод? (Пример: в няколко решения на трета задача видях #shift
.)
Подаването на масив като аргумент на конструктор е лоша идея, нали? А подаването на самите елементи на масив (един по един) лоша идея ли е? По-специално - трябва ли да им сложим някакви по-подходящи имена, дори когато става дума за съвсем малък масив (от един-три елемента, да речем)?
Знам, че на лекции е споменавано как употребата на много индекси е лоша черта на един код, но наистина ми се струва, че не винаги е възможно това напълно да се избегне.
Най-общо, трябва да си напиша метод, който проверява дали обект съответства на нещо. #matches?
по-добро име ли е от #match?
?
P.S.
Двойното отрицание (!!
) е чудесен начин да превърнем нещо в булевата му интерпретация. Но когато се налага да правим това за по-сложен израз, например foo =~ /bar/
, идва проблемът с приоритета - трябва да слагаме скоби: !!(foo =~ /bar/)
.
И понеже слагането на скоби около наистина сложен израз, заемащ няколко реда, е грозна работа, въпросът ми е дали е допустимо да ползваме not not
вместо !!
.
И като ще съм нахален: Има някаква разумна причина да няма метод Object#to_bool
, нали?