Часть I. Комплект инструментов.
Чем профессионал отличается от любителя? На мой взгляд, наличием собственных стратегии и "средств производства". Совокупность собственных инструментов, которыми пользуется профи, преодолев определённый объём и качество структуризации, становятся его собственной инструментальной средой. Её использование сокращает большинство этапов разработки, увеличивает надёжность продукта, упрощает сопровождение.
Должен без ложной скромности признаться, что некоторые идеи, реализованные мною в своей среде, которую я называю "ASK Tools", впоследствии обнаружил в .NET. Конечно же, совсем на другом качественном уровне.
Много лет я работаю в качестве прикладного программиста БД. Все последние проекты, как закрытые (корпоративные), так и общедоступные, используют "ASK Tools" и некоторые принципы разработки, которые я считаю весьма полезными.
"ASK Tools" содержит только те инструменты, которые нужны повседневно при разработке бизнес-приложений. Здесь вы не найдёте работы с мультимедиа и прочих буржуазных излишеств – спартанская простота, которая кому-то покажется скудостью. Возможно, не без основания.
Состав "ASK Tools":
- AskMsg.* - файлы текстовых ресурсов
- AskClasses.dll - библиотека классов низкого уровня, которая используется всеми прочими компонентами из состава "ASK Tools"
- AskImg.dll – графическая библиотека, содержащая набор общеупотребительных изображений
- AskFunc.dll – библиотека функций
- ASK.bpl – пакет компонентов BCB, Delphi
- AskForm.dll – библиотека форм
Средствами "ASK Tools" реализовано простое средство формирования текстовых отчётов; на звание "генератор отчётов" оно не претендует, однако ж довольно удобно в использовании.
Пакет разбит на модули, содержащие ресурсы разных типов. Все они тесно переплетены между собой: например, текстовые и графические ресурсы используются как классами низкого уровня, так и компонентами, и формами общего назначения. Классы используют функции из AskFunc.dll и, в свою очередь, используются компонентами и формами, и т.д.
Ничего нового в такой организации нет: это отвечает идее повторного использования ресурсов, доведённой до совершенства разработчиками из Microsoft. Я полностью разделяю и поддерживаю эту идею, и хотел бы немного её разъяснить. Повторное использование ресурсов (текстовых, графических, программного кода) выгодно как разработчику, так и исполняющей системе (компьютеру, на котором выполняется программа).
Программист, однажды разработав и отладив ресурс (в том числе и программный код), в дальнейшем использует его многократно, что ускоряет процесс разработки, упрощает отладку за счёт локализации кода в одном лишь известном месте, и повышает надёжность софта.
Исполняющая система также не остаётся внакладе, ведь ресурсы, используемые разными приложениями, находятся в одном месте, что сокращает расход дискового пространства и объём оперативной памяти, занимаемой приложениями, - каждый ресурс загружается в память единожды, и в дальнейшем используется приложениями совместно.
Следствием моей приверженности этой идее является тот факт, что я никогда не собираю BCB и Delphi-приложения без использования runtime компонент. Более того, все ресурсы, необходимые для работы моих приложений, я отдаю заказчикам в виде отдельных дистрибутивов. За счёт этого дистрибутивы собственно прикладных программ получаются довольно компактными, что упрощает обновление версий через Интернет.