Ответ
Хороший код — это не только работающий код. Он должен обладать рядом качеств, которые делают его надежным и удобным в долгосрочной перспективе. Основные критерии:
Читаемость (Readability): Код должен быть понятен другому разработчику (и вам самим в будущем) без длительного изучения и комментариев. Имена переменных, функций и классов должны четко отражать их назначение. Соблюдается принцип "наименьшего удивления".
Простота (Simplicity): Следует избегать излишней сложности. Лучше написать простой и ясный код, чем короткий, но "умный" и запутанный. Важно следовать принципам KISS (Keep It Simple, Stupid) и YAGNI (You Ain't Gonna Need It).
Сопровождаемость (Maintainability): Код легко изменять и расширять. Это достигается за счет хорошей структуры, слабой связанности (Low Coupling) и сильной сцепленности (High Cohesion) модулей.
Тестируемость (Testability): Код должен быть спроектирован так, чтобы его можно было легко покрыть автоматическими тестами. Для этого стоит избегать глобальных состояний, сильных зависимостей и использовать техники вроде Dependency Injection.
Эффективность (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
}