Читаем Чистый код. Создание, анализ и рефакторинг полностью

  80 public class SpreadsheetDate extends SerialDate {

  81

  82     /** Для сериализации. */

  83     private static final long serialVersionUID = -2039586705374454461L;

  84

  85     /**

Листинг Б.5 (продолжение)

  86      * Номер дня (1.01.1900 = 2, 2.01.1900 = 3, ..., 31.12.9999 =

  87      * 2958465).

  88      */

  89     private int serial;

  90

  91     /** День месяца (от 1 до 28, 29, 30 или 31 в зависимости от месяца). */

  92     private int day;

  93

  94     /** Месяц года (от 1 по 12). */

  95     private int month;

  96

  97     /** Год (от 1900 до 9999). */

  98     private int year;

  99

100     /** Необязательное описание даты. */

101     private String description;

102

103     /**

104      * Создает новый экземпляр даты.

105      *

106      * @param day  день (в диапазоне от 1 до 28/29/30/31).

107      * @param month  месяц (в диапазоне от 1 до 12).

108      * @param year  год (в диапазоне от 1900 до 9999).

109      */

110     public SpreadsheetDate(final int day, final int month, final int year) {

111

112         if ((year >= 1900) && (year <= 9999)) {

113             this.year = year;

114         }

115         else {

116             throw new IllegalArgumentException(

117                 "The 'year' argument must be in range 1900 to 9999."

118             );

119         }

120

121         if ((month >= MonthConstants.JANUARY)

122                 && (month <= MonthConstants.DECEMBER)) {

123             this.month = month;

124         }

125         else {

126             throw new IllegalArgumentException(

127                 "The 'month' argument must be in the range 1 to 12."

128             );

129         }

130

131         if ((day >= 1) && (day <= SerialDate.lastDayOfMonth(month, year))) {

132             this.day = day;

133         }

134         else {

135             throw new IllegalArgumentException("Invalid 'day' argument.");

136         }

137

138         // Порядковый номер должен синхронизироваться с днем-месяцем-годом...

139         this.serial = calcSerial(day, month, year);

140

141         this.description = null;

142

143     }

144

145     /**

146      * Стандартный конструктор - создает новый объект даты, представляющий

147      * день с заданным номером (в диапазоне от 2 до 2958465).

148      *

149      * @param serial  порядковый номер дня (диапазон: от 2 до 2958465).

150      */

151     public SpreadsheetDate(final int serial) {

152

153         if ((serial >= SERIAL_LOWER_BOUND) && (serial <= SERIAL_UPPER_BOUND)) {

154             this.serial = serial;

155         }

156         else {

157             throw new IllegalArgumentException(

Перейти на страницу:

Все книги серии Библиотека программиста

Программист-фанатик
Программист-фанатик

В этой книге вы не найдете описания конкретных технологий, алгоритмов и языков программирования — ценность ее не в этом. Она представляет собой сборник практических советов и рекомендаций, касающихся ситуаций, с которыми порой сталкивается любой разработчик: отсутствие мотивации, выбор приоритетов, психология программирования, отношения с руководством и коллегами и многие другие. Подобные знания обычно приходят лишь в результате многолетнего опыта реальной работы. По большому счету перед вами — ярко и увлекательно написанное руководство, которое поможет быстро сделать карьеру в индустрии разработки ПО любому, кто поставил себе такую цель. Конечно, опытные программисты могут найти некоторые идеи автора достаточно очевидными, но и для таких найдутся темы, которые позволят пересмотреть устоявшиеся взгляды и выйти на новый уровень мастерства. Для тех же, кто только в самом начале своего пути как разработчика, чтение данной книги, несомненно, откроет широчайшие перспективы. Издательство выражает благодарность Шувалову А. В. и Курышеву А. И. за помощь в работе над книгой.

Чед Фаулер

Программирование, программы, базы данных / Программирование / Книги по IT

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных