Главная » Советы

Для ссыпки на объект используйте его интерфейс

Добавлено Дата: 14 May, 2011 категория: Java, Советы

 

В статье 25 дается совет: в качестве типа параметра указывать интерфейс, а не класс. В более общей формулировке: ссылаясь на объект, вы должны отдавать предпочтение не классу, а интерфейсу. Если есть подходящие типы интерфейсов, то параметры, возвращаемые значения, переменные и поля следует декларировать, указывая интерфейс. Единственный случай, когда вам нужно ссылаться на класс объекта,- при его создании. Для пояснения рассмотрим случай с классом Vector, который является реализацией интерфейса List. Возьмите за правило писать так

Читать »

Избегайте избыточной синхронизации

Добавлено Дата: 14 May, 2011 категория: Java, Советы

 

Статья 48 предупреждает об опасностях недостаточной синхронизации. Данная статья посвящена обратной проблеме. В зависимости от ситуации избыточная синхронизация может приводить к снижению производительности приложения, взаимной блокировке потоков или даже к непредсказуемому поведению программы.

Читать »

Переопределяя метод equals, всегда переопределяйте hashCode

Добавлено Дата: 14 May, 2011 категория: Java, Советы

 

Распространенным источником ошибок является отсутствие переопределения метода hashCode. Вы должны переопределять метод hashCode в каждом классе, где переопределен метод equals. Невыполнение этого условия приведет к нарушению общих соглашений для метода Object.hashCode, а это не позволит вашему классу правильно работать в сочетании с любыми коллекциями, построенными на использовании хэш-таблиц, в том числе с HashMap, HashSet и HashTable.

Читать »

Отсутствие экземпляров обеспечивает закрытый конструктор

Добавлено Дата: 14 May, 2011 категория: Java, Советы

 

Время от времени приходится писать класс, который является всего лишь собранием статических методов и статических полей. Такие классы приобрели дурную репутацию, поскольку отдельные личности неправильно пользуются ими с целью написания процедурных программ с помощью объектно-ориентированных языков. Подобные классы требуют правильного применения. Их можно использ~ать для того, чтобы собирать вместе связанные друг с другом методы обработки простых значений или массивов, как это сделано в библиотеках java.lang.Math и java.util.Arrays, либо чтобы собирать вместе статические методы объектов, которые реализуют определенный интерфейс, как это сделано в j ауа.util.Collections. Можно также собрать Методы в некоем окончательном (fina!) классе вместо того, чтобы заниматься расширением Класса.

Читать »

При выборе имен придерживайтесь общепринятых соглашений

Добавлено Дата: 14 May, 2011 категория: Java, Советы

 

Платформа Java обладает хорошо устоявшимся набором соглашений, касающихся выбора имен (naming convention). Многие из них приведены в "The Jаvа Lаngиаgе Sресifi:аtiоп" [JLS, 6.8]. Соглашения об именовании делятся на две ка-r:егории: типографские и грамматические.

Читать »

3аменяйте структуру классом

Добавлено Дата: 13 May, 2011 категория: Java, Советы

 

Конструкция struct языка С не была принята в языке программирования Java потому, что класс выполняет все то же самое, что может делать структура, и даже более того. Структура группирует несколько полей данных в один общий объект, тогда как класс связывает с полученным объектом операции, а также позволяет скрывать поля данных от пользователей объекта. Иными словами, класс может инкапсулировать

Читать »

Используйте исключения лишь в исключительных ситуациях

Добавлено Дата: 13 May, 2011 категория: Java, Советы

 

Однажды, если вам не повезет, вы сделаете ошибку в программе, например, такую:

// Неправильное использование исключений. Никогда так не делайте!

try {

int i = 0;

while(true)

а[i++]. f();

} catch(ArraylndexOutOfBoundsException е) {  }

Читать »

Предпочитайте интерфейсы абстрактным классам.

Добавлено Дата: 13 May, 2011 категория: Java, Советы

В языке программирования Java предоставлены два механизма определения типов, которые допускают множественность реализаций: интерфейсы и абстрактные классы. Самое очевидное различие между этими механизмами заключается в том, что в абстрактные классы можно включать реализацию некоторых методов, для интерфейсов это запрещено. Более важное отличие связано с тем, что для реализации типа, определенного неким. Абстрактным классом, класс должен стать подклассом этого абстрактного класса. С другой стороны, реализовать интерфейс может любой класс, независимо от его места в иерархии классов, если только он отвечает общепринятым соглашениям и в нем есть все необходимые для этого методы. Поскольку в языке Java не допускается множественное наследование, указанное требование для абстрактных классов серьезно ограничивает их использование при определении типов. 

Читать »

Предпочитайте статические классы-члены нестатическим

Добавлено Дата: 13 May, 2011 категория: Java, Советы

Класс называется вложенным (nested), если он определен внутри другого класса.

Вложенный класс должен создаваться только для того, чтобы обслуживать окружающий его класс. Если вложенный класс оказывается полезен в каком-либо ином контексте, он должен стать классом верхнего уровня. Существуют четыре категории вложенных классов: статический класс-член (static member class), нестатический класс-член (nonstatic member class), анонимный класс (anonymoиs class) и локальный класс (local class). За исключением первого, остальные категории классов называются внутренними (inner class). В этой статье рассказывается о том, когда и какую категорию вложенного класса нужно использовать и почему.

Читать »

Подумайте над реализацией интерфейса ComparabIe

Добавлено Дата: 13 May, 2011 категория: Java, Советы

 

в отличие от других обсуждавшихся в этой главе методов, метод соmрагеТо в классе Object не декларируется. Пожалуй, это единственный такой метод в интерфейсе java.lang.СоmрагаЫе. По своим свойствам он похож на метод equals из класса Object, за исключением того, что, помимо простой проверки равенства, он позволяет выполнять упорядочивающее сравнение. Реализуя интерфейс СоmрагаЫе, класс показывает, что его экземпляры обладают естественным своиством упорядочения (natиra! ordering). Сортировка массива объектов, реализующих интерфейс СоmрагаЫе, выполняется просто:

Читать »

При необходимости создавайте резервные копии

Добавлено Дата: 12 May, 2011 категория: Java, Советы

 

Одно из особенностей, благодаря которой работа с языком программирования Java доставляет такое удовольствие, является его безопасность. Это означает, что в отсутствие машинно-зависимых методов (native method) он неуязвим по отношению

Читать »

Возвращайте массив нулевой длины, а не null

Добавлено Дата: 12 May, 2011 категория: Java, Советы

 

Нередко встречаются методы, имеющие следующий вид:

private List cheesesInStock = … ;

/**

* @return массив, содержащий все сыры, имеющиеся в магазине,

* или null, если сыров для продажи нет.

Читать »

Для всех открытых элементов АРI пишите dос – комментарии

Добавлено Дата: 11 May, 2011 категория: Java, Советы

 

Если АРI будет использоваться, его нужно описывать. Обычно документация к АРI пишется вручную, и поддержание соответствия между документацией и программным кодом – весьма неприятная работа. Среда программирования Java облегчает эту задачу с помощью утилиты, называемой /avadoc. Она автоматически генерирует документацию к API, отталкиваясь от исходного текста программы, дополненного специальным образом оформленными комментариями к документации (documentation comment), которые чаще называют dос – комментариями (doc comment). Утилита Javadoc предлагает простой, эффективный способ документирования АРI и используется повсеместно.

Читать »

Предпочитайте стандартные исключения

Добавлено Дата: 11 May, 2011 категория: Java, Советы

 

Одной из сильных сторон экспертов, отличающих их от менее опытных программистов, является то, что эксперты борются за высокую степень повторного использования программного когда и обычно этого добиваются. Общее правило, гласящее, что повторно используемый код – это хорошо, относится и к технологии исключении. В библиотеках для платформы Java реализован основной набор необрабатываемых исключений, перекрывающий большую часть потребностей в исключениях для API. В этой статье обсуждаются наиболее часто применяемые исключения.

Читать »

Остерегайтесь методов flnalize

Добавлено Дата: 11 May, 2011 категория: Java, Советы

 

Методы finalize непредсказуемы, часто опасны и, как правило, не нужны. Их использование может привести к странному поведению программы, низкой производительности и проблемам с переносимостью. Метод finalize имеет лишь несколько областей применения (см. ниже), а главное правило таково: следует избегать методов finalize.

Читать »