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

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

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

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

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

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



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

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

Архив записей в блогах:
Постоянные размышления на тему меня все-таки пересилили, и вот до чего я додумался. Предпосылки: 1. Однозначно надо разделять телефонную "звонилку" и информационную часть. Смешивать два этих понятия в виде смартфона уже не видится ...
Каждое утро я открываю для себя видео с картинами художников... Это так вошло в мой распорядок дня - как входит простое умывание...:) И ощущение после просмотра такое — как будто родниковой воды напиться... Я себе позволяю это УДОВОЛЬСТВИЕ... ...
П ервый раз я столкнулся с именем Кона, листая в магазине « Психологию ранней юности ». Эта книга 1989 года до сих пор стоит у меня на полке, среди тех, к которым хочется возвращаться. Неказистое издание советского «Просвещения» за 95 копеек… Как ...
Замошье, Смоленская обл. 1991 г. Фото: Валерий Решетняк Письмо конца сентября. Идёт уборка урожая на приусадебных участках. Лилия посылает рапорт о ходе работ родственникам в ...
Сценарий вам покажется фантастическим, но если принять за базу версию о том, что следующим президентом России не будут не Путин ни Медведев (август и цезарь уходят вместе, передавая власть младшим - как в свое время ушли вместе Диоклетиан и ...