Как вы знаете, KISS расшифровывается как Keep It Simple. Существует множество ресурсов, объясняющих, что означает Simple. Я также объясню это со своей точки зрения, но я думаю, что главное слово в этой аббревиатуре — «Держать». И через него я раскрою эту тему.

Прежде всего, я должен сказать, что для сохранения простоты системы вы должны стараться не принимать сложные бизнес-требования. Если требования кажутся сложными, возможно, вы не сможете их просто реализовать. Таким образом, вы должны быть вовлечены в обсуждение и уход за ними.

Ну почему я сделал акцент на слове «Держать»? Допустим, мы написали компонент, который совершает исходящий вызов, если входящий прервался.

В соответствии с текущими бизнес-требованиями у нас есть простой компонент кнопки вызова, который получает номер телефона и выполняет вызов, а также может сбрасывать вызов.

Приложение развивается, и теперь нам не нужно завершать входящий вызов для исходящего вызова. Теперь мы можем создать нового клиента, позвонить ему или выбрать существующего клиента и получить его номер по умолчанию или другой для исходящих вызовов. Мы рассмотрели новые требования и подумали, что эта кнопка по-прежнему выполняет исходящий вызов и не нарушает принципов DRY и Single Responsibility. Итак, давайте сделаем это.

Вы видите? Удалось ли нам сохранить простоту? Точно нет! Теперь нам нужно позаботиться об условиях соответствия, чтобы отобразить соответствующий компонент. И если требования меняются, мы должны реализовать их, не нарушая текущую реализацию. Эта реализация делает обслуживание более дорогим, потому что мы тратим больше времени на запоминание того, что происходит в коде. Кроме того, нам нужно больше времени на реализацию новых требований, больше времени на тестирование и т. д. Конечно, такие сложности порождают больше багов. Ну, как мы можем улучшить эту ситуацию? Давайте использовать принцип единой ответственности! Если мы посмотрим на предыдущую реализацию, то увидим, что количество телефонных номеров является основным условием рендеринга.

Теперь мы ждем, пока список строк отобразит соответствующий компонент. И функция getPhoneNumberList создаст его. Обратите внимание, что мы сохранили логический порядок с помощью оператора ИЛИ. Давайте посмотрим, как теперь выглядит наш компонент.

Это выглядит проще, не так ли? Если вам понравилась эта статья, вам может понравиться и статья о DRY.