Предисловие: я люблю читать различные книги, а еще записываю всякие полезные штуки в тетрадку. Но недавно мне подали идею, что можно в блоге вести конспекты, чтобы эта информация пригождалась не только мне. Так что потренируемся на чистом коде. Это отличная книга, которая помогает улучшить стиль написания кода. Она не претендует на истину, но в ней много полезного.
Первая глава начинается с прекрасной фразы: "Вы читаете эту книгу по двум причинам. Во-первых, вы программист. Во-вторых, вы хотите повысить свою квалификацию как программист".
Кстати, своему джуниору я как раз советовала "Чистый код" (джуниор общий, но я его считаю своим, потому что больше всех общаюсь с ним). Надеюсь, мой юный разработчик всё прочитает.
Заметки:
- Код никогда не исчезнет, даже если мир завоюют роботы. Отличная новость и начало.
- Хороший код важен. Одна из причин — чтобы потом не пришлось всё переделывать. Плохой код может привести к краху компании, потому что с каждой новой задачей процесс разработки будет затягиваться, а сбоев будет больше. Одно изменение затрагивает сразу несколько мест. Чинишь один баг, а в итоге появляются еще 3.
- Закон Леблана: потом равносильно никогда. Не надо оставлять костыли и плохой код, надеясь быстро выпустить, а потом поправить. Кстати, на своем примере я в этом убедилась. Бывало, что делаешь быстрый фикс и думаешь исправить сразу после релиза, а потом еще год смотришь на этот код.
- В какой-то момент можно выделить группу разработчиков, чтобы переписать проект с нуля, и начинается гонка. Старый проект развивается, а вторая группа пытается угнаться. Автор писал, что встречал проекты, где такое соревнование длится почти 10 лет.
- Причина плохого кода — наш непрофессионализм. :(
- Беспорядок в коде замедляет работу, поэтому лучше сразу делать хорошо. С этим тоже встречалась, когда надо поправить одну строчку, но чтобы её найти, надо потратить несколько часов.
Что такое чистый код?
- Элегантный и эффективный код с минимальными зависимостями. В проекте прямолинейная логика, а все ошибки обрабатываются. А еще это код, который читается как хорошая книга.
- Содержит тесты и они все работают.
- Выражает все концепции проектирования, содержит минимальное количество сущностей, классов, методов и т.п. Вот со вторым не согласна, но забыла, чем это аргументируется. Почитаем дальше. В следующих главах более подробный разбор.
- Не содержит дубликатов. Это я знала и раньше. Одна из причин — придется постоянно поддерживать в разных местах и не забывать обновлять везде. Например, если один код используется в активити, в сервисе и в каком-нибудь хелпере, то придется постоянно держать в голове, что надо обновлять во всех трех местах.
- Используйте хорошие названия, чтобы по имени метода и класса было сразу понятно, что там происходит.
- Правило бойскаута: постарайтесь оставить этот мир чуть лучшим чем он был до вашего прихода. Когда добавляете свой код, то поправьте тот, что находится рядом: переименуйте метод в более понятное название, уберите большой if-else или напишите классный тест.
В первой главе были просто всякие вступительные слова и общие советы. Далее всё будет подробно расписываться.