Не трогайте мышь и отойдите от клавиатуры





Скачать 360.39 Kb.
НазваниеНе трогайте мышь и отойдите от клавиатуры
страница3/8
Дата публикации21.08.2013
Размер360.39 Kb.
ТипДокументы
100-bal.ru > Философия > Документы
1   2   3   4   5   6   7   8

Почаще изобретайте колесо


Джейсон П. Сэйдж (Jason P. Sage)

Пользуйтесь тем, что уже существует – глупо изобретать колесо заново...

Приходилось вам слышать подобный совет? Наверняка. Каждый разработчик или студент часто слышит такие замечания. Но почему? Почему на изобретение колеса заново смотрят так косо? Потому что существующий код, как правило, работает. Он уже прошел какой-то контроль качества и строгое тестирование и успешно применяется. Кроме того, время и силы, потраченные на изобретение старого, едва ли окупятся в той же мере, как использование существующего продукта или кода. Стоит ли браться за изобретение колеса? Зачем? В каких случаях?

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

Изобретение колеса – это не просто упражнение в правильном размещении конструкций кода: оно связано с получением глубокого знания внутреннего устройства различных существующих компонент. Вы знаете, как работают администраторы памяти бля, кто это?? :-) распределители памяти что ли? ? Виртуальные страницы? Можете сами их реализовать? А как насчет двунаправленных связных списков? Классов динамических массивов? Клиентов ODBC? Можете написать графический интерфейс пользователя, который работает так же, как известный и любимый вами тот что вы знаете и любите (я фанат Норы Галь, а она велит везде совать глаголы)? Можете сами создать виджет для веб-браузера? Знаете, когда нужно писать систему с мультиплексированием, а когда – многопоточную? Как решить, какая база данных лучше – в файле или в памяти?

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

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

Запоминать факты и читать умные книги важно, но в становлении выдающегося программиста приобретение опыта имеет такое же значение, как накопление фактов. Изобретение колеса так же важно для образования программиста, как поднятие тяжестей для культуриста. Очень хорошая глава, не считая администраторов памяти :-)

Не поддавайтесь соблазнам паттерна Singleton


Сэм Сааристе (Sam Saariste)

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

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

  • Требование единственности экземпляра часто оказывается мнимым. Во многих случаях это чистое предположение, что в будущем не понадобятся дополнительные экземпляры. Широковещательное объявление о таких спекулятивных свойствах во время проектирования приложения чревато возникновением в какой-то момент неприятностей. Технические требования подвергаются изменениям. Хорошие проекты это учитывают. Синглтоны – нет.

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

  • Синглтоны также неявно сохраняют состояние, что снова мешает модульному тестированию. Модульное тестирование предполагает, что тесты независимы друг от друга, а потому их можно выполнять в любом порядке, а программу можно установить в заданное состояние перед выполнением каждого модульного теста. Как только появляются синглтоны с изменяемым состоянием, обеспечить такие условия может быть трудно (не люблю читать такие обороты, может просто «будет труднее»?). Кроме того, такое глобально доступное устойчивое состояние затрудняет понимание смысла кода, особенно в многопоточной среде.

  • Многопоточность создает дополнительные ловушки в использовании паттерна синглтона. Поскольку простая блокировка доступа не очень эффективна, получила распространение так называемая блокировка с двойной проверкой (DCLP). К несчастью, это может быть еще одним видом рокового влечения (роковое влечение к паттерну синглтон? :-) или к кому). Оказалось, что во многих языках DCLP не является потоково-безопасной, и даже в тех, где это не так, сохраняются возможности для сохраняется риск ее неправильной работы. (возможность неправильного – нескладно как-то, возможность это ведь как правило что-то хорошее)

Избавление от синглтонов может стать в окончательном итоге сложной задачей:

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

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

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

Поэтому ограничьте использование паттерна Singleton теми классами, для которых действительно не должно никогда создаваться больше одного экземпляра. Не пользуйтесь глобальной точкой входа в синглтон в произвольном коде. Прямое обращение к синглтону должно происходить лишь в нескольких хорошо определенных местах, откуда оно может передаваться другому коду через его интерфейс. Этот другой код ни о чем не знает, поэтому он не зависит от того, как реализован интерфейс – через синглтон или какой-то другой класс. В итоге разрушаются связи, мешающие модульному тестированию, и облегчается сопровождение. Так что надеюсь, что когда вам в следующий раз придет в голову реализовать или использовать синглтон, вы дважды подумаете, стоит ли это делать.
1   2   3   4   5   6   7   8

Похожие:

Не трогайте мышь и отойдите от клавиатуры iconПрограмма по формированию навыков безопасного поведения на дорогах...
Разработать обучающую программу, выдающую структурированную и наглядную информацию о работе клавиатуры, буфера клавиатуры, обработчиков...
Не трогайте мышь и отойдите от клавиатуры iconЛитература: Детские народные подвижные игры: Кн для воспитателей...
Игру начинает первая пара: кот ловит мышь, а та бегает вокруг играющих. В опасный момент мышь может спрятаться в коридоре, образованном...
Не трогайте мышь и отойдите от клавиатуры iconПрограмма по формированию навыков безопасного поведения на дорогах...
СанПиН 4 178-02). В 2009-2010 учебном году кабинет был оснащен 10 новыми ученическими компьютерами (монитор, системный блок, мышь,...
Не трогайте мышь и отойдите от клавиатуры iconКурсовой проект по дисциплине «Системы программирования и операционные системы»
Резидентный обработчик прерываний от клавиатуры с подключением до системного обработчика
Не трогайте мышь и отойдите от клавиатуры iconИстория
Системные требования: Pentium 90,Win 95/NT, 16 Мб озу, монитор с разрешением 640х480, HiColor (не менее 32 тыс цветов), 4х cd-rom,...
Не трогайте мышь и отойдите от клавиатуры iconПрограмма по формированию навыков безопасного поведения на дорогах...
Цель урока: освоение клавиатуры — важнейшего устройства ввода информации в память компьютера
Не трогайте мышь и отойдите от клавиатуры iconПрограмма по формированию навыков безопасного поведения на дорогах...
С помощью чего проще набрать текст? Двухкнопочной мыши или 102 клавишной клавиатуры?
Не трогайте мышь и отойдите от клавиатуры iconПрограмма по формированию навыков безопасного поведения на дорогах...
Цель: познакомить учащихся с различными устройствами ввода информации в компьютер. Изучить назначения клавиш клавиатуры
Не трогайте мышь и отойдите от клавиатуры iconКомпьютер (арм учителя: монитор+системный блок+клавиатура+мышь)
Начальный курс географии 7 кл. География. Наш дом Земля. Материки, океаны, народы и страны
Не трогайте мышь и отойдите от клавиатуры iconМузыка
Подробная информация о более чем 100 музыкальных инструментов. История возникновения инструментов, возможность прослушать каждый...
Не трогайте мышь и отойдите от клавиатуры iconЛандер Кени «О чем думает Стив»»
Гений цифровой эры, придумавший компьютерную мышь, айфон и многое другое, без чего наша жизнь была бы совсем другой
Не трогайте мышь и отойдите от клавиатуры iconПрограмма по формированию навыков безопасного поведения на дорогах...
«Свидетель» уже знала о том, что владеет великим сценарием и хотела присвоить ему звание Лучшего Оригинального Сценария еще до того...
Не трогайте мышь и отойдите от клавиатуры iconВ е д е н и е
Кроме того, к компьютеру могут подключаться принтер для вывода на печать текстовой и графической информации; мышь —устройство, облегчающее...
Не трогайте мышь и отойдите от клавиатуры iconКонспект занятия кружка «Компьютерный мир» 1 кл по теме «Манипулятор «мышь»
Построение парами. Переход на площадку. Построение в шеренгу. В центре площадки ребята образуют круг и делятся на две команды
Не трогайте мышь и отойдите от клавиатуры iconПрограмма по формированию навыков безопасного поведения на дорогах...
Продолжение темы Norton Utilities Программа Speed Disk. Программа WipeInfo и другие утилиты. Создание системной дискеты. Драйверы...
Не трогайте мышь и отойдите от клавиатуры iconТема урока: «Компьютер и его основные устройства». Тип урока
Опорные понятия: Периферийные устройства: системный блок, монитор, принтер, сканер, клавиатура, мышь, аудио система


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск