Избыточный импорт в объектно-ориентированном коде - PullRequest
2 голосов
/ 03 марта 2010

При включении класса, который возвращает объекты другого типа, я не уверен в лучшей практике при импорте файла класса для возвращаемого типа объекта. Итак, если все три класса находятся в отдельных файлах:

class file A imports class file B
class file B imports class file C
class B returns an object of type C to class A

должен ли класс A также импортировать класс C, чтобы быть более явным, или можно предположить, что класс C был импортирован классом B и косвенно классом A?

Ответы [ 2 ]

1 голос
/ 07 марта 2010

ИМХО, с точки зрения ОО дизайна (не то, чтобы я был хорошим), пока классу А не нужно знать что-то конкретное о классе С, вам не нужен импорт (модуля, а не текста) , Это может случиться, например, когда класс A зависит от объекта класса / интерфейса D, который будет возвращен B (из метода фабрики), который будет объектом класса / интерфейса C, который расширяет / реализует D. Это точка шаблона проектирования фабричного метода - тормоз зависимость между конкретным классом создаваемых объектов и его необходимым интерфейсом.

1 голос
/ 03 марта 2010

Я думаю, что это зависит от языка и реализации.

Я знаю, что в C ++, если вы делаете #include, это так же хорошо, как копировать и вставлять файл, который #include. Поэтому, когда вы делаете это, вы по сути вносите любой импорт ... до тех пор, пока он не конфликтует с сущностями в пространстве имен, все должно быть хорошо. Просто убедитесь, что у каждого файла * .h есть одна #pragma или есть раздел #ifndef.

В Java вам нужно быть явным. Исходя из моего личного опыта, это потребует декларации всех использованных типов. Не уверен насчет бэкэнда, но, по крайней мере, моя IDE жалуется, что, я полагаю, исходит от javac.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...