Сообщение Re: [ООП] Наследование интерфейсов друг от друга от 31.01.2024 8:17
Изменено 05.02.2024 7:07 fmiracle
Re: [ООП] Наследование интерфейсов друг от друга
Здравствуйте, dmitry_npi, Вы писали:
_>Я считаю, что это только запутывает код.
_>Вспомним букву I в SOLID: интерфейс — это аспект поведения. У компонента может быть много аспектов, но они должны быть разделены.
_>Кроме очевидных исключений типа
_>
И чуть менее очевидные
ICollection : IEnumerable
IList : ICollection
Наследование интерфейсов с одной стороны необязательное, с другой стороны иногда упрощает код и понимание. Просто знаешь что если что-то реализует IList, то оно уже точно и перечислимо и коллекцией является, а не проверяешь каждый раз, что ThisSuperList реализует и IList и ICollection и IEnumerable.
С другой стороны, злоупотребление этим тоже не полезно.
_>Я считаю, что это только запутывает код.
_>Вспомним букву I в SOLID: интерфейс — это аспект поведения. У компонента может быть много аспектов, но они должны быть разделены.
_>Кроме очевидных исключений типа
_>
_>IEnumerable<T>: IEnumerable
_>
И чуть менее очевидные
ICollection : IEnumerable
IList : ICollection
Наследование интерфейсов с одной стороны необязательное, с другой стороны иногда упрощает код и понимание. Просто знаешь что если что-то реализует IList, то оно уже точно и перечислимо и коллекцией является, а не проверяешь каждый раз, что ThisSuperList реализует и IList и ICollection и IEnumerable.
С другой стороны, злоупотребление этим тоже не полезно.
Re: [ООП] Наследование интерфейсов друг от друга
Здравствуйте, dmitry_npi, Вы писали:
_>Я считаю, что это только запутывает код.
_>Вспомним букву I в SOLID: интерфейс — это аспект поведения. У компонента может быть много аспектов, но они должны быть разделены.
_>Кроме очевидных исключений типа
_>
И чуть менее очевидные
ICollection : IEnumerable
IList : ICollection
Наследование интерфейсов с одной стороны необязательное, с другой стороны иногда упрощает код и понимание. Просто знаешь что если что-то реализует IList, то оно уже точно и перечислимо и коллекцией является, а не проверяешь каждый раз, что ThisSuperList реализует и IList и ICollection и IEnumerable.
Ну и банально — ты на вход принимаешь IList, и можешь напрямую использовать его и как IEnumerable, что логично.
С другой стороны, злоупотребление таким наследованием тоже не полезно.
_>Я считаю, что это только запутывает код.
_>Вспомним букву I в SOLID: интерфейс — это аспект поведения. У компонента может быть много аспектов, но они должны быть разделены.
_>Кроме очевидных исключений типа
_>
_>IEnumerable<T>: IEnumerable
_>
И чуть менее очевидные
ICollection : IEnumerable
IList : ICollection
Наследование интерфейсов с одной стороны необязательное, с другой стороны иногда упрощает код и понимание. Просто знаешь что если что-то реализует IList, то оно уже точно и перечислимо и коллекцией является, а не проверяешь каждый раз, что ThisSuperList реализует и IList и ICollection и IEnumerable.
Ну и банально — ты на вход принимаешь IList, и можешь напрямую использовать его и как IEnumerable, что логично.
С другой стороны, злоупотребление таким наследованием тоже не полезно.