Предисловие: В настоящее время я пишу книгу для опытных программистов Delphi на тему создания хорошо спроектированных программ с использованием методов объектно-ориентированного программирования в Delphi.
Эта книга все еще находится в процессе написания. Я надеюсь, что каждый сможет получить предварительное представление о теме и языковом стиле этой книги. В то же время вы можете высказать свое собственное мнение. Как автор, я надеюсь, что эта книга станет классикой среди оригинальных книг Delphi в Китае. Возможно, это не удастся, но я постараюсь изо всех сил.
По вышеуказанным причинам у меня нет возможности выложить всю книгу (ха-ха, тогда ее никто не купит), поэтому последующие главы здесь размещаться не должны (возможно, будут какие-то отрывки).
Здесь я хотел бы поблагодарить тех друзей, которые поддержали меня и высказали свое мнение (я разместил это на форуме Delphi csdn и получил множество ответов, спасибо всем). Я также хотел бы поблагодарить мою девушку Эсан, которая всегда поддерживала и вдохновляла меня. Все, что я могу сделать, это хорошо написать и отплатить всем. Я знаю, что все (включая меня) слишком ждали хорошей книги!
Глава 1. Новое понимание Delphi
Простоту — труднее всего достичь в мире: это предел опыта и конечная цель гения. —— Джордж Санд Вы уже опытный программист на Delphi и можете использовать Delphi, чтобы быстро написать красивую и практичную программу. Вы любите Delphi, она стала незаменимой частью вашей работы и учебы; Я предполагаю, что это правда, тогда у вас должны быть свои собственные причины или причины для выбора Delphi в качестве основного инструмента разработки. По крайней мере, я отвечаю всем вышеперечисленным предположениям. Теперь я хочу поделиться с вами причинами и причинами, по которым я выбрал Delphi, а также своим пониманием Delphi. Вы можете считать меня фанатиком, поддерживающим Delphi, хотя это заставит меня почувствовать, что вы относитесь ко мне слишком поверхностно. Я не признаю этого, но я не против. Потому что я действительно люблю ее. Версия Delphi, с которой я впервые столкнулся, была 3.0. В то время я просто использовал ее как инструмент RAD, такой как Visual Basic. Однако со временем Delphi 3, Delphi 4, Delphi 5, Delphi 6 и Kylix все глубже и глубже понимают Delphi. Это инструмент с богатым подтекстом, чем больше люди понимают ее, тем больше они становятся одержимы ею и тем больше они чувствуют себя неотделимыми от нее, хотя это все еще всего лишь инструмент. Паскаль — это язык, который уделяет внимание эстетике программ — нет сомнений, что код Паскаля — самый красивый код — Delphi, основанный на Object Pascal (язык Паскаль, поддерживающий объектно-ориентированность), доводит эту красоту до крайности. Теперь вы можете открыть Delphi, выбрать меню «Справка» - «О программе», когда появится окно «О программе», зажать клавишу Alt и последовательно ввести «команда». Что вы видите? Да, список разработчиков Delphi, давайте поблагодарим их за создание таких инструментов разработки, которые больше похожи на произведения искусства!
1.1 «Ориентированная на человека» теория инструментов разработки
На различных форумах по программированию часто можно увидеть такие вопросы: «Есть ли будущее у VB?»; «Будет ли Delphi ликвидирован?»; «Будет ли MFC заменен .NET?»… На самом деле, Когда этот вопрос был поднят, никто не мог дать ответ. Потому что будущее технологии или продукта не полностью определяется самой технологией, но также связано с такими факторами, как рыночный спрос и направление развития компании-производителя. И что нас должно волновать, так это ответы на эти вопросы? Я думаю, что нет. Мы знаем, что все в мире состоит из атомов; постоянно меняющиеся программы в конечном итоге состоят из трех структур: последовательность, цикл и ветвление. И MFC VC, и VCL Delphi построены с использованием объектно-ориентированной технологии (независимо от степени объекта); -ориентированный). Когда вы смотрите за пределы поверхностной видимости вещей, вы видите ту же самую или подобную суть! Освоив суть, вы обнаружите, что проявление внешности настолько естественно. Представьте себе, когда вы сможете полностью отказаться от MFC, как Хоу Цзе (автор книги «Введение в MFC»), будете ли вы по-прежнему беспокоиться о том, что MFC будет заменен определенной структурой? С этой точки зрения для профессионального программиста понятие программирования остается неизменным. В процессе обнаружения, анализа и решения проблем существует определенная закономерность. Как только вы освоите эту закономерность, разные языки программирования и разные среды разработки найдут для вас что-то общее. Я думаю, что C++ — это то, чем должен овладеть каждый профессиональный программист. Конечно, это означает не просто изучение его синтаксиса (можно даже игнорировать изучение некоторого синтаксиса), а изучение методов объектно-ориентированного проектирования и программирования с помощью C++. Потому что C++ широк и глубок, потому что C++ всемогущ. На C++ вы сможете узнать все об объектно-ориентированной теории. После изучения C++ вас преобразит. Потому что спорные возможности, существующие в объектно-ориентированной теории (например, множественное наследование), поддерживаются в C++. Только после того, как вы его освоите, вы сможете сделать свой собственный выбор (за или против). Освоив объектно-ориентированную теорию, будь то C++, Object Pascal, Java или даже C#, вы почувствуете их сходство. Означает ли это, что между инструментами разработки нет других различий (возможно, их следует называть интегрированными средами разработки, но ниже по привычке я буду называть их инструментами разработки), кроме поддерживаемых ими языков? Конечно, нет. Инструменты разработки — это инструменты, помогающие реализовать ваши идеи, которые представляют собой надстройки, построенные на базовых идеях. Степень, в которой инструмент разработки поддерживает концепцию, которую вы хотите реализовать, и степень, в которой он упрощает процесс реализации, зависит от инструмента разработки. Инструменты разработки для программистов — как оружие для солдат. Если оружие не под рукой, половина из них будет побеждена еще до боя. Мне всегда нравился рекламный слоган мобильных телефонов Nokia: «Технологии ориентированы на людей!» Да, «люди» — это основа, и миссия инструментов — помогать людям быстрее и проще достигать своих целей. Поэтому инструменты разработки также должны быть ориентированы на людей! Как программист и самый непосредственный пользователь инструментов разработки, я надеюсь, что инструменты разработки, которые я использую, действительно могут стать моими партнерами и помощниками. Они дадут мне чувство свободы и позволят мне свободно ориентироваться в мире кода. меня и приспособиться ко мне, а не надевать на меня кандалы! Сегодня на платформе Windows существует множество инструментов разработки на выбор: Visual C++, Visual Basic, Delphi, C++ Builder, JBuilder... Они основаны на разных языках программирования и верны концепциям продуктов разных компаний. С этой точки зрения разница между ними очень велика. Итак, какие инструменты разработки являются превосходными, продуманными и ориентированными на людей? Мои стандарты должны соответствовать следующим четырем пунктам: 1. Уметь упростить задачу, которую нужно решить, и быстро реализовать ее с помощью определенной концепции. 2. Не скрывать никаких деталей, которые вы хотите знать. 3. Уметь игнорировать детали, которые вам не нужны. знать 4. Возьмите на себя инициативу: Существуют ли инструменты разработки, соответствующие четырем вышеперечисленным пунктам, подходящие для программистов разных уровней? Мой ответ: да! Это Дельфи! Она все упрощала, но никогда не мешала мне искать истину. Вы можете выполнять задачи в упрощенном виртуальном мире VCL, который она создала для вас. Вы также можете углубиться в мир VCL, чтобы изучить его взаимосвязь с реальным миром (то есть реальным интерфейсом платформы Windows) и изучить дизайн его Framework. Вы также можете расширить этот виртуальный мир VCL в соответствии со своими потребностями. Мне повезло, что такой инструмент разработки существует, и еще больше мне повезло, что я могу выбрать ее и завершить с ней свою работу! (В действительности язык программирования и инструменты разработки, используемые в проекте, часто находятся вне вашего контроля и будут ограничены многими факторами. Например: аппаратная среда клиента, среда операционной системы, среда разработки, стоимость и лицензирование инструментов разработки. Сертификат и т. д. Поэтому мне очень повезло, что я могу выбирать свои любимые инструменты разработки для разработки.) Мой подход — изучение объектно-ориентированных концепций с помощью C++ и использование Delphi для решения реальных задач. В то же время это также подтверждает поговорку: учитесь в трудных местах и применяйте в простых местах. Настоящие программисты используют C++, умные программисты используют Delphi. Что ж, действительно умные программисты используют C++, чтобы понять Delphi!
1.2 Еще преимущества Delphi
Я использовал множество основных инструментов разработки, почему я выбрал Delphi? Возможно, это потому, что я не знаком с другими инструментами разработки, но превосходство самого Delphi является, по крайней мере, одной из причин! Что такого замечательного в Delphi? n Эффективная разработка Delphi — это RAD (инструмент быстрой разработки приложений), который имеет визуальную среду разработки. Конечно, существует множество инструментов разработки с похожими функциями (например, Visual Basic), но Delphi обладает следующими уникальными особенностями: 1. ) Delphi действительно объектно-ориентирован. Все компоненты библиотеки VCL, построенные по объектно-ориентированной технологии, могут быть унаследованы для создания новых компонентов, включая класс формы TForm. Напротив, компонентам ActiveX недостает такой гибкости. 2) Технология Delphi CodeInsight (т. е. функция автодополнения кода) основана на информации компилятора, тогда как VB использует информацию библиотеки типов. Преимущество использования информации компилятора заключается в большей гибкости. Однако программисты часто жалуются, что подсказки кода Delphi занимают слишком много времени. На самом деле, я лично чувствую, что, привыкнув к его скорости, я могу испытывать чувство ритмического удовольствия. n Эффективный язык Delphi основан на языке Object Pascal. Это действительно объектно-ориентированный, но элегантный язык. Он не уступает различным другим объектно-ориентированным языкам по функциональной целостности, но в то же время не жадничает до большего и слепо увеличивает сложность. Это позволяет разработчикам получать полную поддержку при проектировании с использованием различных шаблонов без необходимости учитывать слишком много деталей языка/компилятора во время реализации. n Эффективность компиляции Можно сказать, что Delphi является самым быстрым компилятором локального кода языка высокого уровня на платформе Windows. Каковы преимущества быстрой компиляции? Быстрый компилятор позволяет часто переключаться между изменением кода, компиляцией и запуском. По крайней мере, я очень привык к такому способу работы: запустите программу, чтобы увидеть эффект, выйдите из программы, измените небольшой объем кода, а затем запустите программу. А компилятор Delphi никогда не заставляет меня ждать. n Эффективное выполнение Delphi не только имеет высокую скорость компиляции, но и эффективность выполнения сгенерированного целевого кода очень высока. Delphi и C++Builder используют один и тот же внутренний оптимизатор, поэтому сгенерированный им код так же эффективен, как и код, сгенерированный превосходным компилятором C++. Delphi генерирует полностью собственный код, поэтому исполняемый файл, полученный в результате компиляции Delphi, может исполняться и распространяться независимо (это очень важно для разработки «зеленого программного обеспечения»). Никакой другой поддержки во время выполнения не требуется. Конечно, вы также можете выбрать динамическую компиляцию, что позволяет значительно сократить длину исполняемого файла. Однако в этом случае при распространении программы необходимые файлы времени выполнения должны распространяться одновременно. Эффективное обслуживание. C++ дает программистам широкие возможности принятия решений, поэтому он очень мощный. Однако в то же время использование C++ для написания превосходного объектно-ориентированного кода требует от программистов определенных качеств. Программисты Delphi будут в определенной степени ограничены рамками, предоставляемыми VCL (конечно, в Delphi можно полностью избавиться от программирования VCL. Условно говоря, создавать хорошо спроектированный код проще). Visual Basic вообще не предоставляет механизма объектно-ориентированного программирования (VB6.0 и предыдущие версии основаны на объектах, а не на объектно-ориентированном подходе). Превосходство структуры кода значительно снижает затраты на обслуживание программного обеспечения. По всем вышеперечисленным причинам я выбираю Delphi!
1.3 Тема этой книги
Обычно мы пишем много кода для компании, для себя или для друзей. Иногда, чтобы проверить идею или изучить определенную технологию, я пишу экспериментальный код. Жизненный цикл такого кода очень короткий и практически не требует обслуживания. Вы можете просто писать его как угодно. Однако, когда вы действительно хотите завершить проект, дизайн кода очень важен. Потому что такой код требует длительного сопровождения, постоянной модификации или улучшения. Беспорядочный дизайн кода затрудняет или делает невозможным обслуживание, а изменение такого кода означает больше ошибок или катастроф. Следовательно, прежде чем писать код, его необходимо спроектировать. Упомянутый здесь дизайн не относится к функциональному дизайну, а относится к проектированию структуры кода программистами перед кодированием, чтобы код было легче понимать и поддерживать в будущем. Я часто слышу поговорку: жизнь программы программиста составляет всего 35 лет. Я никогда не верю, что продолжительность жизни программиста составляет всего 35 лет. Может быть, после 35 лет способность к реализации (фактически способность к мастерству) может снизиться, а способность к проектированию не уменьшается, а увеличивается с увеличением опыта. Это самое ценное. Костяк зарубежных команд разработчиков программного обеспечения составляют, как правило, люди в возрасте около 40 лет. Это мастера-программисты. Так называемые программисты, которые не могут быть программистами после 35 лет, вообще не имеют права называться программистами. Программная инженерия должна превратить программистов в программистов и стать звеном сборочного конвейера, а работу по проектированию выполняют специализированные дизайнеры (например, дизайнеры фреймворков). Возможно, тенденция заключается в усовершенствовании разделения труда, но довольны ли мы тем, что мы программисты, или надеемся вырасти в дизайнеров, зависит от нашего видения и усилий. Откройте свой кругозор, вместо того, чтобы ограничивать себя и предаваться «достижению мастеров». Способность к реализации – это основа. Только при наличии определенной способности к реализации мы можем расти. Однако это лишь необходимое, а не достаточное условие. В противном случае это было бы похоже на то, как если бы вы взобрались на склон горы и думали, что достигли вершины горы, и застопорились. Тогда вы можете быть только программистом, а срок жизни вашей программы всего 35 лет. Я надеюсь, что после того, как вы поняли эту точку зрения, эта книга поможет вам начать работу. Книги, посвященные Delphi, изданные в Китае, в основном объясняют реализацию. Название этой книги — «Прорыв Delphi Masters». Итак, предположим, что вы теперь являетесь мастером Delphi. Поэтому в этой книге не будет рассмотрено слишком много методов реализации. Несмотря на наличие примеров кода, основное внимание уделяется проектированию архитектуры, а не ее реализации. К этому моменту вы, возможно, уже догадались о теме этой книги: как использовать объектно-ориентированную технологию в Delphi для создания хорошо спроектированного кода. На мой взгляд, написание кода — это художественное творчество. Элегантный код не требует пояснений и не требует чрезмерных комментариев. Когда комментариев слишком много, пора задуматься, разумен ли дизайн. Написание книги также должно быть художественным творением. Если вы сможете художественно рассказать читателям о своем понимании и опыте, не нуждаясь в слишком большом количестве «аннотаций» (ерунды, занимающей место), она будет очень успешной. Я надеюсь, что смогу это сделать, по крайней мере, постараюсь изо всех сил.
1.4 Резюме
Я считаю, что мне неизбежно встать на путь программирования. Быть профессиональным программистом — это тоже то, о чем я мечтал и реализовал. Однако следует сказать, что появление Delphi и то, что я узнал, ознакомился, увлекся ею и стал частью моей работы, стало неожиданной неожиданностью. Я хочу сказать, что вам следует быть более настойчивыми в отношении себя. Когда вы четко позиционируете себя и четко знаете путь, который выбрали, вам больше не нужно иметь никаких сомнений и сомнений и просто продолжать идти. Хотя в конечном итоге я могу и не добиться успеха (конечно, определение успеха у всех разное), я люблю то, что люблю, без каких-либо сожалений!