Итак, я читал книгу «Эффективная Java» Джошуа Блоха и заметил два момента, с которыми я действительно столкнулся в своей работе.
Точка 1: Создание методов установки, чтобы сделать код более читабельным.
В его примере у нас есть класс со смехотворно огромным конструктором. Когда люди создают экземпляр класса, трудно сказать, что происходит со всеми параметрами. Таким образом, он предложил сделать минималистичный конструктор и использовать методы установки для всех других опций, поэтому вместо ...
MyClass clazz = новый MyClass (a, b, c,
д, е, е, г);
вы бы написали ....
MyClass clazz = новый MyClass (a, b,
c);
clazz.setDitto (d);
clazz.setEcho (е);
clazz.setFunzies (е);
clazz.setGumballs (г);
Что, как огромный сторонник читабельного кода, мне очень понравилось.
Пункт 2: В общем, он предложил иметь неизменные классы. Он углубляется в то, почему иметь неизменяемые классы гораздо лучше, чем иметь класс, который может быть в нескольких разных штатах. Я могу с уверенностью сказать, что он продал эту идею мне, и я не могу дождаться, чтобы большинство классов, которые я пишу, теперь были неизменяемыми, кроме ....
Что происходит, когда у вас есть неизменный класс с огромным конструктором? Вы не можете создавать методы для этого; это сломало бы неизменность. Я попытался пролистать оставшуюся часть книги, но не думаю, что он рассматривает решение для этого.
Существует возможность создания одноразовых методов-установщиков, но просто тот факт, что метод-установщик доступен для класса, который предположительно является неизменным, обескураживает, даже если он просто выдает исключение, если вы попробуете его в следующий раз .
У кого-нибудь есть хорошие идеи о том, как справиться с этой проблемой? В настоящее время я сталкиваюсь с этой проблемой на работе, где у меня есть класс Immutable с огромным конструктором, который я хотел бы преобразовать во что-то более удобочитаемое, не нарушая неизменность.