Pull to refresh

Comments 5

В этом контексте, абстракция, как первый принцип ООП, вступает в игру, позволяя нам объединить повторяющийся код в один общий модуль

Смысл абстракции не в том, чтобы вы могли получить переиспользуемый код за счет вынесения чего-то в общий базовый класс.

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

extension SomeType: SomeProtocol {
    // implementation of protocol requirements goes here
}

А штуки типа

extension TestProtocol {
  func method() {
    print("Printing it")
  }
}

на мой взгляд, довольно странные.

На дворе 2024, а статья про наследование) Даже сами эплы swiftui слелали на структурах, а за 10 лет развития swift так и не добавили возможность делать абстрактные классы, думаю о чем то это говорит)

За статью спасибо, освежил память.

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

Для переиспользования кода нужно использовать другие инструменты.

Автору:

Не пытайтесь забивать гвозди отверткой.

За системный подход к деталям Вам – огромный плюс. Статья получилась глубокая.

А вот за то, что утонули в этих деталях, забыли про взгляд с высоты птичьего полета и начали применять инструмент не по назначению, хотя рядом лежит тот инструмент, что Вам нужен – минус. Попробуйте прикинуть, какими еще инструментами надо получать переиспользование кода и сравните, что получится – вот это будет интересная и полезная для сообщества статья.

Спасибо за Ваши усилия.

Sign up to leave a comment.

Articles