Comments 5
В этом контексте, абстракция, как первый принцип ООП, вступает в игру, позволяя нам объединить повторяющийся код в один общий модуль
Смысл абстракции не в том, чтобы вы могли получить переиспользуемый код за счет вынесения чего-то в общий базовый класс.
Мне кажется, что протоколами намного удобнее пользоваться так-же, как тайпклассами в хаскеле, то есть, не наследоваться от них вообще, а просто реализовать их для своих классов и структур.
extension SomeType: SomeProtocol {
// implementation of protocol requirements goes here
}
А штуки типа
extension TestProtocol {
func method() {
print("Printing it")
}
}
на мой взгляд, довольно странные.
На дворе 2024, а статья про наследование) Даже сами эплы swiftui слелали на структурах, а за 10 лет развития swift так и не добавили возможность делать абстрактные классы, думаю о чем то это говорит)
За статью спасибо, освежил память.
Потому что, как выше написали, абстракции нужны НЕ для переиспользования кода. Протокол прекрасно выполняет роль абстракции. Точка. Для этого создавать еще и абстрактные классы совсем нет необходимости.
Для переиспользования кода нужно использовать другие инструменты.
Автору:
Не пытайтесь забивать гвозди отверткой.
За системный подход к деталям Вам – огромный плюс. Статья получилась глубокая.
А вот за то, что утонули в этих деталях, забыли про взгляд с высоты птичьего полета и начали применять инструмент не по назначению, хотя рядом лежит тот инструмент, что Вам нужен – минус. Попробуйте прикинуть, какими еще инструментами надо получать переиспользование кода и сравните, что получится – вот это будет интересная и полезная для сообщества статья.
Спасибо за Ваши усилия.
Спасибо, было интересно!
Абстрактность в Swift