#java
Например, вместо import com.smartgwt.client.widgets.layout.VLayout; import com.smartgwt.client.widgets.layout.HLayout; можно писать import com.smartgwt.client.widgets.layout.*; и все работает. Хорошо ли это (использовать '*') ? Возникает ли дополнительная нагрузка на компилятор (на глаз не ощущается), объем подключаемого кода (не исследовал) и т.п. ?
Ответы
Ответ 1
Интересной и неприятной стороной импорта всех классов из пакета может стать ситуация, когда в пакет добавляются классы: package a; import b.*; // тут есть класс B import c.*; // тут есть класс С public class A { public A() { new B(); new C(); } } Фокус произойдет, если в пакет b добавится вдруг класс С - наш класс перестанет компилироваться. Обновили какую-нибудь библиотеку и бац - ни с того, ни с сего. Еще бывает ситуации, когда неясно, из какого именно пакета импортирован класс. Минусом поименного импорта является большое "полотно" собственно импортов - но оно практически всегда скрыто ("collapsed") в редакторе. Cам я, честно говоря, этим никогда не заморачивался - Eclipse импортирует поименно - и пусть себе импортирует. Мне кажется, минусы любого подхода сейчас хорошо компенсируются современными IDE.Ответ 2
Все должно быть в разумных пределах. Если нужно один класс импортировать, то можно и написать его полный путь, но когда в импорте перечисляется половина классов модуля, то какой смысл? Хотя некоторые эстеты найдут это правильным. Нагрузка на компилятор? Сложно что то сказать, и никогда не слышал, что бы кто то это исследовал, но вот повыбрасывать явно лишние импорты - стоит (может по этой причине и импортируют все явно?) А вот будет ли больше объем подключаемого кода? я думаю компилятор может все очень хорошо оптимизировать.Ответ 3
Возможно я не прав, но если я не ошибаюсь, то нагрузки на компилятор вообще никакой от этих строк нет. Компилятор не включает указанные классы в саму программу (.jar файл). Это всего навсего ссылки, по которым виртуальная машина будет искать классы в процессе выполнения программы. То есть если если и есть лишняя нагрузка, то только в рантайме. И еще, иногда могут встречаться такие ситуации (пример на вскидку привести не могу, но такое может случится), когда в разных пакетах лежат классы с одинаковыми именами. О таких ситуациях стоит помнить, когда вы ставите много *.
Комментариев нет:
Отправить комментарий