В чем разница между принципами YAGNI и KISS?

Очевидно, что между YAGNI и KISS есть синтаксические различия, но я не вижу никаких семантических различий между ними. Они на самом деле одно и то же?

4 ответа

Решение

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

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

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

Коротко: Yagni заявляет, что вам нужно обрезать код, который вам не нужен прямо сейчас, KISS - сделать оставшийся код простым. Вот как это можно визуализировать:

читать больше здесь

YAGNI, KISS и DRY — это сокращения кода. YAGNI — это удаление кода, который не нужен пользователю. DRY — это удаление повторяющегося кода. KISS — это удаление жесткого кода (длинных методов, которые трудно читать и т. д.)

На мой взгляд, последний принцип — близость SRP к SOLID.

KISS Keep It Simple Stupid. Этот принцип говорит о том, чтобы сделать ваш код простым. Избегайте ненужной сложности, помните о простом коде, который легче поддерживать и легче понять.

YAGNI расшифровывается как You Ain't Gonna Need It. Этот принцип гласит, что вы не должны создавать функции, которые на самом деле не нужны.

Рон Джеффрис, один из соучредителей XP, сказал:

Всегда внедряйте вещи, когда они вам действительно нужны, никогда, когда вы просто предвидите, что они вам нужны

Главное отличие, YAGNI убирает ненужный функционал и логику, а KISS делает акцент на сложности.

Другие вопросы по тегам