Вход/Регистрация
Программист-прагматик. Путь от подмастерья к мастеру
вернуться

Хант Эндрю

Шрифт:

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

Физическая несвязанность

В данном разделе мы много говорим о сохранении логической несвязанности между элементами проектируемой системы. Однако существует взаимозависимость другого рода, которая становится весьма существенной с увеличением масштаба систем. В своей книге "Large-Scale С++ Software Design" [Lak96] Джон Лакос обращается к вопросам, касающимся отношений между файлами, каталогами и библиотеками, составляющими систему. Игнорирование этих проблем физического проектирования в крупномасштабных проектах приводит, помимо прочих проблем, к тому, что цикл сборки может растягиваться на несколько дней, а процедуры модульного тестирования могут сорвать сроки готовности всей системы. Г-н Лакос приводит убедительные доказательства того, что логическое и физическое проектирование должно осуществляться в тандеме и что устранение повреждений в большом фрагменте программы, нанесенных ему циклическими зависимостями, представляется чрезвычайно трудным делом. Мы рекомендуем вам прочесть эту книгу, если вы участвуете в разработке крупномасштабных проектов, даже если вы осуществляете реализацию на языке, отличном от С++.

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

Другие разделы, относящиеся к данной теме:

• Ортогональность

• Обратимость

• Проектирование по контракту

• Балансировка ресурсов

• Всего лишь визуальное представление

• Команды прагматиков

• Безжалостное тестирование

Вопросы для обсуждения

• Мы обсудили, как делегирование полномочий облегчает соблюдение закона Деметера и, следовательно, уменьшает связывание. Однако написание всех методов, необходимых для пересылки вызовов к делегированным классам, является утомительной процедурой, чреватой ошибками. Каковы преимущества и недостатки написания препроцессора, который автоматически генерирует эти вызовы? Должен ли этот препроцессор запускаться только единожды, или же он должен применяться как составная часть процесса сборки?

Упражнения

24. Мы обсудили концепцию физической несвязанности в последней врезке. Какой из указанных ниже файлов заголовка в языке С++ характеризуется более сильным связыванием с остальной системой? (Ответ см. в Приложении В.)

person1.h

#include "date.b"

class Person 1 {

private:

Date myBirthdate;

public:

Person1(Date &birthDate);

//...

person2.h

class Date;

class Person2 {

private:

Date *myBirthdate;

public:

25. В данном примере и примерах из упражнений 26 и 27 определите, являются ли показанные вызовы метода допустимыми с точки зрения закона Деметера. Первый пример написан на языке Java. (Ответом, в Приложении В.)

public void showBalance(BankAccount acct) {

Money amt = acct.getBalance;

printToScreen(amt.printFormat);

}

26. Этот пример также написан на языке Java. (Ответ см. в Приложении В.)

public class Colada {

private Blender myBlender;

private Vector myStuff;

public Colada {

myBlender = new Blender;

myStuff = new Vector));

}

private void doSomething {

myBlender.addlngredients(myStuff.elements);

}

}

27. Этот пример написан на языке С + +. (Ответ см. в Приложении В.)

void processTransaction(BankAccount acct, int) {

Person *who;

Money amt;

amt.setValue(123.45);

acct.setBalance(amt);

who = acct.getOwnerQ;

markWorkflow(who->name, SET BALANCE);

}

27

Метапрограммирование

Никакая гениальность не спасает от любви к подробностям.

Восьмой закон Леви

Подробности смешивают все в нашей первоначальной программе – особенно если эти подробности часто меняются. Каждый раз, когда нам приходится входить в программу и вносить в нее изменения для того, чтобы привести ее в соответствие с изменившейся бизнес-логикой, законодательством или вкусами руководства, мы рискуем нарушить систему, т. е. внести в нее новый дефект.

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

Динамическая конфигурация

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

  • Читать дальше
  • 1
  • ...
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • ...
Жанры
  • Романы
    • Исторические любовные романы
    • Эро литература
    • Современные любовные романы
    • Короткие любовные романы
    • Love Action
    • Остросюжетные любовные романы
    • Романы про измену
    • Прочие любовные романы
    • Любовно-фантастические романы
    • Зарубежные любовные романы
  • Приключения
    • Прочие приключения
    • Вестерны
    • Исторические приключения
    • Морские приключения
    • Путешествия и география
    • Зарубежные приключения
    • Приключения про индейцев
    • Природа и животные
  • Детективы
    • Техно триллер
    • Дамский детективный роман
    • Исторические детективы
    • Классические детективы
    • Шпионские детективы
    • Триллеры
    • Юридический триллер
    • Крутой детектив
    • Полицейские детективы
    • Медицинский триллер
    • Иронические детективы
    • Боевики
    • Криминальные детективы
    • Политические детективы
    • Маньяки
    • Зарубежные детективы
    • Прочие Детективы
    • Спецслужбы
  • Драматургия
    • Водевиль
    • Драма
    • Киносценарии
    • Мистерия
    • Пьесы
    • Сценарии
    • Трагедия
    • Зарубежная драматургия
  • Фантастика
    • Хентай
    • Ранобэ
    • Сянься
    • Дорама
    • Уся
    • Аниме
    • Космоопера
    • Юмористическая фантастика
    • Боевая фантастика
    • Героическая фантастика
    • Технофэнтези
    • Готический роман
    • Социально-философская фантастика
    • Попаданцы
    • Историческая фантастика
    • Ироническая фантастика
    • Зарубежная фантастика
    • Историческое фэнтези
    • Юмористическое фэнтези
    • Детективная фантастика
    • Эпическая фантастика
    • Мистика
    • Космическая фантастика
    • Фантастика: прочее
    • Постапокалипсис
    • Научная фантастика
    • Киберпанк
    • Альтернативная история
    • Ненаучная фантастика
    • РПГ
    • Стимпанк
    • Ироническое фэнтези
    • Ужасы и мистика
    • Сказочная фантастика
    • Фэнтези
    • Городское фэнтези
  • Эзотерика
    • Язычество
    • Фэн-шуй
    • Христианство
    • Религия
    • Зарубежная религиозная литература
    • Православие
    • Эзотерика
    • Хиромантия
    • Индуизм
    • Ислам
    • Протестантизм
    • Самосовершенствование
    • Буддизм
    • Католицизм
    • Астрология
    • Прочая религиозная литература
    • Иудаизм
  • Проза
    • Военная проза
    • Легкая проза
    • Сентиментальная проза
    • Советская классическая проза
    • Антисоветская литература
    • Афоризмы
    • Эпистолярная проза
    • Новелла
    • Семейный роман
    • Рассказ
    • Классическая проза
    • Эпопея
    • Эссе
    • Проза прочее
    • Повесть
    • Магический реализм
    • Современная проза
    • Контркультура
    • Роман
    • Историческая проза
    • Русская классическая проза
    • Феерия
  • Стихи и поэзия
    • Визуальная поэзия
    • Эпическая поэзия
    • в стихах
    • Песенная поэзия
    • Поэзия
    • Палиндромы
    • Cтихи, поэзия
    • Зарубежная поэзия
    • Верлибры
    • Экспериментальная поэзия
    • Лирика
    • Басни
    • Драматургия
  • Юмор
    • Зарубежный юмор
    • Юмористические стихи
    • Сатира
    • Прочий юмор
    • Комедия
    • Юмористическая проза
    • Анекдоты
  • Дом и досуг
    • Рыбалка
    • Охота
    • Здоровье детей
    • Домашние животные
    • Воспитание детей
    • Отдых / туризм
    • Зарубежная прикладная литература
    • Прочее домоводство
    • Прикладная литература
    • Домашнее хозяйство
    • Кулинария
    • Медицина и здоровье
    • Сделай сам
    • Спорт
    • Хобби и ремесла
    • Образовательная литература
    • Сад и Огород
    • Здоровье и красота
    • Развлечения
    • Коллекционирование
    • Секс / секс-руководства
  • Образование и наука
    • Боевые искусства
    • Органическая химия
    • Обществознание
    • Военная история
    • Ветеринария
    • Ораторское искусство / риторика
    • Физика
    • Химия
    • Семейная психология
    • Военная техника и вооружение
    • Иностранные языки
    • Прочая научная литература
    • Психотерапия и консультирование
    • Биохимия
    • Cпецслужбы
    • Астрономия и Космос
    • Школьные учебники
    • Учебная и научная литература
    • Учебники
    • Государство и право
    • Психология
    • Литературоведение
    • История
    • Научно-популярная литература
    • Политика
    • Детская психология
    • Юриспруденция
    • Шпаргалки
    • Педагогика
    • Физическая химия
    • Медицина
    • Биофизика
    • Языкознание
    • Зарубежная образовательная литература
    • Зоология
    • Геология и география
    • Краткое содержание
    • Зарубежная психология
    • Саморазвитие / личностный рост
    • Технические науки
    • Религиоведение
    • Военное дело
    • Личная эффективность
    • Аналитическая химия
    • Рефераты
    • Экология
    • Философия
    • Альтернативная медицина
    • Математика
    • Культурология
    • Военное дело: прочее
    • Ботаника
    • Биология
  • Словари и Энциклопедии
    • Бизнес-справочники
    • Справочники
    • Словари
    • Руководства
    • Энциклопедии
    • Словари, справочники
    • Путеводители
    • Прочая справочная литература
    • Зарубежная справочная литература
  • Финансы и бизнес
    • Отраслевые издания
    • Бухучет и аудит
    • Недвижимость
    • Деловая литература
    • Ценные бумаги
    • Внешнеэкономическая деятельность
    • Торговля
    • Зарубежная деловая литература
    • О бизнесе популярно
    • Стартапы и создание бизнеса
    • Корпоративная культура
    • Управление, подбор персонала
    • Маркетинг, PR, реклама
    • Личные финансы
    • Работа с клиентами
    • Менеджмент
    • Интернет-бизнес
    • Поиск работы, карьера
    • Малый бизнес
    • Делопроизводство
    • Государственное и муниципальное управление
    • Банковское дело
    • Экономика
  • Книги по IT
    • Прочая компьютерная литература
    • Базы данных
    • Цифровая обработка сигналов
    • Программное обеспечение
    • Интернет
    • Программирование
    • Зарубежная компьютерная литература
    • ОС и Сети
    • Компьютерное «железо»
  • Техника
    • Архитектура
    • Автомобили и ПДД
    • Строительство и сопромат
    • Металлургия
    • Транспорт и авиация
    • Радиоэлектроника
  • Древние книги
    • Зарубежная старинная литература
    • Мифы. Легенды. Эпос
    • Древневосточная литература
    • Древнерусская литература
    • Прочая старинная литература
    • Античная литература
    • Европейская старинная литература
  • Документальное
    • Историческая литература
    • Публицистика
    • Научпоп
    • Критика
    • Книги о войне
    • Истории из жизни
    • Военная документалистика
    • Зарубежная публицистика
    • Биографии и мемуары
    • Прочая документальная литература
  • Прочее
    • Интерьеры
    • Газеты и журналы
    • Театр
    • Музыка
    • Комиксы / манга
    • Зарубежная классика
    • Современная зарубежная литература
    • Изобразительное искусство, фотография
    • Мода и стиль
    • Искусство и Дизайн
    • Зарубежная литература о культуре и искусстве
    • Фанфик
    • Подростковая литература
    • Шахматы
    • Кино
    • Культура и искусство
    • Недописанное
    • Классическая литература
  • Без Жанра
    • Разное
    • Иностранная литература
  • Народные
    • Загадки
    • Народные сказки
    • Народные песни
    • Былины
    • Частушки
    • Фольклор: прочее
    • Пословицы, поговорки
  • Книги Для Детей
    • Детские остросюжетные
    • Сказки
    • Детские стихи
    • Прочая детская литература
    • Детская образовательная литература
    • Книги для дошкольников
    • Детская фантастика
    • Детские детективы
    • Книга-игра
    • Детский фольклор
    • Буквари
    • Детская проза
    • Детская познавательная и развивающая литература
    • Внеклассное чтение
    • Зарубежные детские книги
    • Детские приключения
Сейчас Читают
Сердце Дракона. Том 12
Сердце Дракона. Том 12
Клеванский Кирилл Сергеевич
Черный маг императора 3
Черный маг императора 3
Герда Александр
Ветер перемен
Ветер перемен
Ланцов Михаил Алексеевич
Идеальный мир для Социопата 3
Идеальный мир для Социопата 3
Сапфир Олег
Отец моего жениха
Отец моего жениха
Салах Алайна
Рождение победителя
Рождение победителя
Каменистый Артем
Венецианский купец
Венецианский купец
Распопов Дмитрий Викторович
Совершенный: пробуждение
Совершенный: пробуждение
Vector
Последний попаданец 9
Последний попаданец 9
Зубов Константин
Шведский стол
Шведский стол
Ланцов Михаил Алексеевич

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: