1. Введение в спецификации
В этой спецификации в основном предусмотрены правила и меры предосторожности, которые Delphi Source Rolarch должны следовать в процессе написания. Цель написания этой спецификации состоит в том, чтобы поддерживать поддержание привычек написания исходного кода разработчиков программного обеспечения компании. Это, чтобы каждый участник группы мог понять код других членов группы, чтобы облегчить вторичное разработку технического обслуживания системы памяти исходного кода.
2. Общие спецификации формата
2.1 СДАРТАЦИЯ
В отступление - это два пространства, подвергшихся воздействию повышения читаемости при изменении уровня исходной программы. Правило отступа состоит в том, чтобы отступить два пространства для каждого уровня. Вкладка не допускается. Потому что вкладка будет создавать различные эффекты из -за разных настройки, сделанных пользователем. Когда вы сталкиваетесь с началом или вводите суждение, цикл, обработка исключений, с заявлением, объявлением типа записи, декларацией класса и т. Д., Добавьте один уровень. Классовые объявления и т. Д. Будут уменьшены на один уровень. Например:
iftmpint <> 100then
Tmpint: = 100;
2.2begin..end
Заявление BEGIN и END оператор должны занять одну строку в исходной программе, например:
fori: = 0to10dobegin // Неверное использование
конец;
fori: = 0to10do // Правильное использование
Начинать
конец;
2.3 пространства
Добавьте пространства на обоих концах операторов и символы логического суждения, такие как: i: = i+1;, Aandb и т. Д., Но при добавлении скобков нет мест. Например: if (a> b), тогда // неправильное использование
If (a> b), тогда // правильное использование
Например: ProcecureTest (param1: Integer; Param3: String);
3. Спецификации формата грамматики в области грамматики
3.1 Зарезервированные слова
Все зарезервированные слова или ключевые слова в ObjectPascal должны использоваться в строчных буквах.
3.2 Процессы и функции
3.2.1 Наименование и формат
Имена процедур и функций должны состоять из значимых слов, и первая буква всех слов должна быть в заглавных буквах. Например:
Процедура форматарддиска; // Неверное именование
ProcecureFormAthardDisk; // Правильное именование
Процесс и функция, которые устанавливают содержимое переменной, должны использовать SET в качестве префикса, например:
процедуры имени;
Процессы и функции, которые считывают содержимое переменной, должны использовать GET как префикс, например:
functiongetUsername: String;
3.2.2 Параметры процедур и функций
3.2.2.1 Наименование
Параметры унифицированного типа записаны в том же предложении:
ProcecureFoo (param1, param2, param3: integer; param4: string);
3.2.2.2
Все параметры должны быть значимыми;
ProcesturesOmeProc (Ausername: String; Auserage: Integer);
3.2.2.3 Конфликт именования
Когда два используемых устройства включают в себя дубликату функцию или процедуру, когда вы ссылаетесь на эту функцию или процедуру, будет выполнена функция или процедура в единице, объявленном в пункте использования. Чтобы избежать такого «зависимого от использования», необходимо написать полную функцию или источник процесса при обращении к функции или процессу. Например:
Sysutils.findclose (sr);
Windows.FindClose (ручка);
3.3 переменные
3.3.1 Переменная именование и формат
Прежде всего, переменные должны быть предоставлены значимыми именами, чтобы другие члены группы могли легко понять значение, представленное переменной. капитал. Например:
вар
Writeformat :: string;
В то же время, для некоторых конкретных типов определенные сокращения могут использоваться следующим образом:
Тип указателя
П
Тип записи
Репутатор
Тип массива
Обр
добрый
Сорт
Переменные управления цикла обычно используют один символ, такой как: i, j или k. Кроме того, также разрешено использование значимого имени, такого как userIndex.
3.3.2 Локальные переменные
Использование локальных переменных в процессе следует правилам именования для всех других переменных.
3.3.3 Глобальные переменные
Постарайтесь не использовать глобальные переменные. Например:
GPRECUSERCOUNT: point; // Глобальная переменная с именем userCount, его тип является указателем на структуру
Но глобальные переменные могут использоваться внутри модуля. Все глобальные переменные в модулях должны быть предварительно профиксированы с «F». Если между несколькими модулями требуется обмен данными, он должен быть реализован путем объявления атрибутов. Например:
тип
Tformoverdraftreturn = class (tform)
Частный
{Privatedeclarations}
Fusername: String;
FuserCount: целое число;
ProcestureSetuserName (значение: String);
FunctiongetUsername: String;
публичный
{PublicDeclarations}
PropertyUsername: StringReadGetUserNameWritesETUSERNAME;
PropertyUsercount: IntegerReadFuserCountWriteFuserCount;
конец;
Тип 3.4
3.4.1 Протокол дела
Названия типов зарезервированных символов должны быть все строчные. Типы Win32API обычно все капитализируются, а первые буквы капитализируются для других типов, а остальные буквы - строчные, например:
вар
MyString: String; // ReservedWord
Windowhandle: hwnd; // win32apitype
I: Integer; // typeIdentifierIntroducedInsystemunit
3.4.2 Тип плавающей запятой
Постарайтесь не использовать реальный тип, он просто хочет быть совместимым со старым кодом Pascal и попытайтесь использовать двойной тип. Двойной тип является оптимизированным процессором и шиной данных и является стандартной структурой данных, определенной IEEE. Расширение используется, когда значение находится вне диапазона двойного. Но расширенный не поддерживается Джейвом. Однако единственный тип может использоваться при написании DLL на других языках.
3.4.3 Тип перечисления
Имя типа перечисления должно быть значимым, а имя типа должно быть префикс «t». Имя содержимого типа перечисления должно содержать аббревиатуру имени типа перечисления, например:
Tsongtype = (Strock, Stclassical, Stcountry, Stalternative, Stheavymetal, STRB);
3.4.4 Тип массива
Название типа массива должно быть значимым, и имя типа должно быть префикс «t». Если вы объявите указатель на тип массива, вы должны префикс «p» до имени этого типа, например:
тип
Pcyclearray =^tcyclearray;
Tcyclearray = массив [1..100] ofinteger;
3.4.5 Тип записи
Имя типа записи должно быть значимым, и имя типа должно быть префикс «t». Если вы объявите указатель на тип массива, вы должны префикс «p» до имени этого типа, например:
тип
Pemployee =^Temployee;
Tempoverye = record
HopianeEname: строка
Сотрудники: двойной;
конец;
Категория 3.5
3.5.1 Наименование и формат
Название класса должно быть значимым, и имя типа должно быть префикс «t». Например:
тип
Tcustomer = class (tobject)
Название экземпляра класса обычно является названием класса с удалением «t». Например:
вар
Клиент: Tcustomer;
Переменные в классе 3.5.2
3.5.2.1 Наименование и формат
Название класса должно быть значимым, и имя типа должно быть префикс «f». Все переменные должны быть четыре в одном. Если вам нужно получить доступ к этой переменной снаружи, вам нужно объявить свойство
Метод 3.5.3
3.5.3.1 Наименование и формат
Наименование и форматирование функций и процедур.
3.5.3.2 Метод доступа к атрибутам
Все методы доступа к атрибутам должны появляться в частном или защищенном. Наименование метода доступа к атрибуту является таким же, как именовать функции и процедуры. Параметр записанного метода должен быть назван «Значение», а его тип согласуется с написанием атрибута. Например:
Tsomeclass = class (tobject)
Частный
Fsomefield: целое число;
защищен
FunctionGetSomefield: Integer;
ProcecuresetSomefield (значение: целое число);
публичный
Propertysomefield: IntegerReadgetSomefieldWritesetSomefield;
конец;
3.6 Свойства
3.6.1 Наименование и формат
Названия переменных класса с префиксом «f» согласуются с операцией.
3.7 Файл
3.7.1 Файл проекта
3.7.1.1 Структура каталога проектов
Программа Home Directory -bin (Путь, где находится приложение)
-Db (путь, где расположена локальная база данных)
-Док (путь, где находится документ)
-Hlp (путь, где находится файл справки)
-Backup (путь резервного копирования)
-Tmp (временный путь файла)
3.7.1.2 именование
Файл проекта должен использовать значимое имя. Например: файл проекта для системной информации в Delphi называется sysinfo.dpr.
3.7.2Form File
3.7.2.1 именование
В соответствии с именем формы: например: если имя формы является Formmain, то имя файла формы - Formmain.frm.
3.7.3.datamodule файл
3.7.3.1 именование
Наименование файла DataModule должно иметь смысл и использовать «DM» в качестве префикса. Например: пользователь Datamodule называется «dmcustomers.dfm».
3.7.4Remotedatamodule
3.7.4.1 именование
Наименование файла с дистанционным изданием должно иметь смысл и использовать «rdm» в качестве префикса. Например: пользователь remotedatamodule называется «rdmcustomers.dfm».
3.7.5UNIT Файл
3.7.5.1 Нормальная единица
3.7.5.1.1Unit именование файлов
Наименование файла устройства должно иметь смысл и использовать «единицу» в качестве префикса. Например: общий блок называется «UnitedGeneral».
3.7.5.2formUnits
3.7.5.2.1 именование
Имя файла FormUnit должно соответствовать имени формы. Например: основная форма называется Formmain.pas, имя файла FormUnit: UnitformMain.
3.7.5.3datamoduleUnits
3.7.5.3.1 именование
Имя файла DataModuleUnit должно соответствовать имени DataModule. Например: основной датмодуль называется dmmain.pas, тогда имя файла DataModuleUnit: UnitDmmain.
3.7.5.4 Заголовок файла
Цель, автор, дата и ввод и вывод этого файла должны быть записаны в заголовке всех файлов. Например:
{
Дата модификации:
Автор:
использовать:
Эта структура модуля состоит из:
}
3.7.6 и DataModulesForms
3.7.6.1 Класс
1. Стандарты именования в классе
Название класса форм должно иметь смысл и использовать «tform» в качестве префикса. Например: название класса Aboutform:
Taboutform = class (tform)
Название основной формы
Tmainform = class (tform)
2. Стандарты именования для экземпляров класса формы
Названия экземпляров класса формы должны соответствовать именам класса формы с «t» в течение того же периода. Например:
Типов
Инстачан
Taaboutform
О форме
Tmainform
Mainform
Tcustomerentryform
CustomerEntryform
3.7.6.2datamodulesform
3.7.6.2.1.Datamoduleform Стандарт именования
Наименование класса DataModulesForms должно иметь смысл и использовать «TDM» в качестве префикса. Например:
Tdmcustomer = class (tdatamodule)
Tdmorders = class (tdatamodule)
3.7.6.2.2.
Имя экземпляра класса DataModuleForm должно быть таким же, как и имя класса DataModuleForm с «t», одновременно. Например:
Типов
Инстачан
Tcustomerdatamodule
Customerdatamodule
Tordersdatamodule
Ordersdatamodule
3.8 Управление
3.8.1 Наименование экземпляров контроля
Экземпляр управления должен использовать имя класса управления, которое удаляет «t» в качестве префикса, например:
Название TEDIT, которое входит в имя пользователя: EdituserName.
3.8.2 Сокращение контролей
Название управления может использоваться со следующей сокращением, но используемое аббревиатура добавляется между именем управления '_':
3.8.2.1standardtab
Mmtmainmenu
PMTPOPUPMENU
MmitmeNmenuitem
pmitpopupmenuitem
Lbltlabel
Edttedit
Memtmemo
btntbutton
CBTCheckbox
rbtradiobutton
lbtlistbox
CBTCombobox
scbtscrollbar
GBTGroupbox
Rgtradiogroup
Pnltpanel
CltCommandList
3.8.2.2additionaltab
bbtntbitbtn
Sbtspeedbutton
Metmaskedit
SGTSTRINGGRID
Dgtdrawgrid
Imgtimage
Shptshape
bvltbevel
sbxtscrollbox
ClbtCheckListbox
Spltsplitter
StxtStatictext
Chttchart
3.8.2.3win32tab
tbctabcontrol
PGCTPageControl
Илтимагелист
Retrichedit
Tbrttracbar
PRBTProgressbar
udtupdown
hkthotkey
anitanimate
dtptdateTimepicker
tvtreeview
lvtlistView
Hdrtheadercontrol
STBTSTATUSBAR
Tlbttoolbar
Clbtcoolbar
3.8.2.4systemtab
tmttimer
Pbtpaintbox
MptMediaPlayer
olectolecontainer
ddcctddeclientconv
ddcitddeclientitem
ddsctddeserverconv
ddsitddeserVeritem
3.8.2.5 Internettab
csktclientsocket
ssktserversocket
wbdtwebdispatcher
PPTPageProducer
tptquerytableproducer
DSTPTDATASETTABLEPORDUCER
nmdttnmdaytime
Nectnmecho
nftnmfinger
nftptnmftp
nhttptnmhttp
nmsgtnmmsg
nmsgtnmmsgserv
nntptnmnntp
npoptnmpop3
nuuptnmuuupocessor
smtptnmsmtp
nsttnmstrm
NSTNMSTRMSERV
ntmtnmtime
nudptnmudp
psktpowersock
ngstnmgeneralserver
htmlthtml
Urltnmurl
Smltsimplemail
3.8.2.6dataaccesstab
DSTDATASOURCE
tblttable
qrytquery
SptStoredProc
DBTDATABASE
SSNTSession
bmtbatchmove
USQLTUPDATESQL
3.8.2.7datacontrolstab
dbgtdbgrid
dbntdbnavigator
DBTTDBTEXT
Dbetdbedit
DBMTDBMEMO
dbitdbimage
dblbtdblistbox
dbcbtdbcombobox
dbchtdbcheckbox
dbrgtdbradiogroup
dblltdblookuplistbox
dblctdblookupcombobox
dbretdbrichedit
dbcgtdbctrlgrid
dbchtdbchart
3.8.2.8decisionCubeTab
dcbtdecisioncube
dcqtdecisionQuery
dcstdecisionsource
dcptdecisionpivot
dcgtdecisiongrid
dcgrtdecisiongraph
3.8.2.9qreporttab
qrtquickreport
qrsdtqrsubdetail
qrbtqrband
qrcbtqrChildBand
qrgtqrgroup
qrltqrlabel
qrttqrtext
qretqreexpr
qrstqrsysdata
qrmtqrmemo
qrrrttqrrichtext
qrdrtqrdbrichtext
qrshtqrshape
qritqrimage
qrditqrdbmame
qrcrtqrcompositereport
qrptqrpreview
qrchtqrchart
3.8.2.10dialogstab
Opendialogtopendialog
Savedialogtsavedialog
Openpicturedialogtopenpicturedialog
SavePicturedialogtSavePicturedialog
Fontdialogtfontdialog
Colordialogtcolordialog
Printdialogtprintdialog
Printersetupdialogtprintsetupdialog
Finddialogtfinddialog
Заменил
3.8.2.11win31tab
dblltdblookuplist
dblctdblookupcombo
TSTTABSET
oltoutline
tnbttabbednotebook
nbtnotebook
Hdrtheader
flbtfilelistbox
DLBTDirectoryListbox
DCBTDRIVECOMBOBOX
fcbtfiltercombobox
3.8.2.12samplestab
GGTGAUGE
cgtcolorgrid
spbtspinbutton
Spetspinedit
doltdirectoryoutline
Caltcalendar
ibeatibeventalerter
3.8.2.13activextab
cfxtChartfx
vsptvsspell
F1BTF1Book
vtctvtchart
Грптграф
3.8.2.14midastab
prvtprovider
cdstclientdataset
qcdstqueryclientdataset
dcomtdcomconnection
OleetoleenterPriseConnection
ScktSocketConnection
RMSTREMOTESERVER
Midtmidasconnection
4 Изменить спецификации
Положения, сделанные в этих правилах, применяются только к процедурам, которые были включены в управление конфигурацией. В таких модификациях необходимо сохранить контент перед модификацией и определить модифицированный и вновь добавленный контент. И добавьте необходимую информацию, такую как модификатор, дата изменения, инструкции по изменению и т. Д. В заголовок файла.
4.1 Измените историю записи
При внесении утвержденных изменений в исходный файл модификатор должен добавить элемент истории модификации в заголовок файла программы. В каждой последующей модификации модификатор должен заполнить следующую информацию в элементе:
Модифицировать
Время модификации
Причина модификации
Как изменить инструкции
4.2 Добавить новую строку кода
Новая строка кода должна была прокомментировать строки до и после.
// Изменить человека, время изменения, инструкции по изменению
Добавлена строка кода
// конец модификации
4.3 Удалить строку кода
Используйте строки комментариев для описания до и после удаления строки кода.
// Изменить человека, время изменения, инструкции по изменению
// строка кода, которая должна быть удалена (комментарий к удалению утверждения)
// конец модификации
4.4 Измените строку кода
Измените строку кода, чтобы удалить строку кода и добавить новые строки кода.
// Изменить человека, время изменения, инструкции по изменению
// строка кода перед изменением
// конец модификации
// Измененная строка кода
Модифицированная строка кода
// конец модификации