Следуйте правилам, или ваш код умрет в муках и муках.

Вспомните те случаи, когда вы пересматривали свой код, написанный несколько недель и месяцев назад, и говорили себе «Что за хрень!». Вы понятия не имеете, что делает ваш код или что означает эта переменная с именем «X».

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

Поскольку ваш код будет поддерживаться другими товарищами по команде, права собственности на код меняются, написание кода, соответствующего стандарту сообщества, так же важно, как и написание работающего кода. Программист может написать код, понятный машине, но хороший программист пишет код, понятный людям.

Поскольку мы программисты-новички, стремящиеся стать звездными разработчиками, мы устанавливаем некоторые не подлежащие обсуждению основные правила, прежде чем приступить к кодированию. Наказание за нарушение — смерть вашего кода:

rm -rf my_loved_code

Ключевые правила

Ваш код должен быть максимально чистым. Нейминг должен показывать цель его существования. Избегайте сжатия и потери контекста.

  • Отступы и интервалы должны быть одинаковыми для всех классов, методов и спецификаций. Используйте только пробелы для отступов.
    Пример: Ruby — 2 пробела, Java — 4 пробела.
  • Иметь новую строку в конце каждого файла.
  • Следуйте стандартам сообщества языка/фреймворка при именовании.
    Пример: в Java используйте случаи верблюда, в Ruby — случаи змеи.
  • Следуйте стандартной структуре файла и проекта для конкретного языка.
    Пример: для Java и ruby ​​соответственно.
.
├── README.md
├── build.gradle
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src
    ├── main
    │   └── java
    │       └── com
    │           └── gojek
    │               └── bootcamp
    └── test
        └── java
            └── com
                └── gojek
                    └── bootcamp
.
├── Gemfile
├── Gemfile.lock
├── README.md
├── lib
└── spec
    └── spec_helper.rb
  • Использовать пространства имен. C++ предоставляет пространства имен. В других языках вы можете создать класс, который состоит только из состояний (переменных) для использования в качестве пространства имен.
  • Нет комментариев. Когда ваш код выразителен сам по себе, кому нужны комментарии. Мы несем ответственность за то, чтобы код обеспечивал понимание.
  • Никакой неиспользуемый код не должен быть зарегистрирован. Вы пишете код только для удовлетворения требований, не более того. Преждевременная оптимизация — корень всех зол.
  • Среда выполнения должна соответствовать среде IDE и CLI (интерфейсу командной строки). Потому что на производственном уровне вам нужно настраивать и запускать код в командной строке.
  • ТДД. Ни один код никогда не будет написан без написанного теста и наблюдения за его провалом. Чтобы узнать, что такое TDD, здесь.
  • Шаблоны Git и фиксации.
    1. После создания стандартной структуры проекта выполните git init и зафиксируйте с помощью . имя автора в сообщении.
    2. Напишите спецификацию, наблюдайте, как она терпит неудачу (КРАСНЫЙ), напишите код, который проходит тест (ЗЕЛЕНЫЙ), и зафиксируйте с сообщением о внедренной спецификации.
    3. Рефакторинг и зафиксируйте.
  • Подробный файл README для каждого минимального проекта, содержащий
    1. Описание проекта
    2. Настройка среды разработки.
    3. Инструкции по сборке.
    4. Инструкции по запуску.

Любое нарушение вышеуказанных правил приведет к безжалостному rm -rf.

Делайте только то, чем вы гордитесь.

это золотое правило, которому мы следуем на буткемпе Go-Jek 003. Мы можем относиться к временам, когда мы поднимаем проект, чтобы внести свой вклад, но понимание скучных страниц длинной документации вызывает у нас раздражение.

Кодируйте так, чтобы нарисовать контекст, вам даже не нужна подробная документация, достаточно самого кода.

Хорошего дня!