Scala позволяет импортировать практически все, что угодно, где угодно, и это здорово. Но есть ли какие-либо соображения, которые я должен учитывать при импорте чего-либо внутри класса, метода или всего лишь одного блока? Как это относится к производительности, стилю, поддерживаемости кода и т.д.
В общем, я стараюсь подчиняться этим правилам (составленный мною):
- Если я импортирую что-то внешнее из другого пакета, я всегда помещаю его вверху сразу после "пакета".
- Если я использую что-то более одного раза в одном файле, я также импортирую его вверху.
- В противном случае я помещаю свой импорт вверху соответствующего класса/свойства/объекта.
- Я не могу импортировать вещи в методы и блоки.
- Я пытаюсь избежать импорта содержимого объектов экземпляра, если у меня нет повода для этого.
- Я бы избегал переименования и "скрытия", если только не разрешать конфликты имен, но мне это еще не нужно.
Имеют ли эти "правила" смысл? Я слишком сильно ограничиваю себя?