Последние записи
- Рандомное слайдшоу
- Событие для произвольной области внутри TImage
- Удаление папки с файлами
- Распечатка файла
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
9th
Мар
Стиль оформления delphi кода
Posted by Chas under Delphi, Общалка
Кое-что по оформлению хочу сказать. В настоящее время на своей работе пишу программу (программа до жути простая, хотя уделяю ей мало внимания, посему работаю над ней уже довольно долго).
Вадим Мошев
У меня изменились видения оформление кода. Итак, что могу сказать.
Про горизонтальные отступы, за огромную величину которых меня здесь немного упрекали.
Конечно, с одной стороны гигантские отступы хороши тем, что иерархия кода прослеживается довольно чётко:
for i:=1 to N do
for j:=i to M do
for k:=1 to S do
// а вот тут тело
Однако, бывает и так, что выше указанная конструкция может быть телом какого-либо другого оператора, и в этом случае «ширина» кода становится не очень приемлемой, особенно это ОЧЕНЬ неудобно, когда проводится пошаговая трассировка. При очередном нажатии клавиши F7 (в Dephi 7 пошаговая трассировка выполняется этой клавишей), окно редактора делает горизонтальную прокрутку влево до упора, после чего я наблюдал пустое окно, и для того чтобы вновь прочесть его, мне необходимо было крутить вправо (хотя это, может, зависит от IDE, возможно, в других нет такого, но в выше обозначенной такое есть, хотя, это, может быть, отключается в настройках, не знаю)
Теперь же «щедрость» на отступы у меня немного утихла, и теперь, чтобы код был «поуже», я бы написал это следующим образом:
for i:=1 to N do
for j:=i to M do
for k:=1 to S do
// а вот тут тело
Наверное, надо стремиться к тому, чтобы горизонтальной прокрутки вообще не возникало.
Следующее изменение коснулось объявления переменных. Скажу сразу: для кого-то это покажется не_новым.
Это изменение состоит в том, что каждая переменная объявляется с новой строчки (за исключением лишь некоторых, смысл которых очень прост, например параметры циклов), справа от объявления (от описания, скорей) ставится комментарий, поясняющий назначение переменной.
var
SortedArraysCount: Word; // Счётчки отсортированных массивов
i, j, k: word; // Просто параметры циклов, наверное
// можно было вообще не комментировать
IsMatrixSingular: boolean; // флаг показывающий сингулярность матрицы
IsStackEpty: boolean; // Флаг, показывающий пустоту стека
ProcessFailFilesCount: word; // количество файлов, обрабокта которых
// завершилась ошибкой
У меня такой способ сформировался благодаря написанию кода в стиле «вниз-вверх-вниз», когда нарушается порядок написания кода сверху-вниз и слева-направо. В частности бывает так, что перед тем, как продолжить написание кода, приходится объявить одну/несколько переменных. Поэтому здесь можно заметить, что переменные одного типа (например, boolean) объявлены в разных строках.
Ещё особенности:
Если комментарий длинный, его, как ни странно, целесообразно разбить на две части, при этом вторую часть комментария следует писать приблизительно с той же позиции, что начало этого комментария, или, возможно, немного правее. Во втором случае (на мой взгляд) будет чётче видна иерархия комментария, то есть, вторая часть — это не новый комменарий, а продолжение первого.
Несколько слов о наименовании переменных (возможно, кое о чём я уже говорил ранее).
- Если имя переменной логически состоит из нескольких слов, то каждое новое слово начинается с большой буквы (всё остальные маленькие, символ «_» как-то у меня не прижился).
- Переменные следует именовать так, чтобы, разделив её на составные слова, получилось бы правильно построеннео с точки зрения английского языка предложение (IsStackEmpty -> Is Stack Empty = Пуст ли стэк?). Здесь правда неудобство связано с тем, что уровень английского языка у всех разный, хотя программисты должны владеть им хорошо.
- (об этом ранее не писал). Некоторые названия переменных снабжаются специальными суффиксами/постфиксами, показывающими смысл этой переменной.
В частности, у меня (возможно ещё не до конца устоялся у меня этот пункт) флаги начинаются словом «Is», а счётчики заканчиваются словом «Count».
Ещё кое-что про условные операторы.
Я уже раньше о них писал, хотелось бы уточнить кое-что.
Если в теле (ветке) условного оператора содержится лишь один оператор, то:
Слово Then/else вместо со своим оператором переносится на другую строку.
if Condition
then Operation;
Если же в теле (ветке) условного оператора содержится несколько операторов, то
- Слова Then/Else переносят на новую строчку и остаются единственными, то есть, кроме них на этой строчки ничего быть не должно.
- Ниже (на следующих строках) записывается последовательность инструкций.
// например, так, один из вариантов
if Condition
then Operation1
else
begin
Operation2;
Operation3;
//...
end;
Кстати, напомню, что операции записываются не вровень со словами begin/end, а немного правее.
Возможно, такая технология наименования и существует, у меня она выработалась сама. Знаю, есть нечто похожее, называется «Венгерская нотация», но это немного не то.
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)