Добрый день, читатель!
Это первый выпуск рассылки, посвящённый вопросам качественного кода. Рассылка,
думается, будет неким мастер-классом, в которой будут обсуждаться вопросы гибкого
дизайна, вопросы поддержки и развития архитектурных решений, но самое главное
чистоты, простоты и понятности нашего с вами кода.
Причём тут Agile? Agile как подход быстрой разработки программного обеспечения
накладывает серьезные требования к разработчикам (основной производственной силе
проекта). Поэтому основатели Agile ещё задолго до определения манифеста (см.
http://agilemanifesto.org) разработали множество полезных техник, подходов и
практик. А после подписания манифеста эти подходы стали основными инструментами
Agile-команд. Это - рефакторинг, design patterms, implementation patterns, patterns
of enterprise application architecture, test-driven development, agile modeling,
CRC и другие (включая стандартные подходы: UML, Use Cases и т.п.)
Организована рассылка будет просто. Раз в неделю, а может быть чаще я (с учётом
ваших писем) буду выделять одно из решений в области качественного кода. Конечно
же за подсказками обратимся к Макконелу, Фаулеру, Кент Беку и другим авторам.
Но и сами попытаемся разобраться к чему приведёт нас то или иное решение.
Думаю, что для первого сообщения достаточно. В заключение сразу предлагаю перейти
к целям рассылки. Давайте обсудим решение <<Encapsulate Fields>>
Encapsulate Field: There is a public field. Make it private and provide accessors.
Вариант 1.
public String _name
Вариант 2.
private String _name;
public String getName() {return _name;}
public void setName(String arg) {_name = arg;}
Литература: Мартин Фаулер. Рефакторинг.
Я всегда делаю вариант 2. Скрытие данных за вызовом метода позволяет мне более
гибко управлять данными. Так я могу сделать <<отложенное создание>> или вообще
перенести данные в другой класс, например базовый 
Что вы думаете?
С Уважением,
Денис Миллер