Информация об изменениях

Сообщение Re: Зависимости между классами и интерфейсами от 15.09.2020 12:12

Изменено 15.09.2020 12:14 Qulac

Re: Зависимости между классами и интерфейсами
Здравствуйте, AlexRK, Вы писали:

ARK>Приветствую.


ARK>Мой вопрос может показаться довольно странным, абстрактным и/или нелепым, но я хотел бы услышать мнения.


ARK>В мейнстримовых языках программирования разрешены произвольные взаимодействия между классами и интерфейсами — класс А может иметь поле типа "класс Б", и одновременно в классе Б может быть поле типа "класс А". То же самое с интерфейсами. То есть — все может зависеть от всего, везде разрешены циклы. Это, насколько мне известно, не считается чем-то предосудительным и часто используется.


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

ARK>Вопрос у меня таков: насколько сильным вы считаете запрет на любые циклы в графе классов и интерфейсов?


Он не нужен.

ARK>С двумя важными дополнениями/исключениями:

ARK>1) Класс/интерфейс может использовать сам себя (то есть можно создать связанный список или дерево).
ARK>2) Запрет на циклы — только на уровне объявлений. То есть физически цикл создать можно, передав объект через, скажем, генерик-параметр. Но сами объявления циклическими быть не могут. (В расте все наоборот — объявления можно делать циклическими, но физически циклы без unsafe запрещены.)

ARK>Насколько плоха такая организация классов/интерфейсов в виде дерева, без циклов?


По мне это не нужно.
Re: Зависимости между классами и интерфейсами
Здравствуйте, AlexRK, Вы писали:

ARK>Приветствую.


ARK>Мой вопрос может показаться довольно странным, абстрактным и/или нелепым, но я хотел бы услышать мнения.


ARK>В мейнстримовых языках программирования разрешены произвольные взаимодействия между классами и интерфейсами — класс А может иметь поле типа "класс Б", и одновременно в классе Б может быть поле типа "класс А". То же самое с интерфейсами. То есть — все может зависеть от всего, везде разрешены циклы. Это, насколько мне известно, не считается чем-то предосудительным и часто используется.


Циклическая зависимость означает, что мы не можем использовать эти типы раздельно друг от друга, может им тогда лучше в месте быть(объединить в один тип) или выделить что-то общее в отдельный тип.

ARK>Вопрос у меня таков: насколько сильным вы считаете запрет на любые циклы в графе классов и интерфейсов?


Он не нужен.

ARK>С двумя важными дополнениями/исключениями:

ARK>1) Класс/интерфейс может использовать сам себя (то есть можно создать связанный список или дерево).
ARK>2) Запрет на циклы — только на уровне объявлений. То есть физически цикл создать можно, передав объект через, скажем, генерик-параметр. Но сами объявления циклическими быть не могут. (В расте все наоборот — объявления можно делать циклическими, но физически циклы без unsafe запрещены.)

ARK>Насколько плоха такая организация классов/интерфейсов в виде дерева, без циклов?


По мне это не нужно.