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

November 17, 2016

Вообще идеальный код должен быть как натянутый трос - удаление любой строчки должно что-нибудь ломать. Такой код легко поддерживать и развивать. В реальной жизни естественно так не получается, поэтому приходится пользоваться метафорой кладовки. Ну такая, кладовка обычная, в которую закидываешь что-нибудь наверх и быстро-быстро закрываешь. Все понимают как это выглядит? А когда открывашь, то надо как японский воин одну руку держать над головой, вторую перед собой и быть готовым ко всему. Так и с кодом. Не бывает плохого кода, бывает ситуация, когда его плохо засунули в пыльный угол.

Чемпион по удобству засовывания - это конечно SCSS. Обожаю его. Досточно завернуть все вот это, что накопилось в какое-нибудь body.legacy5 { ... }, проставить нужный класс в лайауте или вьюхах и начать новую жизнь даже с теми же стилями.

В рейлс нужно помнить, что если лайаут стал совсем плох, всегда можно начать новый, перетащив туда только то-что нужно. Лайаутом можно управлеть на любом уровне - для всего приложения, для контроллера, для набора экшена или даже в методе render, поэтому можно тихонечко переходить на новый лайаут и в финале удалить старого монстра (хотя новый в этот момент может оказаться не лучше, но хотя бы понятно что делать).

И напоследок в Рейлс - очень удобно организовывать неймспейсы. Практически любой код можно аккуратно засунуть в какое-нибудь Legacy2:: и потихоньку вытеснять из проекта. Я когда-то давно даже писал пост, какая магия Рейлс создает неймспейс Foo::Bar::, если файл лежит например в app/components/foo/bar/some_file.rb.

comments powered by Disqus