Изобретение колеса — это не просто упражнение в правильном размещении конструкций кода: оно требует глубокого понимания внутреннего устройства различных готовых компонентов. Вы знаете, как работают менеджеры памяти? Виртуальные страницы? Можете сами их реализовать? А как насчет двунаправленных связных списков? Классов динамических массивов? Клиентов ODBC? Можете написать графический интерфейс пользователя, который работает так же, как тот, что вы сейчас используете, и который вам нравится? Можете сами создать виджет для браузера? Знаете, когда нужно писать систему с мультиплексированием, а когда — многопоточную? Как решить, какая база данных лучше — в файле или в памяти?
Большинству разработчиков никогда не приходилось создавать такие базовые программные компоненты, а потому они лишь поверхностно разбираются в работе этих «колес». В результате все подобные модули и библиотеки считаются таинственным черным ящиком, который каким-то образом работает. Если вы видите только поверхность воды, этого недостаточно для понимания опасностей, таящихся в ее глубине. Если вы ничего не знаете о создании более низкоуровневого программного обеспечения, это ограничивает вашу способность создавать действительно выдающиеся продукты.
Попытаться изобрести колесо и потерпеть неудачу полезнее успеха с первой же попытки. Уроки, полученные методом проб и ошибок, имеют эмоциональную составляющую, которую простое чтение технической книги не способно создать!
Запоминать факты и читать умные книги важно, но в становлении выдающегося программиста приобретение опыта имеет такое же значение, как накопление фактов. Изобретение колеса так же важно для образования и мастерства программиста, как поднятие тяжестей для культуриста.
Не поддавайтесь очарованию шаблона Singleton
Сэм Сааристе
Шаблон Singleton решает многие ваши проблемы. Вы знаете, что вам нужен единственный экземпляр. Вы получаете гарантию, что этот экземпляр будет инициализирован перед использованием. Архитектура остается простой благодаря наличию глобальной точки доступа. Все прекрасно. Ну что может не понравиться в этом классическом шаблоне проектирования?
Если подумать, то весьма многое. Как ни соблазнительно применение синглтонов, они, как показывает опыт, приносят больше вреда, чем пользы. Они затрудняют тестирование и усложняют сопровождение. К сожалению, это понимание не столь распространено, как хотелось бы, и синглтоны сохраняют свое обаяние для множества программистов. Хотя есть основания задуматься, так ли они хороши:
•
•
•
•
Избавление от синглтонов может стать в окончательном итоге сложной задачей: