- •Хороший стиль программирования
- •1. Не забывайте о комментариях
- •Комментируйте описания переменных
- •Комментируйте логику программы
- •2. Понимание переменных - ключ к пониманию программы
- •Все переменные должны быть описаны
- •У каждой процедуры должна быть своя задача
- •Процедура не должна быть большой
- •4. Текст должен быть удобен для чтения
- •Выделяйте алгоритмическую структуру
- •Смещение означает подчинение
- •Сопровождайте описания комментариями
- •Тщательно выбирайте имена переменных
- •3. Разделяй и властвуй – Используйте процедуры
- •Не экономьте на пробелах
- •Соглашение об именованиях – венгерская нотация
- •2.1. Именование модулей
- •2.2. Именование форм и модулей данных
- •2.3. Именование классов и интерфейсов
- •2.4. Именование полей
- •2.5. Именование методов
- •2.6. Именование переменных
- •2.7. Нотация (префиксы) для именования переменных (экземпляров объектов) в зависимости от типа
- •2.8. Именование глобальных констант
- •2.9. Зарезервированные слова
- •2.10. Объявление типов и экземпляры переменных определенных типов
- •2.11. Перечислимые типы
- •2.12. Строковые ресурсы
- •2.13. Исключения
2.8. Именование глобальных констант
Для записи глобальных констант рекомендуется использовать префикс "cnst".
Допускается именование глобальных констант в верхнем регистре, для разделения слов в данном случае следует использовать знак подчеркивания "_".
Правильно: cnstEvaluationMode = true; EVALUATION_MODE = true;
Неправильно: EvaluationMode (Со взгляда на переменную нельзя определить, константа это или нет) EVALUATIONMODE (Сложно прочитать)
2.9. Зарезервированные слова
Зарезервированные слова и директивы должны быть все в нижнем регистре. Производные типы должны начинаться с большой буквы (Integer), однако string – это зарезервированное слово и оно должно быть в нижнем регистре.
2.10. Объявление типов и экземпляры переменных определенных типов
Все объявления типов должны начинаться с префикса Т и должны придерживаться правил, приведенных при описании оформления модуля или описании оформления класса.
Экземпляры переменных должны получать имена, совпадающие с именами соответствующих типов, но без префикса Т. Например, имена экземпляров для типов форм будут иметь следующий вид:
Имя типа |
Имя экземпляра |
TAboutForm |
AboutForm |
TMainForm |
MainForm |
TCustomerEntryForm |
CustomerEntryForm |
2.11. Перечислимые типы
Имена для перечислимых типов следует выбирать в соответствии с назначением перечисления. Имя типа должно начинаться с буквы Т, которая указывает на объявление типа. Список идентификаторов перечислимого типа должен содержать набранный строчными буквами двух или трехсимвольный префикс, указывающий на имя исходного перечислимого типа, например:
TSongType = (stRock, stClassical, stCountry, stAlternative, stHeavyMetal, stRB);
Экземплярам переменных перечислимого типа следует присваивать имена, совпадающие с именем типа, но без префикса Т (SongType), если нет причины назвать переменную более конкретным именем, например FavoriteSongTypel, FavoriteSongType2 и т.д.
2.12. Строковые ресурсы
Все строковые ресурсы должны иметь вид "Rs"[Category][Name]. [Category] должно быть аббревиатурой или названием категории кода, где используется строка. [Name] должно быть именем строки ресурса. Например, конструктор TJclCriticalSectionEx.CreateEx вызывает исключительную ситуацию при ошибке инициализации. Сообщение об ошибке объявляется в глобальном модуле ХХXResources.pas с именемRsynchInitCriticalSection.
Если проект подлежит локализации, все строки должны быть исключены из кода и заменены константами. Исключением из этого правила являются строки, которые являются какими-либо командами или от них будет зависеть поведение экземпляров класса. Такие строки должны быть явно объявлены в каком-либо из методов класса.
2.13. Исключения
Все исключения должны начинаться с префикса EХХХ. Все исключения должны быть унаследованы от класса ENхError. При возбуждении исключительной ситуации предпочтительным является ее создание с помощью метода CreateRes:
raise EХХХSomeException.CreateRes(@RsSomeResourceString);
Независимо от того, создается исключение из строки ресурса или нет, а также выходит оно за границы структурного участка кода или нет, настоятельно рекомендуется, чтобы при каждом вызове исключения оно создавалось.
