Леонард потратил много времени на то, что (как он считал) ему понадобится в будущем - забронировал столик ресторане, купил билеты в кино и т.п. Из-за этого он не успел сделать то, что важно для Пенни здесь и сейчас - купить цветы и одеться поприличнее. Если бы Леонард не пытался предсказать будущее, а делал то, что действительно нужно, шансов на свидание у него было бы больше. Кроме того, он сэкономил бы время, потраченное на то, что так и не пригодилось.
среда, 28 сентября 2011 г.
YAGNI (You ain't gonna need it)
Леонард потратил много времени на то, что (как он считал) ему понадобится в будущем - забронировал столик ресторане, купил билеты в кино и т.п. Из-за этого он не успел сделать то, что важно для Пенни здесь и сейчас - купить цветы и одеться поприличнее. Если бы Леонард не пытался предсказать будущее, а делал то, что действительно нужно, шансов на свидание у него было бы больше. Кроме того, он сэкономил бы время, потраченное на то, что так и не пригодилось.
среда, 7 сентября 2011 г.
DRY: Part 5 - Data duplication
Другие части эпической саги о вреде дублирования:
И последний, на мой взгляд, тип дублирования - дублирование данных. Магические строки и магические числа ужасны сами по себе, потому что их значения очевидны только для автора в момент написания кода. Дублирование этой магии ужасно вдвойне.
- Вступление
- Дублирование поведения
- Дублирование логики создания
- Дублирование условной логики
- Дублирование данных
И последний, на мой взгляд, тип дублирования - дублирование данных. Магические строки и магические числа ужасны сами по себе, потому что их значения очевидны только для автора в момент написания кода. Дублирование этой магии ужасно вдвойне.
DRY: Part 4 - Conditional logic duplication
Другие части эпической саги о вреде дублирования:
Этот вид дублирования не так очевиден, как предыдущие - потому что повторяется лишь условная логика, управляющая потоком выполнения приложения. Выполняемые при этом операции зачастую совершенно различны.
Нет ничего плохого в том, чтобы написать блок switch один раз (часто я так поступаю при создании объектов с помощью фабрики). Но повторение одних и тех же условий - не сулит ничего хорошего. Например, расчёт зарплат и бонусов зависит от типа сотрудника:
- Вступление
- Дублирование поведения
- Дублирование логики создания
- Дублирование условной логики
- Дублирование данных
Этот вид дублирования не так очевиден, как предыдущие - потому что повторяется лишь условная логика, управляющая потоком выполнения приложения. Выполняемые при этом операции зачастую совершенно различны.
Нет ничего плохого в том, чтобы написать блок switch один раз (часто я так поступаю при создании объектов с помощью фабрики). Но повторение одних и тех же условий - не сулит ничего хорошего. Например, расчёт зарплат и бонусов зависит от типа сотрудника:
DRY: Part 3 - Creational logic duplication
Другие части эпической саги о вреде дублирования:
Дублирование также встречается при создании объектов. Например, когда требуется совершить несколько одинаковых действий перед тем, как создаваемый объект можно будет использовать. И чем сложнее ритуал создания объекта, тем больше работы будет по изменению каждой копии этого ритуала.
Всем известно, что в компании DcMonald's ленивых, грубых и неопрятных сотрудников превращают в зомби. При этом в каждом из этих случаев приходится повторять непростой процесс изготовления шаманом порошка из рыбы фугу, отравления сотрудника и чтения заклинания:
- Вступление
- Дублирование поведения
- Дублирование логики создания
- Дублирование условной логики
- Дублирование данных
Дублирование также встречается при создании объектов. Например, когда требуется совершить несколько одинаковых действий перед тем, как создаваемый объект можно будет использовать. И чем сложнее ритуал создания объекта, тем больше работы будет по изменению каждой копии этого ритуала.
Всем известно, что в компании DcMonald's ленивых, грубых и неопрятных сотрудников превращают в зомби. При этом в каждом из этих случаев приходится повторять непростой процесс изготовления шаманом порошка из рыбы фугу, отравления сотрудника и чтения заклинания:
DRY: Part 2 - Behavior duplication
Другие части эпической саги о вреде дублирования:
Наиболее очевидный пример дублирующегося кода - дублирующееся поведение. Время от времени мы встречаем абсолютно одинаковые куски кода, разбросанные по приложению. Да, именно по приложению - дублирование может наблюдаться как в пределах одного метода, так и на разных слоях или в разных модулях.
Почему мы видим одинаковый код несколько раз? Потому что для системы именно эта последовательность действий имеет определённое значение, этот код несёт в себе единицу знаний. Хочешь написать что-то ещё раз? Задумайся почему. Небольшой пример - начисление зарплаты в штатах:
- Вступление
- Дублирование поведения
- Дублирование логики создания
- Дублирование условной логики
- Дублирование данных
Наиболее очевидный пример дублирующегося кода - дублирующееся поведение. Время от времени мы встречаем абсолютно одинаковые куски кода, разбросанные по приложению. Да, именно по приложению - дублирование может наблюдаться как в пределах одного метода, так и на разных слоях или в разных модулях.
Почему мы видим одинаковый код несколько раз? Потому что для системы именно эта последовательность действий имеет определённое значение, этот код несёт в себе единицу знаний. Хочешь написать что-то ещё раз? Задумайся почему. Небольшой пример - начисление зарплаты в штатах:
четверг, 14 июля 2011 г.
Подписаться на:
Комментарии (Atom)


