История изменений
Исправление Nervous, (текущая версия) :
получаем жёсткую зависимость по именам полей. Если разработчик базового класса переименует поле, то у всех «наследников по протоколу» поломаются все унаследованные методы
Они у любых наследников поломаются, по протоколу или по иерархии классов. Лекарство в обоих случаях одинаковое — не завязываться на имена полей (и вообще конкретную структуру данных), а завязываться на её интерфейс %)
Да, интерфейсы внутри интерфейсов, all the way down.
Исходная версия Nervous, :
получаем жёсткую зависимость по именам полей. Если разработчик базового класса переименует поле, то у всех «наследников по протоколу» поломаются все унаследованные методы
Они у любых наследников поломаются, по протоколу или по иерархии классов. Лекарство в обоих случаях одинаковое — не завязываться на имена полей (и вообще конкретную структуру данных), а завязываться на её интерфейс %)