Ответ
Хорошо написанный код — это код, который легко читать, поддерживать и расширять. Его основные характеристики:
1. Читаемость
- Понятные имена переменных, методов и классов (
calculateTotal()вместоcalc()). - Соблюдение соглашений о стиле кода (например, Java Code Conventions).
- Отсутствие "магических чисел", использование констант.
2. Простота и минимальная сложность
- Следование принципу KISS (Keep It Simple, Stupid).
- Избегание избыточной вложенности и сложных условий.
- Выполнение одной четкой задачи на уровне метода/функции.
3. Тестируемость
- Код модулен и имеет слабые связи.
- Зависимости можно легко подменить (например, через внедрение зависимостей).
- Методы возвращают предсказуемый результат.
4. Следование принципам проектирования
- Применение SOLID, DRY (Don't Repeat Yourself), YAGNI (You Ain't Gonna Need It).
5. Документированность
- Наличие Javadoc для публичных API и сложной логики.
- Комментарии объясняют "почему", а не "что" делает код.
Пример на Java:
// ❌ Плохо: неочевидные имена, сложная строка, побочный эффект
void p(int a, int b) {
if (a > b) System.out.println(a); else System.out.println(b);
}
// ✅ Хорошо: ясные имена, простая логика, одна ответственность
void printMax(int firstNumber, int secondNumber) {
int max = Math.max(firstNumber, secondNumber);
System.out.println(max);
}
Хороший код снижает стоимость поддержки и уменьшает количество ошибок.
Ответ 18+ 🔞
А, ну вот, опять про этот ваш "хороший код" заговорили. Слушай, как будто мы тут в монастыре, а не в аду разработки сидим. Ну ладно, раз уж начали, давай по-честному, без этих ваших заумных книжек.
Хороший код — это не когда ты такой умный, что нахуярил паттернов, будто ёлка игрушками обвешана. Нет, блядь. Это когда через полгода, в три часа ночи, с бодуна и с красными глазами, ты на это смотришь и не хочешь повеситься, а понимаешь, что там происходит. Вот и весь критерий, ёпта.
1. Читаемость, или "Не будь мудаком, называй вещи своими именами".
Вот смотри: calc() — это что? Калькулятор? Кальций считает? Кал? А calculateTotal() — это уже "посчитать итог". Ну вот же, блядь, элементарно! И не надо этих магических цифр, от которых потом волосы дыбом. Написал MAX_RETRY_COUNT = 5 и спи спокойно, а не гадай, почему тут вдруг пятёрка.
2. Простота, или Принцип KISS (а я его расшифровываю как "Кто Идиот Создал Такую Сложную Систему?"). Если твой метод похож на лабиринт Минотавра, только без нити Ариадны — ты уже проебался. Одна задача — один метод. Не надо впихивать туда и расчёт, и сохранение, и уведомление пользователя, и отправку письма твоей бабушке. Разделяй и властвуй, а то власть твоим мозгом завладеет.
3. Тестируемость, или "А давай проверим, не обосрётся ли оно". Если твой код — это монолитная глыба, где всё намертво прибито гвоздями к стене, то как его тестировать? Никак. Только молиться. А вот если он модульный, и зависимости можно подсунуть, как в шпионском триллере — вот тогда да. Тогда можно написать тест, который не будет каждый раз требовать поднятия всей вселенной.
4. Принципы, или "SOLID, DRY, YAGNI — не мантра, а инструкция по выживанию". SOLID — это не про то, чтобы быть твёрдым и непреклонным, как дубовый пень. Это про то, чтобы система не развалилась от одного чиха. DRY — это "Не повторяйся", а не "Скопипасть всё, что движется". А YAGNI — это святое, блядь. "Тебе это не понадобится". Не выдумывай фичи на будущее, которого, скорее всего, не будет. Сделай то, что нужно сейчас, и сделай это нормально.
5. Документация, или "Объясни, зачем ты это сделал, долбоёб".
Комментарий // увеличиваем счетчик на 1 — это пиздец. Это видно и так. А вот комментарий // увеличиваем на 1, потому что API банка считает с нуля, а наше представление — с единицы — вот это уже дело. Объясняй "почему", а не "что". "Что" и так в коде видно, если ты, конечно, не писал его ногами.
Ну и смотри, примерчик, чтобы совсем всё стало ясно:
// ❌ Пиздец как плохо: что такое p? a? b? Всё в одну строку, глаза сломаешь.
void p(int a, int b) {
if (a > b) System.out.println(a); else System.out.println(b);
}
// ✅ Ну уже лучше: сразу видно, что делает, читается как предложение.
void printMax(int firstNumber, int secondNumber) {
int max = Math.max(firstNumber, secondNumber);
System.out.println(max);
}
Вот и весь секрет, ядрёна вошь. Хороший код — это не про гениальность, а про человечность. Про то, чтобы коллеге (или тебе же самому через полгода) не пришлось мысленно посылать тебя нахуй, разбираясь в твоих творениях. Он снижает стоимость поддержки до уровня "терпимо", а не "давайте всё с нуля перепишем". Вот так-то.