О SOLID
Привет!
Если вы думали, что пора бы основательно разобраться с SOLID, - вы попали куда надо! Если же впервые слышите о нём - вам тоже сюда.
Цель нашего проекта - дать максимально полную картину и развеять неопределённость при изучении SOLID. А также после прохождения материала вы сможете ответить на вопрос: "Когда использовать SOLID" и нужно ли его вам использовать вообще.
Во время прохождения курса мы будем не только обсуждать теорию, рассматривать схемки и примеры, но и проверять знания на практике. Для этого у нас есть блоки с практическими заданиями, где вам нужно будет отредактировать или написать свой код в соответствии с принципами SOLID.
Ну а это вводный урок по SOLID. Из него вы узнаете, что такое SOLID и для чего он нужен. А ещё кто его придумал и почему о нём все знают.
Итак SOLID

SOLID - это аббревиатура, каждая буква которой отражает принцип. Взять, например, первую...
SRP (Single Responsibility Principle) - принцип, который призывает разделять ответственности ваших классов, модулей и в целом кода. Это часто помогает облегчать поиск багов, рефакторинг и много чего ещё.
Подробнее мы рассмотрим его в отдельной лекции. И помимо SRP есть ещё 4 других, которые также имеют свои преимущества в определённых ситуациях.
И вернее всего, к SOLID нужно относиться как к инструменту. Он не всегда применим, но знать о его существовании и вовремя его достать - большое удовольствие!
Могу ли я использовать SOLID в своём стеке?
SOLID — не привязан к конкретным языкам или стекам технологий. Однако изначально создан для применения в объектно-ориентированном программировании, но основные идеи можно использовать в любом языке, даже функциональном или скриптовом.
Например, в JavaScript и PHP можно использовать принцип разделения ответственностей (SRP) и реализовать зависимость от абстракций. А на функциональных языках вроде Scala использовать принцип открытости/закрытости (OCP).
Так что, даже если вы не можете по каким-либо особенностям вашего стека использовать некоторые принципы - ничего страшного. Главное - понять саму суть и то, какими качествами должен обладать ваш код.
Кажется, здесь легко запутаться...
Да пожалуй, здесь легко потеряться, особенно из-за дублирования информации в открытых источниках, которая редко бывает полной и доступной.
Кстати, за такое продолжительное время, принципы эволюционировали и временами менялись, как и их формулировки. Так что нередко можно встретить один принцип, но увидеть разные его трактовки даже в книгах и статьях одного автора. (даже у Дядюшки Боба).
Мы же постараемся разобраться в самой сути, которая привела к формированию этих принципов.
Ну и, конечно, многие из принципов могут показаться неопределёнными и сложными... Например, что за высокоуровневые модули и почему они должны зависеть от абстракций в Dependency Inversion или кто есть актор в SRP? Не пугайтесь, это и многое другое мы обсудим, а главное, поймём, когда эти знания можно применить и какие у этого будут преимущества.
И помни, что SOLID - это не панацея, а скорее сладкая ситуативная конфетка от головной боли.
Дальнейший разбор принципов уже написан и будет опубликован в ближайшее время