vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2024-03-15 06:11 pm

Принципы софтостроения

Для начала я просто список составлю. Американцы любят ёмкие сокращения, поэтому у каждого принципа или правила есть короткое название из трёх-четырёх-пяти букв. Принципы можно условно разделить на две группы: позитивные и негативные.

Позитивные принципы советуют вам, как следует поступать.
  • SRP - Single Responsibility Principle
  • SLA - Single Level of Abstraction
  • OCP - Open-Closed Principle
  • LSP - Liskov Substitution Principle
  • ISP - Interface Segregation Principle
  • DIP - Dependency Inversion Principle
  • FCoI - Favor Composition over Inheritance
  • PLA - Principle of Least Astonishment

Негативные принципы предостерегают от всякой фигни.
  • DRY - Don't Repeat Yourself
  • AHA - Avoid Hasty Abstractions
  • YAGNI - You Aren't Gonna Need It
  • LoD - the Law of Demeter, or don't talk to strangers
  • KISS - "Keep It Simple, Stupid!"
juan_gandhi: (Default)

[personal profile] juan_gandhi 2024-03-16 08:34 am (UTC)(link)

В теории всё это очень хорошие принципы. Да интерпретация, бывает, сильно различается. YAGNI я слышал в Гугле каждый раз, когда что-нибудь обобщал. А...

Мои любимые - KISS, LoD, PLA.

DIP тоже хорошая вещь, да его, опять же, интерпретируют обычно криво.

[personal profile] ichthuss 2024-03-16 08:45 am (UTC)(link)
Не хватает еще одного, от Илона нашего Маска: ASS - Acronyms Seriously Suck.
prool: cat (Default)

[personal profile] prool 2024-03-16 02:54 pm (UTC)(link)
WTF!
sobriquet9: (Default)

[personal profile] sobriquet9 2024-03-16 03:59 pm (UTC)(link)

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

Например, в правиле DRY написано "don't repeat yourself", а в следующем правиле AHA написано "prefer duplication over the wrong abstraction". Вместе получается "за всё хорошее и против всего плохого".

archaicos: Шарж (Default)

[personal profile] archaicos 2024-03-16 05:57 pm (UTC)(link)
Вроде ж есть наглядные примеры прямоугольник-квадрат, эллипс-окружность, где смешивать общее и частное проблематично (типа наследовать квадрат и окружность от прямоугольника и эллипса), т.е. напрашивается некоторая дубликация.