Код предназначен для чтения людьми и для будущих изменений. Вот несколько советов, которые помогут свести к минимуму несчастья упомянутых людей будущего.

Пишите тесты

Отсутствие тестов — моя любимая мозоль кода № 1 и комментарий № 1 в обзоре кода. Непроверенный код — это хрупкий код, потому что нет никаких гарантий относительно того, что этот код должен делать, поэтому будущие изменения могут привести к поломке.

Я написал и развернул свою долю непроверенного кода. Конечно, так быстрее писать, но в долгосрочной перспективе это усложняет рефакторинг и безопасное внесение изменений. Будущие сопровождающие кода и участники будут благодарны вам за тесты.

Нет глобальных переменных

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

Нет синглтонов

Синглтоны — это глобальные переменные. Просто сказать нет.

Создание динамического класса/метода

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

Чрезмерное использование наследства

Не требуйте, чтобы ваши коллеги-программисты проходили иерархию наследования более чем через пару классов, чтобы понять, что делает класс. Композиция часто приводит к гораздо более понятной структуре. Человеческий мозг не любит запоминать большие графы иерархии наследования.

И не создавайте целый набор унаследованных классов только для того, чтобы максимизировать СУХОЙ код. Вы слишком далеко заходите во всем объектно-ориентированном программировании.

Код предназначен для чтения людьми и для будущих изменений.