Неизменность и удобочитаемость

Итак, я читал книгу «Эффективная Java» Джошуа Блоха и заметил два момента, с которыми я действительно столкнулся в своей работе.

Точка 1: Создание методов установки для создания кода более читабельным. В его примере у нас есть класс со смехотворно огромным конструктором. Когда люди создают экземпляр класса, трудно сказать, что происходит со всеми параметрами. Таким образом, он предложил сделать минималистичный конструктор и иметь методы установки для всех других опций, поэтому вместо ...

MyClass clazz = new MyClass (a, b, c, d, e, f, g);

вы бы написали ....

MyClass clazz = new MyClass (a, b, c);
clazz.setDitto (d);
clazz.setEcho (е);
clazz.setFunzies (е);
clazz.setGumballs (g);

Мне, как огромному стороннику читабельного кода, очень понравилось.

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

Что происходит, когда у вас есть неизменный класс с огромным конструктором? Вы не можете создавать методы для этого; это сломало бы неизменность. Я попытался пролистать оставшуюся часть книги, но я не думаю, что он рассматривает решение для этого.

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

Есть ли у кого-нибудь хорошие идеи о том, как справиться с этой проблемой ? В настоящее время я сталкиваюсь с этой проблемой на работе, где у меня есть класс Immutable с огромным конструктором, который я хотел бы преобразовать во что-то более удобочитаемое, не нарушая неизменность.

6
задан Noj 2 September 2010 в 22:08
поделиться