Принцип подстановки Барбары Лисков

Лисков-что??

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

Все статьи серии

SOLID принципы на примере Laravel

Лисков-замещение-это-не-теория
– Быстрее, малыш! Какое самое большое простое число может быть выражено как сумма двух простых чисел?”

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

Это правило просто говорит, что код, работающий с родительскими классами (или интерфейсами), не должен ломаться, когда эти классы заменяются дочерними классами (или классами, реализующими интерфейс). Пример, который мы закончили непосредственно в предыдущей статье Принцип открытости/закрытости: SOLID принципы на примере Laravel, является отличной иллюстрацией: если я заменю универсальный тип PDFGenerator в аргументе метода конкретным экземпляром MilkyWayPDFGenerator, ожидаете ли вы, что код сломается или продолжит работать?

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

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

О подстановке Лискова можно сказать гораздо больше (посмотрите его теорию и почитайте о Ковариантных типах, если вы действительно чувствуете себя храбрым), но, на мой взгляд, этого достаточно для среднего разработчика, впервые столкнувшегося с этими таинственными паттернами и принципами.

Автор: Анкуш Тхакур 9 ноября 2020 года

Рейтинг
( 7 оценок, среднее 5 из 5 )
Maxyc Webber/ автор статьи
Мне 35 лет. Опыт профессиональной разработки 15 лет. Занимаюсь разработкой и поддержкой корпоративных систем автоматизации бизнеса, а также высоконагруженными проектами. Мне нравится решать нестандартные проблемы бизнеса. Имею опыт формирования команд под проект, налаживания процесса разработки, коммуникации программистов и заказчиков. Есть опыт работы с зарубежными заказчиками (ОАЭ, Польша, Германия, Швейцария).
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.