- Регистрация
- 21.07.20
- Сообщения
- 40.408
- Реакции
- 1
- Репутация
- 0
Расскажем, кто их придумал и в чем они заключаются. Также поговорим о критике этого подхода — о том, почему некоторые разработчики отказываются следовать SOLID-методологиям.
[SUP]Фото —
Акроним
SOLID — обозначает пять первых принципов объектно-ориентированного программирования:
Если следовать этим принципам, структурировать классы и функции так, чтобы они выполнялись, можно с высокой вероятностью получить надежный, понятный и легко поддерживаемый код. Кстати,
Кто вывел SOLID
Как вы уже успели догадаться, за основную часть принципов отвечал именно
Фото —
Задача SOLID — способствовать разработке приложений, которые легко поддерживать и расширять в течение долгого времени. Но этот свод рекомендаций часто подвергают критике.
За что критикуют
Иногда эти принципы
Он считает, что не нужно заранее пытаться учесть все возможные варианты развития событий и просто программировать, постепенно исправляя недочеты, а не опираться на мнимую «систему безопасности». Спольски не отменяет значимости принципов, но называет их чрезмерными.
Есть
Фото —
В тематическом треде на Hacker News
Стоит признать, что есть и множество высказываний в защиту SOLID. Так, один из резидентов HN говорит, что следование эти принципам поможет быстро заменить условную библиотеку, если на уровне абстракции что-то пойдет не совсем так. Достаточно будет удостовериться в выполнении тестов для новой реализации и на этом все, максимум — дополнительно проверить зависимости для старой версии класса и по мере необходимости использовать доработанный, чтобы тесты прошли успешно. Тогда в коде не будет и «излишней сложности», а тем, кто будет заниматься им впоследствии, не будет грозить так называемый
Важно помнить, что принципы SOLID являются лишь рекомендациями, а не строгими правилами. И всегда будут кейсы, когда их лучше придерживаться, а когда — отступить.
[SUP]О чем мы пишем в корпоративном блоге 1cloud.ru:
[/SUP]
You must be registered for see links
[SUP]Фото —
You must be registered for see links
— Unsplash[/SUP]Акроним
SOLID — обозначает пять первых принципов объектно-ориентированного программирования:
- Единственной ответственности (
You must be registered for see links). Один модуль/класс — одна задача. Кажется, что-то такое мы уже обсуждали, когда разбирали «You must be registered for see links» вместе с принципами KISS.
- Открытости/закрытости (
You must be registered for see links). Компоненты — расширяемые и немодифицируемые. Его основоположником считают Бертрана Мейера (You must be registered for see links) — автораYou must be registered for see links.
- Подстановки (
You must be registered for see links). Разработчик должен иметь возможность заменить тип на подтип, не сломав систему. Иерархию типов нужно тщательно моделировать, чтобы избежать путаницы. Принцип предложила Барбара Лисков (You must be registered for see links) — один из авторовYou must be registered for see links.
- Разделения интерфейса (
You must be registered for see links). Специализация UI, чтобы развязать их и программные компоненты, плюс — упростить рефакторинг. Этот принцип определил Роберт Мартин (You must be registered for see links) — международно признанный эксперт в области разработки.
- Инверсии зависимостей (
You must be registered for see links). Управляющие компоненты должны быть абстрагированы от модулей нижних уровней, а детали — не зависеть от абстракций и модулей верхних уровней.You must be registered for see linksпредложил и этот пункт (You must be registered for see links).
Если следовать этим принципам, структурировать классы и функции так, чтобы они выполнялись, можно с высокой вероятностью получить надежный, понятный и легко поддерживаемый код. Кстати,
You must be registered for see links
есть неплохие примеры, иллюстрирующие работу принципов на практике.Кто вывел SOLID
Как вы уже успели догадаться, за основную часть принципов отвечал именно
You must be registered for see links
. Комплексно он описал их в работе «
You must be registered for see links
» 2000 года, а сам акроним SOLID уже позже предложил инженер Майкл Фэзерс (Michael Feathers). Если интересно, у Майкла есть
You must be registered for see links
, где он дает рекомендации о том, как «оживить» legacy-систему и не сойти с ума по ходу дела.Фото —
You must be registered for see links
— UnsplashЗадача SOLID — способствовать разработке приложений, которые легко поддерживать и расширять в течение долгого времени. Но этот свод рекомендаций часто подвергают критике.
За что критикуют
Иногда эти принципы
You must be registered for see links
«слишком расплывчатыми», что усложняет их практическое использование. Программист и писатель Джоэл Спольски (Joel Spolsky) в
You must be registered for see links
The StackOverflow Podcast также отметил, что SOLID-методология слишком утопична и вынуждает разработчиков тратить время на избыточный код фактически «ради галочки».Он считает, что не нужно заранее пытаться учесть все возможные варианты развития событий и просто программировать, постепенно исправляя недочеты, а не опираться на мнимую «систему безопасности». Спольски не отменяет значимости принципов, но называет их чрезмерными.
Есть
You must be registered for see links
, что SOLID-код имеет слабую связность и его легко тестировать, но очень сложно понимать (в критике используется слово «unintelligible»). Программисту приходится писать множество детализированных интерфейсов и небольших классов, которые больше отвлекают и путают, чем помогают наладить какую-то систему. С этим утверждением
You must be registered for see links
многие, кто считает, что достаточно фокусироваться на простоте кода, чтобы его могли поддерживать другие разработчики.Фото —
You must be registered for see links
— UnsplashВ тематическом треде на Hacker News
You must be registered for see links
и о том, что гораздо большее значение имеет выбор архитектуры, технологического стека и управление зависимостями проекта, а не основополагающие принципы, по которым строится его написание. Здесь вновь указывают на излишнюю сложность старта с комплексного проектирования системы, указывая уже на принцип YAGNI или «
You must be registered for see links
». В какой-то степени это — очередной ремикс классического
You must be registered for see links
.Стоит признать, что есть и множество высказываний в защиту SOLID. Так, один из резидентов HN говорит, что следование эти принципам поможет быстро заменить условную библиотеку, если на уровне абстракции что-то пойдет не совсем так. Достаточно будет удостовериться в выполнении тестов для новой реализации и на этом все, максимум — дополнительно проверить зависимости для старой версии класса и по мере необходимости использовать доработанный, чтобы тесты прошли успешно. Тогда в коде не будет и «излишней сложности», а тем, кто будет заниматься им впоследствии, не будет грозить так называемый
You must be registered for see links
.Важно помнить, что принципы SOLID являются лишь рекомендациями, а не строгими правилами. И всегда будут кейсы, когда их лучше придерживаться, а когда — отступить.
[SUP]О чем мы пишем в корпоративном блоге 1cloud.ru:
You must be registered for see links
You must be registered for see links
You must be registered for see links
[/SUP]