1. Pengantar spesifikasi
Spesifikasi ini terutama menetapkan aturan dan tindakan pencegahan yang harus diikuti oleh program sumber Delphi selama proses penulisan. Tujuan penulisan spesifikasi ini adalah untuk menjaga kebiasaan menulis kode sumber dari pengembang perangkat lunak perusahaan konsisten. Melakukan hal itu bahwa setiap anggota grup dapat memahami kode anggota grup lain, sehingga dapat memfasilitasi pengembangan sekunder pemeliharaan sistem memori kode sumber.
2. Spesifikasi Format Umum
2.1 Indentasi
Indentasi adalah dua ruang yang terpapar untuk meningkatkan keterbacaan ketika tingkat program sumber berubah. Aturan lekukan adalah untuk menekuk dua ruang untuk setiap level. Tab tidak diperbolehkan. Karena Tab akan menghasilkan efek yang berbeda karena pengaturan yang berbeda yang dibuat oleh pengguna. Saat Anda bertemu atau masuk penilaian, loop, penanganan pengecualian, dengan pernyataan, deklarasi jenis catatan, deklarasi kelas, dll., Tambahkan satu tingkat. Deklarasi kelas, dll. Akan dikurangi oleh satu tingkat. Misalnya:
iftmpint <> 100then
Tmpint: = 100;
2.2begin..end
Pernyataan awal dan pernyataan akhir harus menempati satu baris dalam program sumber, misalnya:
FORI: = 0TO10DOBEGIN // Penggunaan yang salah
akhir;
fori: = 0to10do // penggunaan yang benar
Mulai
akhir;
2.3 Spaces
Tambahkan spasi di kedua ujung operator dan simbol penilaian logis, seperti: i: = i+1;, audb, dll., Tetapi tidak ada ruang yang diperlukan saat menambahkan kurung. Misalnya: if (a> b) lalu // penggunaan yang salah
If (a> b) lalu // benar penggunaan
Misalnya: ProcedureTest (param1: integer; param3: string);
3. Objectpascal Spesifikasi Format Penulisan Tata Bahasa
3.1 Kata -kata yang dicadangkan
Semua kata atau kata kunci yang dipesan di ObjectPascal harus digunakan dalam huruf kecil.
3.2 Proses dan Fungsi
3.2.1 Penamaan dan format
Nama -nama prosedur dan fungsi semua harus terdiri dari kata -kata yang bermakna, dan huruf pertama dari semua kata harus dalam huruf kapital. Misalnya:
ProsedureFormArardDisk; // Penamaan yang salah
ProsedureFormathardDisk; // Penamaan yang benar
Proses dan fungsi yang mengatur konten suatu variabel harus menggunakan set sebagai awalan, misalnya:
ProsedurSetusername;
Proses dan fungsi yang membaca konten variabel harus digunakan Get sebagai awalan, misalnya:
functionGetUserName: string;
3.2.2 Parameter Prosedur dan Fungsi
3.2.2.1 Penamaan
Parameter dari tipe terpadu ditulis dalam kalimat yang sama:
Prosedurefoo (param1, param2, param3: integer; param4: string);
3.2.2.2 Penamaan
Semua parameter harus bermakna; dan ketika nama parameter dan nama atribut lainnya berulang, tambahkan awalan 'A', misalnya:
ProceduresomeProc (ausername: string; auserage: integer);
3.2.2.3 Konflik Penamaan
Ketika dua unit yang digunakan mencakup fungsi atau prosedur duplikat, ketika Anda merujuk pada fungsi atau prosedur ini, fungsi atau prosedur dalam unit yang dinyatakan dalam klausa penggunaan akan dijalankan. Untuk menghindari 'penggunaan tergantung-klausa', perlu untuk menulis fungsi lengkap atau sumber proses saat merujuk pada suatu fungsi atau proses. Misalnya:
Sysutils.findclose (sr);
Windows.findclose (handle);
3.3 Variabel
3.3.1 Penamaan dan format variabel
Pertama -tama variabel harus diberikan nama yang bermakna sehingga anggota kelompok lain dapat dengan mudah memahami makna yang diwakili oleh variabel. modal. Misalnya:
var
Writeformat :: string;
Pada saat yang sama, untuk beberapa jenis tertentu, singkatan tertentu dapat digunakan sebagai berikut:
Jenis Pointer
P
Jenis rekaman
Rec
Jenis array
Arr
baik
Kelas
Variabel kontrol loop biasanya menggunakan satu karakter seperti: i, j, atau k. Selain itu, menggunakan nama yang bermakna seperti UserIndex juga diizinkan.
3.3.2 Variabel Lokal
Menggunakan variabel lokal dalam proses mengikuti aturan penamaan untuk semua variabel lain.
3.3.3 Variabel Global
Cobalah untuk tidak menggunakan variabel global. Misalnya:
GPrecuserCount: point; // Variabel global dengan nama UserCount, tipenya adalah pointer ke struktur
Tetapi variabel global dapat digunakan di dalam modul. Semua variabel global dalam modul harus diawali dengan 'F'. Jika pertukaran data diperlukan antara beberapa modul, perlu diterapkan dengan mendeklarasikan atribut. Misalnya:
jenis
Tformoverdraftreturn = class (tform)
Pribadi
{PrivatedEclarations}
Fusername: string;
Fusercount: integer;
ProsedurureSetuserName (nilai: string);
FunctionGetUserName: string;
publik
{PublicDeclarations}
PropertyUserName: StringReadGetUserNamewritesetuserName;
PropertyUserCount: IntegerReadFuserCountWriteFuserCount;
akhir;
Tipe 3.4
3.4.1 Protokol Kasus
Jenis nama karakter yang dipesan harus semuanya huruf kecil. Jenis Win32api biasanya semuanya dikapitalisasi, dan huruf pertama dikapitalisasi untuk jenis lain, dan huruf yang tersisa adalah huruf kecil, misalnya:
var
MyString: String; // Reservedword
WindowHandle: hwnd; // win32apitype
I: Integer; // TypeIdentifierIntroducedInsystemunit
3.4.2 Jenis Titik Mengambang
Cobalah untuk tidak menggunakan tipe nyata, itu hanya ingin kompatibel dengan kode Pascal lama dan mencoba menggunakan tipe ganda. Jenis ganda adalah prosesor dan bus data yang dioptimalkan dan merupakan struktur data standar yang ditentukan oleh IEEE. Extended digunakan saat nilainya di luar kisaran ganda. Tetapi Extended tidak didukung oleh Jave. Namun, tipe tunggal dapat digunakan saat menulis DLL dalam bahasa lain.
3.4.3 Jenis Pencacahan
Nama jenis enumerasi harus bermakna dan nama tipe harus diawali 't'. Nama konten jenis enum harus berisi singkatan dari nama jenis enum, misalnya:
TsongType = (strock, stclassical, stcountry, stalternative, stheavymetal, strb);
3.4.4 Jenis Array
Nama tipe array harus bermakna dan nama tipe harus diawali 't'. Jika Anda mendeklarasikan pointer ke jenis array, Anda harus awalan 'p' sebelum nama jenis itu, misalnya:
jenis
Pcyclearray =^tcyclearray;
TcycleArray = array [1..100] ofInteger;
3.4.5 Jenis Rekaman
Nama jenis rekaman harus bermakna dan nama jenisnya harus diawali 't'. Jika Anda mendeklarasikan pointer ke jenis array, Anda harus awalan 'p' sebelum nama jenis itu, misalnya:
jenis
PHEKUREE =^Temproject;
Temprojenee = Rekam
Pekerjaan: String
Karyawan: ganda;
akhir;
Kategori 3.5
3.5.1 Penamaan dan format
Nama kelas harus bermakna dan nama tipe harus diawali 't'. Misalnya:
jenis
Tcustomer = class (tobject)
Nama instance kelas biasanya nama kelas dengan 't' dihapus. Misalnya:
var
Pelanggan: Tcustomer;
Variabel di Kelas 3.5.2
3.5.2.1 Penamaan dan format
Nama kelas harus bermakna dan nama tipe harus diawali 'f'. Semua variabel harus empat-dalam-satu. Jika Anda perlu mengakses variabel ini dari luar, Anda perlu mendeklarasikan properti
Metode 3.5.3
3.5.3.1 Penamaan dan format
Penamaan dan pemformatan fungsi dan prosedur.
3.5.3.2 Metode akses atribut
Semua metode akses atribut harus muncul secara pribadi atau terlindungi. Penamaan metode akses atribut sama dengan penamaan fungsi dan prosedur. Parameter metode yang ditulis harus dinamai 'nilai', dan jenisnya konsisten dengan atribut yang akan ditulis. Misalnya:
TsomeClass = class (tobject)
Pribadi
fsomefield: integer;
terlindung
functionGetSomefield: integer;
ProsedurursetSomefield (nilai: integer);
publik
Propertiesomefield: IntegerReadgetSomefieldWritesetSomefield;
akhir;
3.6 Properti
3.6.1 Penamaan dan format
Nama -nama variabel kelas dengan awalan 'F' konsisten dengan operasi.
3.7 file
3.7.1 File Proyek
3.7.1.1 Struktur Direktori Proyek
Program Home Directory -bin (jalur di mana aplikasi berada)
-DB (jalur di mana database lokal berada)
-Doc (jalur di mana dokumen berada)
-Hlp (jalur di mana file bantuan berada)
-Backup (jalur cadangan)
-Tmp (jalur file sementara)
3.7.1.2 Penamaan
File proyek harus menggunakan nama yang bermakna. Misalnya: File proyek untuk informasi sistem di Delphi bernama sysinfo.dpr.
3.7.2 File Form
3.7.2.1 Penamaan
Konsisten dengan nama formulir: Misalnya: Jika nama formulir adalah FormMain, maka nama file formulir adalah formmain.frm.
3.7.3DATAMODULE FILE
3.7.3.1 Penamaan
Penamaan file datamodule harus masuk akal dan menggunakan 'DM' sebagai awalan. Misalnya: Datamodule pengguna bernama 'dmcustomers.dfm'.
3.7.4RemotedAtamodule file
3.7.4.1 Penamaan
Penamaan file RemotedAtamodule harus masuk akal dan menggunakan 'RDM' sebagai awalan. Misalnya: pengguna remotedatamodule bernama 'rdmcustomers.dfm'.
File 3.7.5unit
3.7.5.1 Unit normal
3.7.5.1.1unit Penamaan file
Penamaan file unit harus masuk akal dan menggunakan 'unit' sebagai awalan. Misalnya: Unit generik dinamai 'UnitGeneral'.
3.7.5.2Formunits
3.7.5.2.1 Penamaan
Nama file formunit harus konsisten dengan nama formulir. Misalnya: Formulir utama disebut FormMain.pas, nama file formunit adalah: UnitFormMain.
3.7.5.3datamoduleunits
3.7.5.3.1 Penamaan
Nama file datamoduleunit harus konsisten dengan nama datamodule. Misalnya: Datamodule utama disebut dmmain.pas, lalu nama file datamoduleunit adalah: unitdmmain.
3.7.5.4 Header File
Tujuan, penulis, tanggal dan input dan output dari file ini harus ditulis di header semua file. Misalnya:
{
Tanggal Modifikasi:
pengarang:
menggunakan:
Struktur modul ini terdiri dari:
}
3.7.6 FORMS DAN DATAMODULESFORMS
3.7.6.1 Class
1. Bentuk Standar Penamaan Kelas
Nama kelas Forms harus masuk akal dan menggunakan 'tform' sebagai awalan. Misalnya: Nama kelas Tentang Tentang adalah:
Taboutform = class (tform)
Nama formulir utama adalah
TMAintForm = class (tform)
2. Standar penamaan untuk instance kelas bentuk
Nama -nama instance kelas bentuk harus konsisten dengan nama kelas bentuk dengan 't' selama periode yang sama. Misalnya:
Typename
Nama instance
Taaboutform
Tentang bentuk
Tmainform
Mainform
Tcustomerentryform
CustomerEntryform
3.7.6.2DatamodulForm
3.7.6.2.1.datamoduleform Standar penamaan
Penamaan kelas Datamodulesforms harus masuk akal dan menggunakan 'TDM' sebagai awalan. Misalnya:
Tdmcustomer = kelas (tdatamodule)
Tdmorders = class (tdatamodule)
3.7.6.2.2.datamodule Instance Penamaan Standar
Nama instance kelas Datamoduleform harus sama dengan nama kelas Datamoduleform dengan tetes 'T' pada saat yang sama. Misalnya:
Typename
Nama instance
TcustomerDatamodule
CustomerDatamodule
TordersDatamodule
Ordersdatamodule
3.8 Kontrol
3.8.1 Penamaan contoh kontrol
Sebuah contoh kontrol harus menggunakan nama kelas kontrol yang menghilangkan 't' sebagai awalan, misalnya:
Nama tedit yang masuk ke nama pengguna adalah: editusername.
3.8.2 Singkatan Kontrol
Nama kontrol dapat digunakan dengan singkatan berikut, tetapi singkatan yang digunakan ditambahkan di antara nama kontrol '_':
3.8.2.1StandardTab
mmtmainmenu
PMTPOPUPMENU
mmitmainMenuitem
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
ILTIMAGELIT
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
DSTPTDataSettableProducer
nmdttnmdaytime
nectnmecho
nftnmfinger
nftptnmftp
nhttptnmhttp
nmsgtnmmsg
nmsgtnmmsgserv
nntptnmnntp
npoptnmpop3
nuuptnmuuprocessor
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
qrditqrdbMimage
qrcrtqrCompositerPort
qrptqrpreview
qrchtqrchart
3.8.2.10DialogStab
OpenDialogtopendialog
SaveDialogtsavedialog
OpenPicturedialogtopenpicturedialog
SavePicturedialogtsavepicturedialog
Fontdialogtfontdialog
Colordialogtcolordialog
Printdialogtprintdialog
PrintersetupDialogTprintsetupDialog
FindDialogtfinddialog
REPLACEIALOGTREPLADIALOG
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
grptgraph
3.8.2.14Midastab
prvtprovider
cdstClientDataSet
qcdstqueryclientdataset
DCOMTDCOMConnection
OLEETOLEENTERRPRECONNECTION
scktsocketConnection
RMStremoteServer
Midtmidasconnection
4. Ubah spesifikasi
Ketentuan yang dibuat dalam aturan ini hanya berlaku untuk prosedur yang telah dimasukkan ke dalam manajemen konfigurasi. Dalam modifikasi seperti itu, diperlukan untuk mempertahankan konten sebelum modifikasi dan mengidentifikasi konten yang dimodifikasi dan baru ditambahkan. Dan tambahkan informasi yang diperlukan seperti pengubah, tanggal modifikasi, instruksi modifikasi, dll. Ke header file.
4.1 Ubah Catatan Sejarah
Saat membuat modifikasi yang disetujui ke file sumber, pengubah harus menambahkan item riwayat modifikasi ke header file program. Dalam setiap modifikasi berikutnya, pengubah harus mengisi informasi berikut dalam item:
Memodifikasi
Waktu modifikasi
Alasan modifikasi
Cara memodifikasi instruksi
4.2 Tambahkan baris kode baru
Baris kode baru seharusnya berkomentar baris sebelum dan sesudah.
// Modifikasi Orang, Waktu Modifikasi, Instruksi Modifikasi
Tambahan Kode
// akhir modifikasi
4.3 Hapus baris kode
Gunakan baris komentar untuk dijelaskan sebelum dan sesudah menghapus baris kode.
// Modifikasi Orang, Waktu Modifikasi, Instruksi Modifikasi
// baris kode yang akan dihapus (komentar pernyataan yang akan dihapus)
// akhir modifikasi
4.4 Ubah Baris Kode
Ubah baris kode untuk menghapus baris kode dan menambahkan baris kode baru.
// Modifikasi Orang, Waktu Modifikasi, Instruksi Modifikasi
// Baris kode sebelum modifikasi
// akhir modifikasi
// baris kode yang dimodifikasi
Baris kode yang dimodifikasi
// akhir modifikasi