Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2007, 09:00   #1
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
Восклицание Правила написания кода на Delphi

Настоящие правила стилевого оформления исходного кода являются обязательными к исполнению при написании любого нового кода программ на Delphi, в том числе при внесении исправлений в существующий код. Ранее написанный код обязательной стилевой правке не подлежит, хотя она может выполняться при наличии желания, возможности и времени.
[Отобенно данные сведения полезны новичкам. Ведь очень трудно разбираться (тем, кто пытается вам помочь) в чужом коде, да еще плохо оформленном] .
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 13.01.2007, 09:04   #2
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
Сообщение Регистр символов

1. Имена (переменных, типов, методов, констант и так далее) всегда начинаются с Прописной буквы. Если имя составлено из нескольких слов, то каждое слово пишется с первой прописной буквы, без знаков подчёркивания между словами. Исключения: локальные переменные с односимвольными именами в нижнем регистре: i, j, k, l, m, n, s.
2. Писать только прописными буквами допускается константы и имена, являющиеся общепринятыми сокращениями которые обычно пишут прописными буквами.
3. Не рекомендуется использовать в именах символ подчёркивания, кроме случаев, когда он применяется для разделения слов в имени, записанном одними прописными или одними строчными буквами.
Запрещается использовать знак подчёркивания в начале или конце имени, или более одного знака подчёркивания подряд.
4. Зарезервированные слова языка Pascal пишутся строчными буквами. Исключение — зарезервированное слово String допускается писать с первой прописной буквой (так как это имя типа, оно попадает под предыдущее правило).
5. Значения True, False, Nil, Unassigned, Null и имя Result пишутся с прописной буквы (как здесь).
6. Зарещается написание одного и того же имени с различным регистром символов в разных местах программы.
7. Если в программе используются внешние модули (библиотеки, компоненты), в которых принята схема именования, отличная от описанной, имена из этих модулей следует писать так, как они записаны в оригинале.
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 13.01.2007, 09:06   #3
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
Сообщение Выбор имён

1. Все имена в программе должны быть осмысленными. Исключения: локальные в подпрограммах целочисленные переменные циклов могут иметь имена i, j, k, l, m, n, временная строковая переменная, локальная в подпрограмме, может иметь имя s.
2. Допустимыми языками для именования являются русский и английский. Русские имена пишутся транслитом. Допустимо использовать одни имена на английском, другие — на русском языке, но запрещено смешивать русский и английский в одном имени. То есть допустимо как имя ChildWindow, так и имя DocherneeOkno, но имя ChildOkno недопустимо.
3. Имя не должно быть многозначным или неопределённым. Например, не следует использовать имя Flag, поскольку оно не указывает на назначение флага. Следует расширить имя до EmptyFlag, TerminateFlag, BlockFlag и так далее.
4. Запрещается использовать имена i, j, k, l, m, n, кроме как для переменных циклов, а имя s — кроме как для временной строковой переменной, локальной в подпрограмме.
5. Не рекомендуется использовать в именах сокращения слов. Например, нежелательно имя FObjName, лучше использовать FObjectName. С другой стороны, следует избегать слишком длинных имён (более 20 символов) и имён, состоящих из более чем трёх слов, так как такие имена трудно воспринимать.
6. Запрещается использовать в именах сокращения, не являющиеся очевидными и общепринятыми, употребление которых требует дополнительного комментария для объяснения назначения называемого объекта. Например, нельзя использовать вместо имени AutomatEngineError имя AEE, поскольку оно совершенно неочевидно. Допустимость того или иного конкретного сокращения может зависеть от контекста применения. Так, сокращение CurValue вместо CurrentValue может быть допустимо в программе технических расчётов или динамической графики, но категорически недопустимо в программе финансовых расчётов, потому что в этом контексте CurValue неоднозначно — CurrentValue или CurrencyValue?
7. Запрещается использование в именах префиксов, кроме явно описанных в разделе «Префиксы имён».
8. Допускается оставлять визуальным компонентам, созданным в дизайнере форм, их технические имена, созданные Delphi, если выполняются условия:
a. к этим компонентам не происходит обращения нигде в коде;
b. они не указываются в значениях published свойств других компонентов;
c. у них нет обработчиков событий
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 13.01.2007, 09:09   #4
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
Сообщение Префиксы имён

1. Имена типов исключений должны иметь префикс E (EAutomateEngineError).
2. Имена интерфейсов должны иметь префикс I (IMetadataManager).
3. Имена типов-указателей должны иметь префикс P, а в остальной части совпадать с именем указываемого типа без префикса T (PInteger — указатель на Integer, PUserList — указатель на TUserList.
4. Имена прочих типов должны иметь префикс T (TPasswordDialog).
5. Имена формальных параметров подпрограмм должны иметь префикс A (AFileName). Допускается в методах доступа (используемых для сохранения значения свойства) использовать формальный параметр с именем Value без префикса A для нового значения свойства.
6. Допускается в именах локальных переменных процедур и функций использовать префикс lc для указания на локальность определения (lcTemporaryDataSet). К переменным i, j, k, l, m, n, s префикс lc не добавляется, поскольку переменные с этими именами могут быть только локальными.
7. Рекомендуется имена модулей (файлов unit) снабжать префиксами, указывающими на содержимое. Использовать ax для модулей ActiveX-компонентов, dm для датамодулей, u — для любых модулей. Прочие префиксы не стандартизуются.
8. Имена констант, являющихся элементами перечислимого типа, должны иметь префикс, составленный из первых букв слов названия типа, к которому они относятся, в нижнем регистре. Например:
TSex = (sUnknown, sMale, sFemale);
TActionType = (atOpen, atClose );
9. Имена личных (private) атрибутов классов должны иметь префикс F (FComplexLexeme).
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 13.01.2007, 09:10   #5
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
Сообщение Имена компонентов VCL

1. Имена переменных и атрибутов, содержащих визуальные компоненты типов VCL и унаследованных от них, следует формировать их по схеме <имя><тип>, например, MainForm, ChildFrame, ServerDataModule, NameLabel, ObjectQuery и так далее.
2. Рекомендуется использовать в именах компонентов короткие и осмысленные имена классов, которые в достаточной мере отражают способ использования компонента, но не обязательно точно соответствуют его объявленному типу. Например, для компонента SQL-запроса, извлекающего список объектов, лучше использовать имя ObjectQuery, а не ObjectADOQuery, если только уточнение типа в данном случае не является принципиальным (поведение TADOQuery не так уж сильно отличается от обобщённого TQuery). Дополнительные символы в имени загромождают его и мешают читать.
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 13.01.2007, 09:11   #6
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
Подмигивание Использование переменных

1. Любая переменная должна использоваться только для одной цели. Использование одних и тех же переменных в различных целях запрещено. Не следует экономить байты, теряя качество кода.
2. Следует по возможности избегать использования переменных, глобальных в модуле.
3. Для глобальных объектов следует создавать и использовать синглетоны?. Использование переменных, глобальных в программе, запрещено категорически (любая переменная, объявленная в interface части модуля, является глобальной в программе). В том числе нельзя использовать глобальные переменные-формы, создаваемые дизайнером в каждом модуле формы. Единственная глобальная переменная-форма, которая может использоваться — переменная, созданная для главной формы приложения, поскольку избежать её использования в Delphi невозможно. Но и она может применяться только внутри своего модуля.
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 13.01.2007, 09:12   #7
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
Стрелка Стиль написания конструкций языка

Изложенные здесь правила написания конструкций выбраны потому, что они:
1. облегчают чтение текста программы и исключают его неоднозначное понимание;
2. позволяют «на глаз», по отступам, контролировать правильность вложенности конструкций (любая конструкция, начинающаяся с ключевого слова, кроме цикла repeat, заканчивается ключевым словом end, расположенным с тем же отступом);
3. при описках программиста приводят к ошибкам компиляции, а не к синтаксически корректному, но семантически неверному коду;
4. экономят место.
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 13.01.2007, 09:14   #8
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
Сообщение Пробелы и символы

1. Каждая языковая конструкция, которая, по правилам языка, может завершаться точкой с запятой, должна ею завершаться.
2. Перед символами «двоеточие», «точка с запятой», «запятая» никогда не ставятся пробелы. После этих символов всегда ставится, по крайней мере, один пробел, если на этом символе строка не заканчивается.
3. Знаки арифметических операций, логических операций и операции присваивания в выражениях должны обрамляться пробелами с обеих сторон.
Код:
4. A := 1 + (2 * 3) - (((4 / 5 + 2) / 34)); // -- правильно
   A:=1+( 2*3 )-( ( ( 4/5+2 )/34 ) ) ; // -- неправильно
5. Скобки всех видов не отделяются пробелами от окружающих их символов, кроме символов арифметических и логических операций.
6. Между именем подпрограммы и открывающейся скобой, начинающей список параметров, никогда не может быть поставлен пробел, табуляция или перевод строки.
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 13.01.2007, 09:21   #9
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию Строки и отступы

1. На одной строке может быть записана только одна инструкция языка (один оператор).
2. Для вложенных программных конструкций обязательно использование отступов вправо. Отступ вправо составляет два символа. Замена в отступах пробелов на табуляции не допускается.
3. Комментарии в тексте программы, если они занимают целые строки, пишутся с тем же отступом, что и комментируемый код.
4. Рекомендуемая максимальная длина строки программы — 80 символов. Более длинные строки должны переноситься. При переносе отступ перенесённой части не должен быть меньше четырёх символов, но может быть больше, если это нужно для удобства восприятия текста.
Код:
if <условие1> and <условие2> and <условие3> and <условие4> // Слишком длинное условие
              and <условие4> and <условие5> then begin     // перенесено вот так
  <оператор>
  ...
end;

if <условие1> and <условие2> and <условие3> and <условие4> 
    and <условие4> and <условие5> then begin     // Но можно и вот так
  <оператор>
  ...
end;
5. При переносе конструкций, содержащих скобки, рекомендуется выполнять перенос и расставлять отступы так, чтобы перенесённое содержимое скобок оказалась в тексте правее, чем находящаяся на предыдущих строках открывающаяся скобка.
Код:
Length := ScaleCoefficient * (FrameLeft +                   
                 FrameWidth);   //   нежелательно

Length := ScaleCoefficient * (FrameLeft +
                                    FrameWidth); //    предпочтительнее
6. При переносе в операторе присваивания рекомендуется делать отступ так, чтобы перенесённая часть строки оказалась в тексте правее знака операции присваивания. Если это возможно и не ухудшает вида текста, рекомендуется выполнять перенос так, чтобы перенесённый фрагмент начинался со знака операции — это визуально выделяет перенесённые строки.
Код:
Length := (FrameLeft + FrameWidth) *
    ScaleCoefficient;  // нежелательно

Length := (FrameLeft + FrameWidth)
           * ScaleCoefficient;  //    предпочтительнее
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 13.01.2007, 09:25   #10
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
Сообщение Описания переменных, типов или констант

1. Описание переменной, типа или константы выполняется в секции var, type или const соответствующего раздела описаний (interface, implementation или в секции описания локальных данных процедуры или функции).
2. Ключевые слова type, const, var всегда записываются на отдельной строке, размещать за этими словами описания нельзя. Описания следут с отступом на следующих за ключевым словом строках:
Код:
const
  <описание константы>
  ...
type 
  <описание типа>
  ...
var
  <описание переменной (переменных)>
...
3. Ключевые слова type, const, var могут быть использованы не более одного раза в секции interface, секции implementation и в секции описаний локальных имён процедуры или функции.
4. Допускается описывать несколько переменных одного типа в одной строке.
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi. Редактор кода. BOBAH13 Общие вопросы Delphi 5 25.05.2008 00:20
Перевод кода с Fortran-77 на Delphi unhide Помощь студентам 3 20.05.2008 14:27
[DELPHI] Изменения кода проекта!!! metamfetamin Помощь студентам 4 09.12.2007 13:52
Правила написания формул в Delphi yurik44 Общие вопросы Delphi 1 13.06.2007 15:57
Трансляция кода из Delphi в C phobos Помощь студентам 9 21.04.2007 18:26