Принципы

Если вы работаете с объектно-ориентированным программированием, вам обязательно стоит услышать о принципах SOLID.

Если вы этого не сделали, не волнуйтесь… это пять принципов SOLID, которым следует следовать при разработке программного обеспечения.

· S →Единая ответственность

· O открыть-закрыть

· L Замена Лискова

· I → Разделение интерфейса

· D Инверсия зависимостей

Теперь давайте начнем учиться с самого начала.

(1) S — единая ответственность

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

Таким образом, в этом принципе цель состоит в том, чтобы разделить поведение. Затем, если одна ответственность произошла ошибки. Это не влияет на другие обязанности.

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

(2)O открыть-закрыть

Если вы хотите полностью изменить весь класс, это повлияет на всю систему, использующую этот класс, и нарушит указанный выше принцип.

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

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

(3)L Замена Лискова

Если дочерний класс не может выполнять действия родительского класса, это также вызовет ошибки. Потому что дочерний класс должен уметь делать то же самое, что и родительский класс. Этот процесс вы уже должны знать. То есть «Наследие».

Таким образом, в этом принципе целью является то, что дочерний класс должен иметь возможность давать тот же результат, что и родительский класс, или результаты того же типа.

В качестве примера подумайте о рыбном магазине, который продает рыбу покупателям. Здесь родительским классом является рыба. Если дочерний класс даст нам «Золотую рыбку», ничего страшного, потому что Золотая рыбка — это особый вид рыб. Но вместо рыбы для гольфа, если нам дают «кролика», это неприемлемо, потому что кролик — это не конкретный вид рыбы.

(4)I →Разделение интерфейса

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

Таким образом, в этом принципе цель состоит в том, чтобы разделить действия на более мелкие наборы, чтобы класс выполнял только требуемый набор действий.

В качестве примера подумайте о классе детей. Там есть разные дети, такие как сингальцы, тамилы. Итак, если мы будем давать инструкции на сингальском языке, некоторые ученики не смогут понять и не смогут следовать нашим инструкциям. Поэтому мы будем давать инструкции на сингальском и тамильском языках. Тогда они смогут правильно следовать нашим инструкциям.

(5)D инверсия зависимостей

Это означает, что мы не должны реализовывать класс с их инструментами, он используется для выполнения действия. Скорее, это должно быть реализовано с интерфейсом, который позволит инструменту подключить класс.

Таким образом, в этом принципе целью является уменьшение зависимости класса высокого уровня от класса низкого уровня путем введения интерфейса.

В качестве примера подумайте о человеке, который готовит омлеты. Если он только умеет делать омлеты на сковороде. Он потерпел неудачу. Согласно принципу, человек должен приготовить омлет из любой кастрюли, которая есть на его кухне.

Подход к решениям

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

* Думайте над проблемой

* Разделяй и властвуй.

* Будь проще и глупее (KISS)

* Учитесь специально на ошибках

Теперь рассмотрим эти шаги.

· Прежде всего, нужно четко понимать проблему. Если у вас есть какой-либо неясный момент, вы должны очистить его. Не бойтесь задавать вопросы. Это и есть «думай над проблемой».

· После понимания проблемы, здесь мы должны разделить проблему на более мелкие части, чтобы определить их легко и понятно. Это называется «Разделяй и властвуй».

· После этого мы всегда стараемся не зацикливаться на проблеме. Иногда это может быть сложно из-за нашего чрезмерного обдумывания. То есть «Будь проще и глупее».

· Не беспокойтесь, если вы обнаружили ошибки. Всегда старайтесь предвидеть изменения. Учитесь на этом. То есть «Учиться специально на ошибках».

Внедрение решений

При внедрении решений следует помнить об определенных рекомендациях.

· ЯГНИ

* это означает «Вам это не понадобится». Это означает, что мы не должны реализовывать функциональность только потому, что мы думаем, что иногда вам это может понадобиться. Но на самом деле вам это не нужно. Поэтому внедряйте его, когда он вам действительно нужен. Тогда вы также можете сэкономить свое время.

· СУХОЙ

  • Это означает «Не повторяйся». Это означает, что иногда у вас может быть другой код, выполняющий одно и то же действие. А иногда у вас есть два кода в разных местах, но они делают одно и то же по-разному. Этого следует избегать. Мы всегда будем стараться повторно использовать код.