Пишем элегантный и чистый Java код в 5 этапов

Java код

Самый простой способ быстренько «набросать» программу – использовать классы JavaBeans, которые пишутся в соответствии с некоторыми правилами. Например:

Слишком много лишних условий. Даже если IDE автоматически генерирует такой код (как при стандартном создании конструктора), исправляйте его, и вот почему. Вместо этого лучше применить стиль C-структур, который позволит хранить данные:

Это сокращение количества строк кода наполовину. Кроме того, данный класс является неизменным, поэтому и работать с ним проще.

Если вы храните объекты Map или List, которые могут быть легко изменены, используйте ImmutableMap или ImmutableList.

Шаблон Builder

Если у вас есть сложный объект, пригодится шаблон Builder.

Вы создаете статический внутренний класс, который будет строить ваш объект. Он использует изменяемое состояние, но как только вы вызываете build, он выдает неизменяемый объект.

Представьте, что у нас есть более сложный DataHolder. Builder может выглядеть так:

Чтобы применить его:

Существует гораздо больше примеров. Это дает вам неизменяемые объекты и более свободный интерфейс. Вместо того, чтобы писать объекты-конструкторы, рассмотрите возможность использования одной из библиотек, помогающих задействовать билдеры.

Непрерывное создание объектов

Если вы создаете много неизменяемых объектов вручную, примените обработчик аннотаций для автоматического создания их из интерфейсов. Это минимизирует код шаблона и уменьшит вероятность ошибок. Посмотрите эту презентацию для понимания проблем с обычными шаблонами в Java-кодинге.

Java код

Exception

Проверенные исключения следует использовать с осторожностью. Они заставляют добавлять много try/catch блоков и заворачивать в них исключения. Лучше использовать непроверенные исключения RuntimeException, которые свидетельствуют об ошибке со стороны разработчика и не требуют постановки try/catch. С RuntimeException код становится намного чище.

Внедрение зависимости

Это, скорее, раздел разработки ПО в целом, чем раздел Java, но одним из лучших способов написания тестируемого программного обеспечения является применение зависимостей.

В Java код это обычно внедряется с помощью фреймворка Spring. Если используете конфигурацию XML, важно не злоупотреблять Spring из-за его формата конфигурации на базе XML. В XML-файле не должно быть логических или контрольных структур: только зависимости.

фреймворк Spring

Хорошие альтернативы Spring – Google и Square Dagger или Google Guice.

Избегайте Null

Избегайте использования null, если это возможно. Не возвращайте нулевые коллекции, когда коллекция должна быть пустой. Если вы собираетесь использовать null, рассмотрите аннотацию @Nullable. Например, IntelliJ IDEA включает в себя встроенную поддержку для удобного ознакомления с аннотациями.

IntelliJ IDEA

Если вы используете Java 8, отдайте предпочтение Optional. Используйте его следующим образом:

Ясно, что данные никогда не будут нулевыми, но условие при этом может выполняться или не выполняться. Единственный недостаток Optional – это то, что стандартная библиотека находится без хорошей поддержки, поэтому в ней по-прежнему требуется использование null.