Предполагается ли иметь имена репозитория Git в верхнем или верблюжьем регистре вместо строчных? [закрыто]

То, что все остальные говорили об оптимизации, абсолютно верно.

Нет причин с точки зрения производительности , чтобы встроить метод. Если это проблема с производительностью, JIT в вашей JVM включит ее. В java вызовы методов настолько близки к свободным, что не стоит об этом думать.

Говоря, здесь есть другая проблема. А именно, является плохой практикой программирования для вызова переопределяемого метода (т. Е. Того, который не является final, static или private) из конструктора. (Эффективная Java, 2-е изд., Стр. 89 в элементе под названием «Дизайн и документ для наследования или запрет»)

Что произойдет, если кто-то добавит подкласс BinarySearchTree, названный LoggingBinarySearchTree, который переопределяет все общедоступные методы с помощью кода типа:

public void clear(){
  this.callLog.addCall("clear");
  super.clear();
}

Тогда LoggingBinarySearchTree никогда не будет конструктивным! Проблема в том, что this.callLog будет null, когда работает конструктор BinarySearchTree, но clear, который вызывается, является переопределенным, и вы получите NullPointerException.

Обратите внимание, что Java и C ++ отличаются здесь: в C ++ конструктор суперкласса, который вызывает метод virtual, заканчивает вызов того, что определено в суперклассе, а не переопределенном. Люди, переключающиеся между двумя языками, иногда забывают об этом.

Учитывая, что, по-моему, в вашем случае, возможно, более чистым является включение метода clear при вызове из конструктора , но в общий на Java, вы должны идти вперед и делать все вызовы методов, которые вы хотите.

39
задан informatik01 12 April 2016 в 09:42
поделиться