Екатерина обнови решението на 21.11.2014 07:48 (преди около 11 години)
Сама виждам, че този код не е много DRY - например методите horizontal и vertical - и бих била благодарна за някакви идеи/hint-ове как да оправя това (:
Не ми допада това, че Vertical надледява Horizontal само за да получи функционалността за добавяне на компоненти. Можеш ли да я изнесеш и да я използваш и на двете места?
Какво те притеснява в методите horizontal и vertical? Защо се налага те да връщат обекта, който създават? Можеш да подадеш блока, който получаваш на съответния обект (Horizontal / Vertical) и да instance_eval-неш в initialize метода. Така кода в тези два метода ще се сведе до един ред, който добавя елемент в @content.
Името @content не ми харесва много. Помисли за нещо по-удачно. Също така Horizontal и Vertical са прилагателни. Можеш ли да ги комбинираш с някакво съществително? Не е нужно да са 1:1 с имената на методите от DSL-а и по мое мнение е по-добре името на клас да включва съществително (понякога може и глагол).
Помисли за това какъв трябва да е резултата от horizontal блок, в който имаш вложен vertical на някоя от междинните позиции (не първа). Примерно:
horizontal do
label '1'
vertical do
label '2'
label '3'
end
end
:)
Правилно ли разбирам, че при такъв вход:
horizontal do
label text:'a'
label text:'b'
vertical do
label text:'c'
label text:'d'
end
horizontal do
label text:'e'
label text:'f'
end
end
резултатът трябва да бъде:
abcef
d
Правилно. :)
