Saint Petersburg, 2011 Java Lecture #03 Luchie Praktiki
Best Practices Используйте интерфейс только для определения типов. Шаблон интерфейса констант - это неудачный вариант использования интерфейсов. 2
Best Practices Проверяйте параметры в публичных методах. 3
Best Practices Возвращайте пустой объект, а не null 4
Best Practices 5 Для таких случаев есть паттерн Null Object
Best Practices 6 С перегрузкой методов лучше быть осторожней Выбор перезагруженных методов является статическим и определяется в момент компиляции. Выбор переопределенных методов – динамический.
Best Practices Для ссылки на объект используйте его интерфейс 7
Best Practices Помните о Java Literal Pool 8
Best Practices 9 Немного о наследовании
Best Practices 10 Немного о делегировании
Best Practices 11 Во имя эффективности (без обязательности ее достижения) делается больше вычислительных ошибок, чем по каким-либо иным причинам, включая непроходимую тупость. William A. Wolf Мы обязаны забывать о мелких усовершенствованиях, скажем, на 97% рабочего времени: опрометчивая оптимизация – корень всех зол. Donald E. Knuth Что касается оптимизации, то мы следуем двум правилам: Правило 1: Не делайте этого. Правило 2 (только для экспертов): пока не делайте этого – т.е. пока у вас нет абсолютно четкого, но неоптимизированного решения. M. A. Jackson
Object pool 12 Управляет повторным использованием объектов в случаях, когда создание объектов требует больших затрат или может быть создано только ограниченное количество объектов некоторого вида.
Classloaders 13 Различают 3-и вида загрузчиков в Java. Это базовый загрузчик (bootstrap), системный загрузчик (System Classloader), загрузчик расширений (Extension Classloader).
Classloaders 14 Bootstrap реализован на уровне JVM и не имеет обратной связи со средой исполнения. Данным загрузчиком загружаются классы из директории $JAVA_HOME/lib. System Classloader системный загрузчик, реализованный уже на уровне JRE. В Sun JRE это класс sun.misc.Launcher$AppClassLoader. Этим загрузчиком загружаются классы, пути к которым указаны в переменной окружения CLASSPATH. Управлять загрузкой системных классов можно с помощью ключа -classpath или системной опцией java.class.path. Extension Classloader загрузчик расширений. Данный загрузчик загружает классы из директории $JAVA_HOME/lib/ext. В Sun JRE это класс sun.misc.Launcher$ExtClassLoader.