1. Pengenalan spesifikasi
Spesifikasi ini terutama menetapkan peraturan dan tindakan pencegahan yang harus diikuti selama proses penulisan program sumber Delphi. Tujuan penulisan spesifikasi ini adalah untuk membuat kebiasaan penulisan kode sumber para pengembang perangkat lunak perusahaan konsisten. Hal ini memungkinkan setiap anggota tim untuk memahami kode anggota tim lainnya, yang memfasilitasi pemeliharaan sistem memori pengembangan sekunder dari kode sumber.
2. Spesifikasi format umum
2.1 Lekukan
Indentasi adalah dua spasi yang diekspos untuk meningkatkan keterbacaan ketika tingkat program sumber berubah. Aturan lekukan adalah dua spasi per level. Tab tidak diperbolehkan. Karena Tab akan menghasilkan efek yang berbeda-beda karena perbedaan pengaturan yang dilakukan pengguna. Saat menghadapi penilaian awal atau masuk, perulangan, penanganan pengecualian, dengan pernyataan, deklarasi tipe rekaman, deklarasi kelas, dll., tingkatkan satu level. Saat menghadapi penilaian akhir atau keluar, perulangan, penanganan pengecualian, dengan pernyataan, deklarasi tipe rekaman, Kelas deklarasi berkurang satu level saat menunggu. Misalnya:
jika TmpInt <> 100 maka
TmpInt := 100;
2.2 Mulai..Akhir
Pernyataan awal dan pernyataan akhir harus menempati satu baris dalam program sumber, misalnya:
untuk I := 0 hingga 10 mulai //Penggunaan salah
akhir;
untuk I := 0 hingga 10 lakukan //Penggunaan yang benar
mulai
akhir;
2,3 spasi
Tambahkan spasi di kedua ujung operator dan simbol penilaian logis, seperti: I := I + 1;, a dan b, dll., tetapi tidak diperlukan spasi saat menambahkan tanda kurung. Contoh: if ( a > b ) maka //penggunaan salah
Jika (a > b) maka //Penggunaan benar
Contoh lain: Tes Prosedur(Param1: integer; Param3: string);
3. Spesifikasi format penulisan sintaksis objek Pascal
3.1 Kata-kata yang dicadangkan
Kata atau kata kunci yang dicadangkan dalam bahasa Objek Pascal sebaiknya ditulis dengan huruf kecil semua.
3.2 Prosedur dan fungsi
3.2.1 Penamaan dan format
Nama prosedur dan fungsi harus seluruhnya terdiri dari kata-kata yang bermakna, dan huruf pertama dari semua kata harus menggunakan huruf kapital. Misalnya:
format prosedurharddisk;//penamaan salah
prosedur FormatHardDisk;//Penamaan yang benar
Prosedur dan fungsi yang mengatur isi variabel harus diawali dengan Set, misalnya:
prosedur Set Nama Pengguna;
Prosedur dan fungsi yang membaca isi variabel harus menggunakan Get sebagai awalan, misalnya:
fungsi Dapatkan Nama Pengguna: string;
3.2.2 Parameter prosedur dan fungsi
3.2.2.1 Penamaan
Parameter bertipe sama ditulis dalam kalimat yang sama:
prosedur Foo(Param1, Param2, Param3: Integer; Param4: string);
3.2.2.2 Penamaan
Semua parameter harus bermakna; dan bila nama parameter sama dengan nama atribut lainnya, tambahkan awalan 'A', misalnya:
prosedur SomeProc(AUserName: string; AUserAge: integer);
3.2.2.3 Konflik penamaan
Ketika dua unit yang digunakan menyertakan fungsi atau prosedur dengan nama yang sama, maka ketika Anda mereferensikan fungsi atau prosedur ini, fungsi atau prosedur dalam unit tersebut dinyatakan kemudian dalam klausa penggunaan akan dieksekusi. Untuk menghindari 'ketergantungan klausa penggunaan' ini, Anda perlu menulis sumber lengkap dari fungsi atau prosedur saat mereferensikannya. Misalnya:
SysUtils.FindClose(SR);
Windows.FindClose(Menangani);
3.3 Variabel
3.3.1 Penamaan dan format variabel
Pertama, semua variabel harus memiliki nama yang bermakna sehingga anggota tim yang lain dapat dengan mudah memahami arti dari variabel tersebut. Penamaan variabel dapat menggunakan nama sinonim bahasa Inggris dapat menggunakan beberapa kata bahasa Inggris, namun huruf pertama setiap kata harus kapital. Misalnya:
var
Format Penulisan::string;
Sementara itu, singkatan tertentu dapat digunakan untuk beberapa jenis tertentu sebagai berikut:
tipe penunjuk
P
jenis rekaman
Rek
tipe larik
Arr
baik
Kelas
Variabel kontrol loop biasanya menggunakan karakter tunggal seperti: i, j, atau k. Juga diperbolehkan menggunakan nama yang bermakna seperti UserIndex.
3.3.2 Variabel lokal
Penggunaan variabel lokal dalam suatu prosedur mengikuti aturan penamaan untuk semua variabel lainnya.
3.3.3 Variabel global
Usahakan untuk tidak menggunakan variabel global. Jika Anda harus menggunakan variabel global, Anda harus menambahkan awalan 'g', dan jenis variabel harus tercermin dalam nama variabel. Misalnya:
gprecUserCount: titik;//Variabel global bernama UserCount, tipenya adalah penunjuk ke suatu struktur
Namun variabel global dapat digunakan di dalam modul. Semua variabel global dalam modul harus diawali dengan 'F'. Jika data perlu dipertukarkan antara beberapa modul, hal ini perlu dicapai dengan mendeklarasikan atribut. Misalnya:
jenis
TFormOverdraftReturn = kelas(TForm)
pribadi
{Deklarasi pribadi}
Nama Fuser: string;
Jumlah Fuser: Integer;
Prosedur SetUserName(Nilai: string);
Fungsi Dapatkan Nama Pengguna: string;
publik
{Pernyataan publik}
properti Nama Pengguna: string baca GetUserName tulis SetUserName;
properti UserCount: Integer baca FuserCount tulis FuserCount;
akhir;
3.4 Tipe
3.4.1 Protokol kasus
Ketik nama untuk kata yang dicadangkan harus huruf kecil semua. Tipe API Win32 biasanya menggunakan huruf kapital semua. Untuk tipe lainnya, huruf pertama menggunakan huruf kapital dan sisanya menggunakan huruf kecil.
var
MyString: string; // kata yang dicadangkan
Pegangan Jendela: HWND; // tipe API Win32
I: Integer; // pengenal tipe yang diperkenalkan di Unit sistem
3.4.2 Jenis titik mengambang
Usahakan untuk tidak menggunakan tipe Real. Ini hanya untuk kompatibilitas dengan kode Pascal yang lama. Cobalah untuk menggunakan tipe Double. Tipe Double dioptimalkan untuk prosesor dan bus data dan merupakan struktur data standar yang ditentukan oleh IEEE. Bila nilainya melebihi rentang Double, gunakan Extended. Namun Extended tidak didukung oleh Java. Namun, tipe Single dapat digunakan ketika menggunakan DLL yang ditulis dalam bahasa lain.
3.4.3 Jenis pencacahan
Nama tipe enumerasi harus bermakna dan nama tipe harus diawali dengan 'T'. Nama isi tipe enumerasi harus memuat singkatan dari nama tipe enumerasi, misalnya:
TSongType = (stRock, stClassical, stCountry, stAlternative, stHeavyMetal, stRB);
3.4.4 Tipe larik
Nama tipe array harus bermakna dan nama tipe harus diawali dengan 'T'. Jika Anda mendeklarasikan pointer ke suatu tipe array, Anda harus mengawali nama tipe tersebut dengan 'P', misalnya:
jenis
PCycleArray = ^TCycleArray;
TCycleArray = array[1..100] bilangan bulat;
3.4.5 Jenis rekaman
Nama tipe rekaman harus bermakna dan nama tipe harus diawali dengan 'T'. Jika Anda mendeklarasikan pointer ke suatu tipe array, Anda harus mengawali nama tipe tersebut dengan 'P', misalnya:
jenis
PEkaryawan = ^TEkaryawan;
Karyawan TE=catatan
Nama Karyawan: string
Tingkat Karyawan: Ganda;
akhir;
Kategori 3.5
3.5.1 Penamaan dan format
Nama kelas harus bermakna dan nama tipe harus diawali dengan 'T'. Misalnya:
jenis
Pelanggan = kelas(TObjek)
Nama instance kelas biasanya berupa nama kelas dikurangi 'T'. Misalnya:
var
Pelanggan: Pelanggan;
3.5.2 Variabel dalam kelas
3.5.2.1 Penamaan dan format
Nama kelas harus bermakna dan nama tipe harus diawali dengan 'F'. Semua variabel harus berbentuk empat dimensi. Jika Anda perlu mengakses variabel ini dari luar, Anda perlu mendeklarasikan sebuah atribut
3.5.3 Metode
3.5.3.1 Penamaan dan format
Penamaan dan format yang sama untuk fungsi dan prosedur.
3.5.3.2 Metode akses properti
Semua metode akses properti harus ditampilkan secara pribadi atau dilindungi. Penamaan metode akses atribut sama dengan fungsi dan prosedur, selain itu metode pembaca harus menggunakan awalan 'Dapatkan'. Metode penulis harus menggunakan awalan 'Set'. Parameter metode tulis harus diberi nama 'Nilai', dan tipenya harus konsisten dengan properti yang akan ditulis. Misalnya:
TSomeClass = kelas(TObject)
pribadi
fsomeField: Bilangan bulat;
terlindung
fungsi GetSomeField: Integer;
prosedur SetSomeField( Nilai: Integer);
publik
properti SomeField: Integer baca GetSomeField tulis SetSomeField;
akhir;
3.6 Properti
3.6.1 Penamaan dan format
Konsisten dengan nama variabel kelas yang diawali dengan 'F' yang digunakan untuk beroperasi.
3.7 Dokumentasi
3.7.1 File proyek
3.7.1.1 Struktur direktori proyek
Direktori beranda program--Bin (jalur tempat aplikasi berada)
-Db (jalur ke database lokal)
-Doc (jalur dimana dokumen berada)
-Hlp (jalur ke file bantuan)
-Backup (jalur cadangan)
-Tmp (jalur file sementara)
3.7.1.2 Penamaan
File proyek harus memiliki nama yang bermakna. Misalnya: File proyek informasi sistem di Delphi bernama SysInfo.dpr.
3.7.2 Berkas formulir
3.7.2.1 Penamaan
Sesuai dengan nama Form: Misal: jika nama Form adalah FormMain, maka nama file Form adalah FormMain.frm.
3.7.3 File Modul Data
3.7.3.1 Penamaan
File modul data harus diberi nama yang bermakna dan diawali dengan 'DM'. Misalnya: Modul data pengguna bernama 'DMCustomers.dfm'.
3.7.4 File Modul Data Jarak Jauh
3.7.4.1 Penamaan
File modul data jarak jauh harus diberi nama yang bermakna dan menggunakan 'RDM' sebagai awalannya. Misalnya: modul data jarak jauh pengguna diberi nama 'RDMCustomers.dfm'.
3.7.5 Berkas satuan
3.7.5.1 Satuan Biasa
3.7.5.1.1 Penamaan file unit
File unit harus diberi nama yang bermakna dan menggunakan 'unit' sebagai awalan. Misalnya: Satuan umum diberi nama 'UnitUmum'.
3.7.5.2 Bentuk Satuan
3.7.5.2.1 Penamaan
Nama file unit Formulir harus sesuai dengan nama Formulir. Misal: jika form utama bernama FormMain.pas, maka nama file Unit Form adalah: UnitFormMain.
3.7.5.3 Unit Modul Data
3.7.5.3.1 Penamaan
Nama file unit Modul Data harus sesuai dengan nama Modul Data. Contoh: jika Modul Data utama bernama DMMain.pas, maka nama file Unit Modul Data adalah: UnitDMMain.
3.7.5.4 Tajuk berkas
Tujuan, penulis, tanggal, masukan dan keluaran file harus ditulis di bagian atas semua file. Misalnya:
{
Tanggal modifikasi:
pengarang:
menggunakan:
Struktur modul ini terdiri dari:
}
3.7.6 Formulir dan Modul Data Formulir
3.7.6.1 Bentuk kelas
1. Membentuk standar penamaan kelas
Kelas formulir harus diberi nama yang bermakna dan diawali dengan 'TForm'. Misalnya: Nama kelas Tentang Formulir adalah:
TTentangForm = kelas(TForm)
Nama formulir utamanya adalah
TMainForm = kelas(TForm)
2. Standar penamaan untuk instance kelas Formulir
Nama instance kelas Formulir harus konsisten dengan nama kelas Formulir dengan 'T' dihilangkan. Misalnya:
Ketik Nama
Nama Instance
Tentang Formulir
Tentang Formulir
Formulir Utama
Formulir Utama
Formulir Masuk Pelanggan
Formulir Masuk Pelanggan
3.7.6.2 Formulir Modul Data
3.7.6.2.1 Standar Penamaan Formulir Modul Data
Kelas Formulir Modul Data harus diberi nama yang bermakna dan menggunakan 'TDM' sebagai awalan. Misalnya:
TDMPelanggan = kelas(TDataModule)
TDMOrders = kelas(TDataModule)
3.7.6.2.2 Standar penamaan instans Modul Data
Nama instance kelas Formulir Modul Data harus konsisten dengan nama kelas Formulir Modul Data dengan huruf 'T' dihilangkan. Misalnya:
Ketik Nama
Nama Instance
Modul Data Pelanggan T
Modul Data Pelanggan
TordersDataModule
Modul Data Pesanan
3.8 Kontrol
3.8.1 Penamaan instance kontrol
Contoh suatu kontrol harus diawali dengan nama kelas kontrol dikurangi 'T', misalnya:
Nama Tedit dimana nama pengguna dimasukkan adalah: EditUserName.
3.8.2 Singkatan dari kontrol
Singkatan berikut ini dapat digunakan untuk nama kontrol, namun singkatan yang digunakan ditambahkan tanda '_' di antara nama kontrol:
3.8.2.1 Tab Standar
mm TMainMenu
pm TPopupMenu
mmiTMainMenuItem
pmiTPopupMenuItem
lblTLabel
edt TEdit
mem TMemo
tapi TButton
cb TCheckBox
rb TRadioButton
lb TListBox
cb TComboBox
scbTScrollBar
gb TGroupBox
rg TRadioGroup
pnlTPanel
cl TCommandList
3.8.2.2 Tab Tambahan
bbtn TBitBtn
sbTSpeedButton
saya TMaskEdit
sg TStringGrid
dgTDrawGrid
imgTImage
shp TShape
bvl
sbxTScrollBox
clb TCheckListbox
spl TSplitter
stx TStaticText
cht TChart
3.8.2.3 Tab Win32
tbcTTabControl
pgcTPageControl
IlTIImageList
kembali TRichEdit
tbr TTrackBar
prb TProgressBar
ud TUpDown
hk THotKey
ani TAnimate
dtpTDateTimePicker
tvTTreeView
lv TListView
hdrTHeaderControl
stb TStatusBar
tlb TToolBar
clbTCoolBar
3.8.2.4 Tab Sistem
tm Timer
pb TPaintBox
mpTMediaPlayer
olec TOleContainer
ddccTDDEClientConv
ddciTDDEClientItem
ddscTDDEServerConv
ddsiTDDEServerItem
3.8.2.5 Tab Internet
cskTClientSocket
sskTServerSocket
wbd TWebDispatcher
pp TPageProduser
tp TQueryTableProduser
dstp TDataSetTableProduser
nmdt TNMDayTime
nec TNMEcho
nf TNMFinger
nftpTNMFtp
nhttpTNMHttp
nMsg TNMMsg
nmsgTNMMSGSServ
nntp TNMNNTP
npop TNMPop3
nuup TNMUUPProcessor
smtp TNMSMTP
pertama TNMStrm
pertama TNMStrmServ
ntm TNMTime
nudpTNMUdp
psk TPowerSock
ngs TNMGeneralServer
htmlTHtml
urlTNMUrl
smlTSimpleMail
3.8.2.6 Tab akses data
dsTDataSource
tbl TTabel
qry TQuery
spTStoredProc
dbTDataBase
ssn sesi
bmTBatchMove
usql TUpdateSQL
3.8.2.7 Tab Kontrol Data
dbgTDBGrid
dbn TDBNavigator
dbtTDBTeks
dbeTDB Sunting
dbm TDBMemo
dbitTDBIimage
dblb TDBListBox
dbcb TDBComboBox
dbch TDBCheckBox
dbrg TDBRadioGroup
dbll TDBLookupListBox
dblc TDBLookupComboBox
dbreTDBRichSunting
dbcgTDBCtrlGrid
dbchTDDBChart
3.8.2.8 Tab Kubus Keputusan
dcb TDecisionCube
dcq TDecisionQuery
dcs TDecisionSource
dcp TDecisionPivot
dcg TDecisionGrid
dcgr TDecisionGraph
3.8.2.9 Tab Laporan QR
qr TQuickReport
qrsd TQRSubDetail
qrb TQRBand
qrcb TQRCchildBand
qrg TQRGgroup
qrl TQRLabel
qrtTQRTeks
qre TQRExpr
qrs TQRSysData
qrm TQRMemo
qrrt TQRRichText
qrdr TQRDBRichText
qrsh TQRSBentuk
qri TQRIimage
qrdi TQRDBMImage
qrcr TQRCompositeLaporan
qrp TQRPulasan
qrch TQRChart
3.8.2.10 Tab Dialog
OpenDialog TOpenDialog
SimpanDialog TSimpanDialog
OpenPictureDialog TOpenPictureDialog
SavePictureDialog TSavePictureDialog
FontDialog TFontDialog
Dialog Warna TDialog Warna
Dialog Cetak TPrintDialog
PrinterSetupDialog TPrintSetupDialog
TemukanDialog TTemukanDialog
GantiDialog TReplaceDialog
3.8.2.11 Tab Win31
dbll TDBLookupList
dblc TDBLookupCombo
tsTTabSet
ol UNTUKGaris Besar
tnb TTabbedNoteBook
nb TNoteBook
hdrTHeader
flbTFileListBox
dlb TDirectoryListBox
dcb TDriveComboBox
fcb TFilterComboBox
3.8.2.12 Tab Sampel
gg TGauge
cg TColorGrid
spb TSpinButton
spetspinSunting
dol TDirectoryOutline
kalender kalender
ibea TIBEEventAlerter
3.8.2.13 Tab ActiveX
cfx TChartFX
vspTVSSpell
f1bTF1Buku
vtc TVTChart
grp TGraph
3.8.2.14 Tab Midas
Penyedia prvT
cdsTClientDataSet
qcds TQueryClientDataSet
Koneksi dcomTDCOM
oleeTOleEnterpriseConnection
sckTSocketConnection
rms TRemoteServer
pertengahan Koneksi Tmidas
4. Ubah spesifikasi
Ketentuan peraturan ini hanya berlaku untuk program yang telah disertakan dalam manajemen konfigurasi. Pada jenis modifikasi ini, diharuskan untuk mempertahankan konten sebelum modifikasi dan mengidentifikasi konten yang dimodifikasi dan baru. Dan tambahkan informasi yang diperlukan seperti pengubah, tanggal modifikasi, deskripsi modifikasi, dll. ke header file.
4.1 Memodifikasi catatan sejarah
Saat membuat modifikasi yang disetujui pada file sumber, pengubah harus menambahkan item riwayat modifikasi ke header file program. Untuk setiap modifikasi selanjutnya, pengubah harus mengisi informasi berikut pada item:
Pengubah
waktu modifikasi
Alasan modifikasi
Petunjuk modifikasi adalah cara memodifikasi
4.2 Tambahkan baris kode baru
Baris kode baru harus diawali dan diikuti dengan baris komentar.
// Pengubah, waktu modifikasi, deskripsi modifikasi
Tambahkan baris kode baru
// Akhir modifikasi
4.3 Hapus baris kode
Gunakan baris komentar sebelum dan sesudah menghapus baris kode.
//Pengubah, waktu modifikasi, deskripsi modifikasi
//Baris kode yang akan dihapus (beri komentar pada pernyataan yang akan dihapus)
//Akhir modifikasi
4.4 Memodifikasi baris kode
Ubah baris kode dengan menghapus baris kode lalu menambahkan baris kode baru.
//Pengubah, waktu modifikasi, deskripsi modifikasi
//Baris kode sebelum modifikasi
//Akhir modifikasi
//Baris kode yang dimodifikasi
Baris kode yang dimodifikasi
//Akhir modifikasi