Кладовка и натянутый трос

Вообще идеальный код должен быть как натянутый трос - удаление любой строчки должно что-нибудь ломать. Такой код легко поддерживать и развивать. В реальной жизни естественно так не получается, поэтому приходится пользоваться метафорой кладовки. Ну такая, кладовка обычная, в которую закидываешь что-нибудь наверх и быстро-быстро закрываешь. Все понимают как это выглядит? А когда открывашь, то надо как японский воин одну руку держать над головой, вторую перед собой и быть готовым ко всему. Так и с кодом. Не бывает плохого кода, бывает ситуация, когда его плохо засунули в пыльный угол.
Чемпион по удобству засовывания - это конечно SCSS. Обожаю его. Досточно завернуть все вот это,
что накопилось в какое-нибудь body.legacy5 { ... }
, проставить нужный класс в лайауте или вьюхах
и начать новую жизнь даже с теми же стилями.
В рейлс нужно помнить, что если лайаут стал совсем плох, всегда можно начать новый, перетащив
туда только то-что нужно. Лайаутом можно управлеть на любом уровне - для всего приложения, для
контроллера, для набора экшена или даже в методе render
, поэтому можно тихонечко переходить
на новый лайаут и в финале удалить старого монстра (хотя новый в этот момент может оказаться
не лучше, но хотя бы понятно что делать).
И напоследок в Рейлс - очень удобно организовывать неймспейсы. Практически любой код можно
аккуратно засунуть в какое-нибудь Legacy2::
и потихоньку вытеснять из проекта. Я когда-то давно
даже писал пост, какая магия Рейлс создает неймспейс Foo::Bar::
, если файл лежит например в
app/components/foo/bar/some_file.rb
.