Приглашение к троллингу

топ 100 блогов antilamer16.04.2010 Один из компонентов достижения цели "писать хороший код и не писать плохой" - таков:
Писать так, чтобы при прочтении любопытство вызывали только действительно нетривиальные участки.

- Не давать концептам "остроумные" имена, за исключением случаев, когда другого достаточно выразительного имени просто не существует (т.е. когда все неостроумные имена не раскрывают чего-то очень важного в этом концепте)
- Соблюдать одинаковый стиль во всем до мелочей (именование, порядок вызовов какого-нибудь API, форматирование однострочных if'ов итп)
- Разумеется, не делать орфографических ошибок - взгляд об них очень сильно спотыкается
- Не бояться небольшой избыточности в именах
- Не бояться небольшого дублирования кода
- Не бояться неэффективности алгоритма (не обрабатывать особым образом какие-то случаи, которые можно обработать чуть более эффективно - обработайте так же, как все остальное - код будет понятнее и, скорее всего, корректнее).
- Минимизировать объем контекста, необходимого для понимания фрагмента кода (например, для понимания фрагмента, использующего некоторый тип, надо помнить, что это за тип; аналогично вызов метода и т.п.). Поэтому и хорошо иногда не выделять кусок кода в метод, т.к. в своем естестве и в контексте окружающего кода он воспринимается быстрее, чем вызов этого метода.

Я даже, пожалуй, отказываюсь от своего мнения "не используйте паттерны или имена предков в названиях классов" (типа CachingFooFactory). Пусть там, где этот класс используется, будет сразу видно, что это именно caching, именно foo, и именно factory.

Чем больше в коде симметрии, чем лучше ощущается похожесть похожего, тем лучше. Пусть при прочтении возникает ощущение "Так, тут какая-то тривиальщина написана, идем дальше". Не надо от этого избавляться и сжимать код по Хаффману. Мне кажется, мозги хорошо заточены на восприятие множества похожих вещей с небольшими отличиями, и на восприятие отличий в контексте множества похожих вещей, но куда хуже заточены на on-the-fly инстанцирование абстрактных концептов.

Избавляться от симметрии надо тогда и только когда, когда это явно увеличивает поддерживаемость (например, дублирован сложный, большой, хрупкий или изменчивый код).



Вышесказанное, конечно же, не означает "пишите намеренно громоздко и используйте copy-paste". Просто надо понимать, что читаемость кода определяется не только его малым объемом, но и тем, насколько эффективно используются способности мозга к восприятию сходства и различия, и насколько эффективно используется, так сказать, его краткосрочная память.

Оставить комментарий

Архив записей в блогах:
18+ НАСТОЯЩИЙ МАТЕРИАЛ ПРОИЗВЕДЕН (РАСПРОСТРАНЕН) ИНОСТРАННЫМ АГЕНТОМ диаконом АНДРЕЕМ ВЯЧЕСЛАВОВИЧЕМ КУРАЕВЫМ Это в украинских блогах: Слева - кадр из ХУДОЖЕСТВЕННОГО фильма ...
Высказанное нежелание некоторых деток чиновников возвращаться в Россию нашими патриотами обсуждается с логической ошибкой. «Золотая молодежь» в сложившейся российской политической системе – это следующее поколение власти вслед за родителями. Чужие там не ходят, ниши заняты. Поэтому ...
Все больше становится людей, которые не верят в беременность Меган Маркл и называют это игрой в имитацию. В мае прошлого года Меган стала женой британского принца Гарри, герцогиней Сассекской, и с тех пор число её хейтеров, следящих за каждым её шагом, оплошностями и несоответствиями ...
Любишь рублики: хочу всё знать, это интересно. Спасибо. На меня произвело впечатление, что люди в древней Греции жили примерно 29 лет Да подборка вакханалий изумительна, не писала, так как до сих пор её разбираю, и читаю про каждую картину. Умница, ...
На самом деле, неизвестно: дело было миллионы лет назад. У людей она тоже есть, но реализована иначе: мы можем смотреть в одну точку и вертеть головой при этом, потому что глаза двигаются. У птиц глаза почти не двигаются (у сов - вообще), поэтому стабилизация встроена в ...