Задать вопрос
@ChernovGV

KISS vs SOLID, что и когда готовить?

Всем привет!
По мотивам видео о реализации FizzBazz на JS задался вопросом - что действительно легче поддерживать, десяток строк KISS ("структурный подход")
spoiler
5f81415e1cce5377533269.png

или 60 строк ООП кода по SOLID?
spoiler
5f81427d95025892529444.png

Для того чтобы осмыслить ООП пример и понять идею автора, нужно напрячься, особенно когда ты не видишь диаграммы и объяснений автора. Иначе после первого изменения код перестанет быть SOLID'ным.
В итоге читать больше, понимать сложнее, а джунов к такому коду вообще не пустить. И как это можно назвать более поддерживаемым кодом?

Понятно, что это синтетический пример и в реальном мире задачи сложнее. Но гэп между SOLID и KISS будет приблизительно таким же. Или я не прав и скажем 1000 строк по KISS будет сложнее обслуживать чем 6000 строк по SOLID?

Давайте поговори на тему как провести черту между SOLID и KISS?

P.S.
Не плохой, но не достаточный, комментарий на эту тему https://softwareengineering.stackexchange.com/a/367100
UPDATE:
Код могу предоставить только в таком видео т.к. автор видео не предоставил исходники.
  • Вопрос задан
  • 662 просмотра
Подписаться 3 Простой 3 комментария
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Во-первых, сейчас модератор грохнет ваш вопрос за нарушение пункта 3.8 правил. Во-вторых, парадигмы, подходы, шаблоны и принципы - это инструменты управления сложностью кодовой базы, а инструмент надо выбирать под задачу - не стоит наворачивать многоуровневую абстракцию на FizzBuzz. В-третьих, KISS не исключает SOLID.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Adamos
@Adamos
Сначала KISS: решаем, требуется ли делать код сложным или можно обойтись простым решением, которое будет легко читать и поддерживать.
Если понятно, что читать и поддерживать простыню процедурщины будет затруднительно, начинаем дробить логику, и в этом нам помогает SOLID - именно он определяет границы зон ответственности кода и позволяет минимизировать связи между проектируемыми классами.
Наконец, определившись с архитектурой, мы внутри каждого класса вновь возвращаемся к KISS, не переусложняя его внутреннюю жизнь сверх тех задач, что он должен решать. Благодаря применению SOLID уровнем выше мы сможем безболезненно переделать все потроха этого класса, если задачи изменятся и KISS-решение перестанет работать, без рефакторинга остального кода.
Никаких противоречий.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы