Назовите и опишите ключевые критерии хорошего кода.

Ответ

Хороший код — это не только работающий код. Он должен обладать рядом качеств, которые делают его надежным и удобным в долгосрочной перспективе. Основные критерии:


  1. Читаемость (Readability): Код должен быть понятен другому разработчику (и вам самим в будущем) без длительного изучения и комментариев. Имена переменных, функций и классов должны четко отражать их назначение. Соблюдается принцип "наименьшего удивления".



  2. Простота (Simplicity): Следует избегать излишней сложности. Лучше написать простой и ясный код, чем короткий, но "умный" и запутанный. Важно следовать принципам KISS (Keep It Simple, Stupid) и YAGNI (You Ain't Gonna Need It).



  3. Сопровождаемость (Maintainability): Код легко изменять и расширять. Это достигается за счет хорошей структуры, слабой связанности (Low Coupling) и сильной сцепленности (High Cohesion) модулей.



  4. Тестируемость (Testability): Код должен быть спроектирован так, чтобы его можно было легко покрыть автоматическими тестами. Для этого стоит избегать глобальных состояний, сильных зависимостей и использовать техники вроде Dependency Injection.



  5. Эффективность (Efficiency): Код должен выполнять свою задачу, оптимально используя ресурсы (CPU, память). Однако преждевременная оптимизация — зло. Сначала нужно писать понятный и корректный код, а затем оптимизировать только узкие места, выявленные профилированием.


Пример хорошего кода:

// Названия ясны, логика прозрачна
func CalculateDiscount(price float64, isPremiumClient bool) float64 {
    const premiumDiscount = 0.2
    const regularDiscount = 0.1

    if isPremiumClient {
        return price * premiumDiscount
    }
    return price * regularDiscount
}

Пример плохого кода:

// Непонятные сокращения, "магические" числа
func CD(p float64, iP bool) float64 {
    d := 0.1
    if iP { d = 0.2 }
    return p * d
}