DRY, KISS, YAGNI
Вопрос
Что значат DRY, KISS, YAGNI и где они противоречат друг другу?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
DRY - не повторяй знание, а не просто одинаковые строки
KISS - простое решение предпочтительнее хитрого
YAGNI - не пиши то, что понадобится «потом»
DRY напрямую конфликтует с KISS при ранней абстракции
правило трёх: обобщать на третьем повторении
ложный DRY: объединили похожее, а меняется оно по-разному
Что могут спросить следом
- Приведи пример, где дублирование лучше абстракции
- Как понять, что абстракция преждевременна
- Что делать, если ложный DRY уже в проде
Разбор
DRY - не дублируй знание, а не текст. Два куска похожего кода, которые меняются по разным причинам, дублированием не являются.
KISS - из двух работающих решений берём то, что проще читается. YAGNI - не закладывай расширяемость под задачу, которой нет в требованиях.
Противоречие реально: ранняя абстракция ради DRY даёт параметризованную функцию на шесть флагов, которую никто не понимает - то есть нарушает KISS и YAGNI разом. Отсюда правило трёх: первое повторение терпим, второе замечаем, обобщаем на третьем, когда видно, что именно общего.
Самая дорогая ошибка - ложный DRY: объединили две похожие формы, через месяц требования разошлись, и в общем коде поселились флаги.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.