1. Разговор старика
Delphi VS VC — уже очень старая тема, но я все равно хочу поговорить об этом здесь. Это все мое мнение. Если вы не согласны, смейся.
Преимущества RAD очевидны. С точки зрения дизайна интерфейса Delphi на самом деле лучше VC. Я хочу написать нетрадиционную прозрачную кнопку. В Delphi мне нужно только найти элемент управления, щелкнуть мышью и изменить заголовок. А как насчет VC? Для этого требуется не менее 10 строк кода. Конечно, подход MFC помогает людям понять основные принципы Windows, но инкапсуляция ООП не отражена должным образом. Разработчикам необходимо понимать все основные принципы, прежде чем они смогут писать код. Для меня и большинства быть новичком — это пытка, потому что в этом нет необходимости. Да, сроки разработки всегда сжаты, а времени всегда не хватает. Мы не можем ожидать, что программисты знают все аспекты программирования для Windows. Некоторые люди много знают о видео, а некоторые хорошо разбираются в сетях, но никто не является универсалом и не является хорошим специалистом. вообще нереально, поэтому инкапсуляция очень важна. Если каждый раз, когда я разрабатываю новый продукт, мне придется тратить 30% и более своего времени на прозрачную кнопку или красивый интерфейс, то я прыгну в реку :) Delphi действительно лучше MFC с точки зрения интерфейса! Конечно, это не значит, что MFC не может создавать красивые интерфейсы, просто это занимает слишком много времени и того не стоит.
Действительно ли RAD сводится к преимуществам? Ни один. По крайней мере, не для новичков, потому что это заставляет людей неправильно понимать, что программирование — это всего лишь перемещение мыши и перемещение рамки. Конечный результат заключается в том, что люди думают, что Delphi используется только для написания интерфейсов, а нижний уровень ничего не может сделать. Кажется, все программисты MFC говорят о программистах Delphi: «Помимо красивого интерфейса, что еще ваша программа может делать не так?» В самом деле, кроме DDK, что нельзя разработать на Delphi? Какого файла заголовка API нет в Delphi? Borland не конвертировал, но JEDI конвертировал его. Даже если JEDI не конвертировал, это то же самое, если вы сделаете это самостоятельно. Если вы дадите мне заголовочный файл C, я смогу его преобразовать. должна быть обязательной документацией для каждого программиста Delphi. После преобразования заголовочных файлов остается только начать писать. То, что умеет MFC, умеет и Delphi! видео? сеть? директх? Аудио? Чего не может Delphi?
2. Подпроцесс
При написании события многие люди просто начинают его писать. Независимо от того, насколько длинным является код или сколько действий делается, пока это делается в событии, они просто записывают его в своей голове. у них не будет возможности начать, когда они пересмотрят его несколько месяцев спустя, потому что фрагмент кода слишком длинный. Так почему бы не разбить фрагменты кода на части? Внимание человека ограничено, и у вас закружится голова, если вы прочитаете более 100 строк кода за один раз. Старшие специалисты Delphi сказали мне одно: все процессы (здесь процесс включает PROcedure и функцию) не должны превышать 25 строк! Поскольку от такой длины кода у вас не закружится голова, вы легко поймете, что делает процесс.
Так как же разобрать то, что изначально было сделано на мероприятии? Методов много, мой опыт модульный. Например, если в событии нужно выполнить много разных действий, то разные действия преобразуются в разные подпроцессы, а затем вызываются в основном процессе. Большинство основных процессов представляют собой некоторые оценки и циклы, и они будут. никакого конкретного процесса реализации. Это приведет к созданию множества фрагментов кода, но сохранит ваше внимание!
Принцип: Процесс делает только одну вещь, и делает это хорошо.
Ссылка: исходный код VCL. Глядя на исходный код VCL, можно увидеть, что он редко превышает 25 строк кода!
3. Имя параметра
Помню, когда я впервые изучал SDK, у меня закружилась голова, когда я увидел венгерскую нотацию, это было слишком! Я не могу этого вспомнить! Так что ненавижу этого изобретателя :) Наконец-то появился Delphi и времена танцев в кандалах прошли! В Delphi определение строки с именем переменной типа strDoSometing нелепо и ненужно. Пока ваша процедура короткая и глобальные переменные не отображаются, такой префикс вам не нужен. например:
процедура СубПро;
вар
я: байт;
Ширина, Высота: целое число;
начинать
Ширина: = GetWidth;
Высота: = GetHeight;
для i:= от 0 до 9 сделать
начинать
DrawThread := TDrawThread.Create;
DrawThread.Width := Ширина;
DrawThread.Height := Высота;
DrawThread.Старт;
конец;
конец;
Я думаю, что даже несмотря на то, что такой сегмент кода не имеет комментариев, легко понять, что он собирается делать. Поэтому, пожалуйста, удалите все префиксы и символы подчеркивания, программам Delphi они не нужны! В именах наших параметров требуется только глагол + существительное. Нам нужно только объяснить функцию этого параметра. Нам не нужны лишние вещи. Преимущество Паскаля в том, что кажется, что код говорит, а не читает с небес. В вашей голове код выглядит так, как вы думаете. Элегантность и простота — вот преимущества Паскаля, пожалуйста, соблюдайте их!
Принцип: Простота – это красиво!
4. Подокно
Многие люди напрямую управляют элементами управления в подокне при вызове подокна, например:
если SetAlarmParamDlg.ShowModal = MrOK, то
начинать
AlarmTimes := StrToInt(SetAlarmParamDlg.Edit1.Text);
AlarmArea := SetAlarmParamDlg.SpinEdit1.Value;
конец;
Боже мой, если завтра пользователи решат, что используемый вами Edit или SpinEdit выглядит некрасиво, и заменят его красивым элементом управления, что вы будете делать? Вам необходимо изменить не только код подокна, но и код основной формы. Конечно, программа с одним или двумя подокнами не причинит вам боли. А что, если это программа с более чем двадцатью подокнами? Это заняло целый день, но причина была просто в смене управления! Почему бы не попробовать другой метод? Если вы используете атрибуты для представления параметров, которые хотите использовать, вы сэкономите бесчисленное количество кодов.
//основная форма
если SetAlarmParamDlg.ShowModal = MrOK, то
начинать
AlarmTimes := SetAlarmParamDlg.AlarmTimes;
AlarmArea := SetAlarmParamDlg.AlarmArea;
конец;
// подчиненная форма
интерфейс
частный
FAlarmTimes: целое число;
FAlarmArea: целое число;
опубликовано
свойство AlarmTimes: целое число чтение FAlarmTimes запись FAlarmTimes;
свойство AlarmArea : чтение целого числа FAlarmArea запись FAlarmArea;
выполнение
...
FAlarmTimes := StrToInt(Edit1.Text);
FAlarmArea := SpinEdit1.Value;
МодальныйРезультат := MrOK;
...
Пока вы будете продолжать в том же духе, вы получите большие преимущества. Подокно выполняет только свою функцию, а взаимодействие между главным окном и ним осуществляется через атрибуты. Пока интерфейс остается неизменным, вносятся изменения в интерфейс. подокно не повлияет на главное окно. Как бы ни менялся внешний вид подокна, как заменялись элементы управления или как модифицировался код, вся программа остается прежней, менялся только интерфейс.
Принцип: Модульизируйте свои подокна. Windows также являются классами. Взаимодействие между классами должно соответствовать тому, как должны взаимодействовать окна.