Re[6]: бессмысленные интерфейсы
От: AlexGin Беларусь  
Дата: 19.02.22 03:01
Оценка:
Здравствуйте, ·, Вы писали:

AG>>Но у меня — универсальный узел и интерфейс к нему.

·>Нет, у тебя узел и иузел.

Напомню, что в терминологии C++ (в отличие от C# и Java) понятие интерфейс отсутствует.
Вместо него обычно применяется: абстрактный_класс:
https://www.tutorialspoint.com/cplusplus/cpp_interfaces.htm

AG>>Именно наличие программного интерфейса — позволяет уменьшить связанность (coupling) в проекте.

·>А конкретно в данном случае что именно уменьшается?

Показана идея применения абстрактного_класса C++ в качестве интерфейса.
Здесь (в приведенном примере) всё просто, поэтому избыточной связанности нет.

AG>>За счёт этого, получим упрощение архитектуры и уменьшение количества ошибок.

·>Введение новой сущности интерфейса не упрощает, а усложняет.

Конкретно здесь — упрощает понимание (даже если незначительно и увеличивает объём кода).

AG>>Конечно же, можно было обойтись и без интерфейса, однако так красивее и понятнее.

·>Эмоции. "Я так всегда делал и мне нравится"

Если быть точным, то делал я так не всегда.
Первые лет пять/шесть разработки на C++ я практически не применял абстрактные классы.
Но примерно с 2015-го понял, что такой подход упрощает понимание проекта.
Даже мне самому легче понять то, что я разработал несколько лет назад.
В литературе это именуют: best practices.

P.S. Мы не ждём, когда спроектируются новые узлы поезда/вагоны, а подготавливаем проект "рельсового пути" для существующих и новых поездов.
Вы же предлагаете проектировать новые рельсы, как только появятся новые вагоны.
YAGNI — если бы я предлагал проектировать поезд на магнитной подушке, для поездки по линии длиной 5 км, где вполне хватит обычного трамвая.
Отредактировано 19.02.2022 3:09 AlexGin . Предыдущая версия . Еще …
Отредактировано 19.02.2022 3:03 AlexGin . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.