Panduan Gaya Objek Pascal - Oleh Charles Calvert
(Panduan Gaya Pengkodean Objek Pascal - Diterjemahkan oleh: Tommy Tong)
Kami mengakui bahwa banyak studio atau individu mapan memiliki praktik pemrogramannya sendiri yang berbeda dari yang dijelaskan dalam artikel ini, namun, kami sangat menyarankan Anda menggunakan alat untuk mengonversi kode Anda ke kode gaya Borland, lalu Kirim ke Borland, Proyek JEDI atau repositori kode sumber publik lainnya. Kami tidak ingin memaksa Anda untuk mengubah kebiasaan Anda, namun kami bersikeras bahwa semua kode yang bekerja dengan produk Borland mengikuti kebiasaan yang dijelaskan dalam artikel ini.
Object Pascal adalah bahasa desain yang indah. Keterbacaan yang kuat adalah salah satu kelebihannya. Standar yang dirancang dalam artikel ini akan meningkatkan keterbacaan kode Object Pascal. Ketika pengembang mengikuti kebiasaan sederhana yang ditunjukkan dalam artikel ini, kebiasaan tersebut juga akan menjadi standar, yang akan menguntungkan semua pengembang Delphi menggunakan gaya pengkodean yang terpadu dan mudah dibaca. Upaya untuk menegakkan standar ini akan meningkatkan nilai kode sumber bagi pengembang, terutama selama fase siklus pemeliharaan dan debugging.
Meskipun kami memercayai dan mengagumi gaya yang dipromosikan dalam artikel ini, kami belum tentu mendukungnya karena gaya tersebut benar dan salah bagi orang lain. Namun, kami yakin bahwa standar yang dianut oleh sebagian besar pengembang memiliki validitasnya, jadi kami tetap mendukung dan mempertahankan gaya ini. Otak manusia selalu beradaptasi dengan standar dan menemukan cara untuk dengan cepat mengatur pola-pola yang sudah dikenal sehingga maknanya dapat dipahami dengan cepat dan efisien. Persyaratan inilah yang menetapkan standar yang akan memudahkan banyak orang untuk membaca kode. Jika pedoman kami terasa asing bagi Anda untuk pertama kalinya, maka kami meminta Anda untuk terus menggunakannya untuk sementara waktu dan Anda akan terbiasa dengannya. Atau, jika Anda mau, Anda dapat mempertahankan gaya Anda sendiri dan mengonversinya melalui program yang mematuhi standar kami, lalu Anda dapat mengirimkan kode Anda ke Borland atau repositori lainnya.
Beberapa editor teks, seperti Visual SlickEdit, dapat membantu Anda memformat kode dengan gaya tertentu.
Pemformat gratis yang dikembangkan oleh Egbert van Nes tersedia di:
http://www.slm.wau.nl/wkao/delforexp.html
Program komersial lain untuk Delphi adalah CrackerJax:
http://www.kineticsoftware.com/html/products.html
--------------------------------------------------- ----
1.0 Pendahuluan
Artikel ini bukan merupakan upaya untuk mendefinisikan aturan sintaksis untuk bahasa Object Pascal. Misalnya: meletakkan segel ";" di depan yang lain adalah ilegal; Jadi saya tidak akan menampilkan aturan tata bahasa di artikel ini. Artikel ini bertujuan untuk mendefinisikan perilaku yang sesuai di mana bahasa memberikan pilihan. Saya biasanya diam ketika hanya ada satu metode pengendalian.
1.1 Latar Belakang
Pedoman yang disajikan dalam artikel ini didasarkan pada bagian dari kode sumber Delphi. Kode sumber Delphi mengikuti pedoman ini dengan tepat. Jika Anda menemukan pelanggaran terhadap prinsip-prinsip ini, maka prinsip-prinsip ini, bukan kode sumber yang tidak pasti, harus menjadi pedoman Anda. Namun, Anda dapat menggunakan kode asli sebagai pelengkap prinsip-prinsip ini, setidaknya untuk membantu Anda mendapatkan gambaran umum tentang bentuk kode Anda sendiri.
1.2 Terima kasih
Format dalam artikel ini didasarkan pada upaya yang dilakukan untuk menentukan standar gaya untuk bahasa Java. Java tidak berpengaruh pada aturan format kode sumber Object Pascal, namun dokumentasi di situs Sun adalah dasar dari artikel ini. Di beberapa tempat khusus gaya dan format artikel ini sangat terinspirasi oleh "Panduan Gaya Coding untuk Java WorkShop dan Java Studio Programming" (Achut Reddy, "Panduan Coding untuk Java WorkShop dan Java Studio"). Artikel dapat ditemukan di URL ini: http://www.sun.com/workshop/java/wp-coding
Tim Delphi telah memberikan kontribusi yang signifikan dalam penyelesaian artikel ini. Tanpa bantuan mereka, artikel ini tidak akan selesai.
2.0 File sumber
Kode sumber Objek Pascal terutama dibagi menjadi file sumber tunggal dan file proyek, dan semuanya mengikuti konvensi yang sama. File proyek Delphi memiliki ekstensi .DPR. Ini adalah file utama proyek. Setiap file unit yang digunakan dalam suatu proyek memiliki ekstensi .PAS. File lain, seperti file batch, file HTML, atau DLL juga dapat berperan dalam proyek, namun artikel ini hanya mencakup file proyek dan file unit.
2.1 Penamaan file sumber
Object Pascal mendukung nama file yang panjang. Jika Anda menggunakan beberapa kata untuk membentuk satu nama, sebaiknya gunakan huruf kapital awal untuk setiap kata: MyFile.pas. Ini dianggap tanda kurung atau camelCase. Ekstensi harus dalam huruf kecil. Untuk alasan historis, kode sumber Delphi sering menggunakan pola penamaan 8:3, namun pengembang tidak harus dibatasi oleh aturan di atas dan beralih ke penggunaan tim Delphi.
Jika Anda menerjemahkan file header C/C++, maka file Pascal yang Anda terjemahkan harus menggunakan nama file utama yang sama dengan file header C/C++, dan menggunakan .PAS sebagai ekstensinya. Misalnya: Windows.h -> Windows.pas. Jika sintaks Pascal memaksa Anda untuk menggabungkan beberapa file header menjadi satu file unit, maka nama file dari file header yang berisi file header lainnya akan digunakan sebagai nama file unit baru. Misal: Windows.h berisi file WinBase.h, maka file unit baru tersebut diberi nama Windows.pas.
2.2 Organisasi file sumber
Semua file unit Object Pascal harus berisi elemen berikut dengan urutan sebagai berikut:
Komentar Blok Hak Cipta/Identitas
nama satuan
segmen antarmuka
Bagian implementasi
Sebuah terminator "akhir."
Setidaknya harus ada satu baris kosong di antara setiap bagian.
Elemen lain harus disusun dalam urutan apa pun yang menurut Anda paling tepat. Namun hak cipta seharusnya muncul di awal berkas, lalu nama unit, lalu definisi kondisional, arahan kompiler, atau pernyataan penyertaan, dan kemudian klausa penggunaan:
{******************************************************* *****}
{ }
{Perpustakaan Komponen Visual Borland Delphi }
{ }
{ Hak Cipta (c) 1995,98 Inprise Corporation }
{ }
{******************************************************* *****}
Tombol satuan ;
{$S-,W-,R-}
{$C PRELOAD}
antarmuka
kegunaan
Windows, Pesan, Kelas,
Kontrol, Formulir, Grafik,
StdCtrls, ExtCtrls, CommCtrl;
Jika Anda meletakkan bagian type sebelum bagian const, atau mencampur keduanya, tidak ada pengaruhnya.
Bagian implementasi perlu menuliskan implementasinya terlebih dahulu, kemudian klausa penggunaan, dan kemudian yang lain menyertakan deklarasi atau indikator lainnya:
pelaksanaan
kegunaan
Const, SysUtils, ActnList,
Daftar Gambar;
{$R TOMBOL.RES}
2.2.1 Komentar Blok Hak Cipta/Identitas
Setiap file sumber harus dimulai dengan komentar blok yang berisi informasi versi dan pemberitahuan hak cipta standar. Informasi versi dapat terlihat seperti ini:
{******************************************************* *****}
{ }
{ Widget Berlimpah }
{ }
{ Hak Cipta (c) 1995,98 Perusahaan Anda }
{ }
{******************************************************* *****}
Pemberitahuan hak cipta harus memuat setidaknya baris berikut:
Hak Cipta (C) Tahun Pemilik Hak Cipta
Jika Anda adalah pihak ketiga yang mengembangkan perangkat lunak untuk Borland, Anda dapat menambahkan nama Anda sendiri di akhir hak cipta:
{******************************************************* *****}
{ }
{Perpustakaan Komponen Visual Borland Delphi }
{ Hak Cipta (c) 1995,99 Borland Internasional }
{ Dibuat oleh Proyek JEDI }
{ }
{******************************************************* *****}
2.2.2 deklarasi satuan
Setiap file unit harus memiliki deklarasi unit. unit adalah kata khusus, jadi harus menggunakan huruf kecil. Nama unit boleh campur huruf besar/kecil, namun harus sama dengan nama file unit file. Misalnya:
unit Unit Saya;
Maka nama file unitnya adalah MyUnit.pas. Dalam sistem file, ini berfungsi sebagai entri untuk file ini.
2.2.3 menggunakan pernyataan
Dalam sebuah unit, deklarasi penggunaan harus di-bootstrap dengan penggunaan yang lebih kecil. Nama unit yang direferensikan mengikuti konvensi kapitalisasi yang digunakan ketika didefinisikan dalam unitnya sendiri:
menggunakan Unit Saya;
Setiap nama unit dipisahkan dari nama unit yang berdekatan dengan koma, dan nama unit terakhir diikuti dengan titik koma:
kegunaan
Windows, SysUtils, Kelas, Grafik, Kontrol, Formulir,
Info Ketik;
Juga benar untuk menambahkan nama unit mulai dari baris penggunaan berikutnya dan menambahkan nama unit langsung setelah penggunaan.
menggunakan Windows, SysUtils, Kelas, Grafik, Kontrol, Formulir,
Info Ketik;
Anda dapat memformat daftar nama unit untuk digabungkan dalam batas 80 karakter, atau memiliki satu baris per nama unit.
2.2.4 Definisi kelas dan antarmuka
Definisi kelas dimulai dengan dua spasi, diikuti dengan awalan "T". Awalannya harus menggunakan huruf kapital, dan setiap kata yang disematkan harus diawali dengan huruf kapital. Jangan gunakan karakter tab "Tab" dalam kode sumber Object Pascal. contoh:
Kelas Saya
Ikuti pengidentifikasi dengan spasi, lalu tanda sama dengan, lalu kelas kata, yang harus menggunakan huruf kecil:
TMyClass = kelas
Jika kelas Anda mewarisi dari leluhur, Anda perlu menambahkan tanda kurung kiri dan kanan yang berisi kelas leluhur:
TMyClass = kelas(TObject)
Indikator rentang berjarak dua spasi dari margin dan muncul dalam urutan berikut:
TMyClass = clss(TObject)
pribadi
melindungi
publik
diterbitkan
akhir;
Data biasanya dideklarasikan hanya di bagian privat, dan pengidentifikasinya dimulai dengan "F". Semua pernyataan tersebut harus berjarak 4 spasi dari margin:
TMyClass = kelas (TObject)
pribadi
Tanggal FMy: Integer;
fungsi GetDate: Integer;
prosedur SetData(Nilai: Integer);
publik
diterbitkan
properti MyData: Integer baca GetData tulis SetData;
akhir ;
Antarmuka mengikuti aturan yang sama seperti antarmukanya, hanya saja Anda harus mengabaikan indikator cakupan dan data pribadi, dan menggunakan antarmuka kata alih-alih kelas kata.
konvensi penamaan
Kecuali untuk kata-kata dan indikator yang dicadangkan, yaitu huruf kecil, semua pengidentifikasi Pascal harus menggunakan format camelCase, yaitu huruf pertama dari setiap pengidentifikasi harus menggunakan huruf kapital, dan huruf pertama dari kata yang disematkan juga harus menggunakan huruf kapital itu hanya mengambil huruf pertama.
Pengenal Saya
Kelas FTP Saya
Pengecualian utama pada aturan ini adalah kasus terjemahan file header, yang harus mengikuti konvensi penamaan di file header asli. Misalnya:
WM_LBUTTONDOWN, jangan tulis wm_LButtonDown.
Kecuali untuk terjemahan file header, jangan gunakan garis bawah untuk memisahkan kata. Nama kelas harus berupa kata benda atau frasa kata benda. Nama antarmuka atau kelas bergantung pada tujuan yang jelas dan penggunaan antarmuka.
Nama baik:
Formulir Alamat, ArrayIndexOutOfBoundsException
Nama buruk:
ManageLayout //Gunakan frase kata kerja
delphi_is_new_to_me //Gunakan garis bawah
3.1 Penamaan satuan
Lihat deklarasi unit
3.2 Penamaan Kelas/Antarmuka
Lihat deklarasi kelas/antarmuka
3.3 Penamaan domain/bidang
Gunakan format camelCase. Mulailah dengan huruf kapital "F" dan nyatakan semua data secara pribadi, menggunakan properti atau pengambil dan penyetel untuk menyediakan akses publik. Misalnya: gunakan nama GetSomething untuk memberi nama fungsi yang mengembalikan nilai bidang/bidang internal, dan menggunakan SetSomething untuk memberi nama prosedur yang menetapkan nilai bidang/bidang.
Jangan gunakan semua huruf besar di bagian const kecuali diperlukan untuk terjemahan file header.
Delphi dikembangkan di California, jadi kami tidak menyarankan penggunaan token kecuali diperlukan untuk terjemahan file header.
benar:
FMyString: rangkaian;
Salah:
lpstrMyString: tali;
Tentu saja tata nama Hongaria dipertahankan dalam definisi jenis enumerasi:
TBitBtnKind = (bkCustom, bkOK, bkCancel, bkHelp,
bkYa, bkTidak, bkTutup, bkBatalkan, bkCoba lagi,
bkignore, bkAll);
Dalam hal ini karakter bk disisipkan sebelum setiap elemen tipe enumerasi ini. bk berarti ButtonKind.
Saat mempertimbangkan konvensi penamaan, hindari penggunaan nama karakter tunggal, kecuali untuk variabel zero-time dan variabel loop.
Hindari penggunaan variabel "l" (L) karena sulit dibedakan dengan "1" (satu) baik pada printer maupun monitor.
3.4 Penamaan metode
Penamaan metode juga menggunakan format camelCase. Konvensi penamaan metode sama dengan penamaan bidang non-const, namun dapat dibedakan dari konteksnya. Penamaan metode harus menerapkan penggunaan kata kerja atau frasa kata kerja. Misalnya:
//Penamaan metode yang bagus:
TampilkanStatus, DrawCircle, AddLayoutComponent
//Penamaan metode yang buruk:
MouseButton //frasa kata benda, tanpa fungsi deskripsi
drawCircle //Mulai dengan huruf kecil
add_layout_component //Garis bawah digunakan
//Fungsi metode berikut ini kurang jelas. Apakah ia mulai menjalankan suatu layanan (lebih baik: StartServer) atau menentukan apakah suatu layanan sedang berjalan (lebih baik: IsServerRunning)?
ServerRunning //Frase kata kerja, tapi bukan perintah
Sebuah metode untuk mendapatkan atau mengatur beberapa properti kelas harus disebut GetProperty atau SetProperty, dimana Property mewakili nama properti. Misalnya:
Dapatkan Tinggi, Set Tinggi
Sebuah metode yang menguji properti Boolean suatu kelas harus diberi nama IsVisible, dimana Visible mewakili nama properti tersebut. Misalnya:
Dapat Diubah Ukurannya, Dapat Dilihat
3.5 Memberi nama variabel lokal
Aturan penamaan variabel lokal sama dengan aturan penamaan field/field, hanya saja tidak digunakan “F”. Lihat bagian 3.3.
3.6 Kata-kata yang dicadangkan
Kata-kata dan indikator yang dicadangkan harus menggunakan huruf kecil semua. Hal ini terkadang agak membingungkan. Misalnya: Integer adalah pengenal dan muncul dengan huruf pertama kapital. Kata-kata yang dicadangkan string semuanya huruf kecil.
3.7 Ketik deklarasi
Semua deklarasi nama tipe dimulai dengan huruf T dan mengikuti nama yang sama dengan kelasnya.
4.0 Penggunaan ruang kosong
4.1 Garis kosong
Baris kosong dapat meningkatkan keterbacaan dengan mengelompokkan segmen kode yang terkait secara logis. Baris kosong juga dapat digunakan di tempat-tempat berikut:
Setelah blok komentar hak cipta, deklarasi paket (package), dan bagian impor (import).
deklarasi antar kelas.
antar deklarasi metode.
4.2 Spasi
Object Pascal adalah bahasa yang sangat jelas dan mudah dibaca. Biasanya, Anda tidak perlu menambahkan banyak spasi untuk memisahkan baris dalam kode Anda. Artikel berikut memberikan beberapa panduan untuk menggunakan spasi:
4.2.2 Spasi tidak boleh digunakan:
Antara nama metode dan tanda kurung buka;
Sebelum atau sesudah operator .(dot);
antara operator unary dan operannya;
Antara suatu tipe dan ekspresi yang diberikannya;
setelah braket kiri dan sebelum braket kanan;
setelah tanda kurung siku kiri dan sebelum tanda kurung siku kanan;
sebelum larangan;
Misalnya:
//Penggunaan yang benar:
fungsi TMyClass.MyFunc(Nilai var: Integer);
Pointer Saya := @Catatan Saya;
Kelas Saya := TMyClass(Penunjuk Saya);
Bilangan Bulat Saya := ArrayBilangan Bulat Saya[5];
//Penggunaan yang salah:
fungsi TMyClass.MyFunc( Nilai var: Integer );
Pointer Saya := @Catatan Saya;
Kelas Saya := TMyClass ( Pointer Saya ) ;
Bilangan Bulat Saya := ArrayBilangan Bulat Saya [ 5 ] ;
4.3 Lekukan
Anda harus selalu membuat indentasi semua level indentasi sebanyak dua spasi. Dengan kata lain, tingkat pertama menjorok dua spasi, tingkat kedua menjorok empat spasi, tingkat ketiga menjorok enam spasi... Jangan gunakan karakter tab Tab.
Tentu saja masih ada beberapa pengecualian. Kata-kata yang dicadangkan seperti unit, kegunaan, jenis, antarmuka, implementasi, inisialisasi, dan finalisasi selalu dalam huruf besar. Pengidentifikasi akhir sel juga merupakan tingkat atas. Dalam file proyek, program dan awal dan akhir utama juga berada di grid atas. Blok awal..akhir utama harus diindentasi setidaknya dua spasi.
4.4 Lanjutan
Baris harus dibatasi hingga 80 kolom. Baris dengan lebih dari 80 kolom harus dibagi menjadi beberapa baris berturut-turut. Semua baris berikutnya harus mengikuti baris pertama deklarasi ini dan diberi indentasi dengan dua karakter spasi.
Misalnya:
//benar:
fungsi CreateWindowEx(dwExStyle: DWord;
lpClassName: PChar;
dwGaya: DWORD; X, Y, nLebar, nTinggi: Integer;
hWndParent: HWND; hMenu: HMENU; contoh: HINST;
lpParam: Penunjuk): HWND; stdcall ;
jika ((X = Y) atau (Y = X) atau
(Z = P) atau (F = J) maka
mulai
S := J;
akhir ;
Jangan gabungkan baris antara parameter dan tipenya kecuali daftar dipisahkan koma, dalam hal ini gabungkan sebelum parameter terakhir sehingga nama tipe dimulai pada baris berikutnya. Tidak boleh ada spasi antara titik dua dan variabelnya, dan harus ada satu spasi antara titik dua dan nama tipe.
//benar:
prosedur Foo(Param1: Integer; Param2: Integer);
//kesalahan:
prosedur Foo( Param :Bilangan Bulat; Param2:Bilangan Bulat);
Baris berikutnya tidak boleh dimulai dengan operator biner. Hindari memotong garis di mana spasi putih biasanya tidak muncul, seperti antara nama metode dan tanda kurung buka, atau antara nama array dan tanda kurung buka. Jika Anda harus memutus garis pada situasi di atas, putuskan garis setelah tanda kurung siku pembuka atau tanda kurung siku bukaan. Jangan letakkan mulai pada baris yang sama dengan kode lainnya.
Misalnya:
//kesalahan:
while (LongExpression1 atau LongExpression2 ) dimulai
//Lakukan Sesuatu
//Lakukan SesuatuLain;
akhir ;
//benar
sementara (LongExpression1 atau longExpression2) lakukan
mulai
//Lakukan Sesuatu
//Lakukan SesuatuLain;
akhir ;
jika (LongExpressiong1) atau
(Ekspresi Panjang2) atau
(Ekspresi Panjang3) lalu
5.0 Komentar
Bahasa Object Pascal mendukung dua jenis komentar: komentar blok dan komentar satu baris. Berikut beberapa pedoman penggunaan anotasi:
·Akan bermanfaat untuk menempatkan komentar di bagian atas unit yang menjelaskan tujuan unit
·Sangat membantu untuk menempatkan komentar sebelum deklarasi kelas
·Akan berguna untuk mengatur anotasi sebelum deklarasi metode
·Hindari komentar dengan maksud yang jelas
saya := saya + 1; //Tambahkan satu ke saya
·Ingatlah bahwa komentar yang mudah disalahartikan lebih berbahaya daripada tidak berkomentar sama sekali.
·Hindari memasukkan informasi dalam komentar yang terkesan tidak valid
·Hindari menyematkan tanda bintang atau simbol tipografi lainnya di batas komentar
·Komentar zero-hour, yaitu komentar yang perlu diubah atau dihapus, harus ditandai dengan "???:" sebelum komentar tersebut, agar mudah ditemukan. Secara konseptual, semua komentar zero-time harus dihapus sebelum program dirilis.
// ???: Ubah ini untuk memanggil Sortir ketika sudah diperbaiki
Daftar.MySort;
5.1 Blokir komentar
Object Pascal mendukung dua jenis komentar blok. Yang paling umum digunakan adalah komentar yang diapit sepasang kurung kurawal {}. Tim Delphi menjaga komentar sesedikit dan sesederhana mungkin. Misalnya: Anda sebaiknya menghindari penggunaan tanda bintang untuk membuat pola atau garis dalam komentar Anda. Sebaliknya, gunakan spasi untuk memisahkan komentar Anda, seperti yang Anda lakukan pada dokumen pengolah kata. Kata-kata dalam komentar Anda harus dimulai pada baris yang sama dengan kurung kurawal pertama, seperti kutipan dari DsgnIntf.pas berikut:
{ TPropertiEditor
Mengedit properti komponen, atau daftar komponen,
dipilih ke dalam Object Inspector
editor dibuat berdasarkan jenisnya
properti yang sedang diedit sebagaimana ditentukan oleh jenisnya
didaftarkan oleh...
dll...
DapatkanNilaixxx
Mendapatkan nilai properti pertama di
Properti properti. Memanggil yang sesuai
Metode TProperty GetxxxValue untuk mengambil
nilai.
SetxxxValue Menetapkan nilai semua properti
di properti Properties
Metode TProperty SetXxxxValue untuk menetapkan nilai }
Blokir komentar sering digunakan dalam komentar hak cipta. Juga digunakan untuk mengomentari beberapa baris kode.
Komentar blok yang menjelaskan tujuan metode harus didahului dengan deklarasi metode.
Misalnya:
// BENAR
{ TMyObject.MyMethod
Rutinitas ini memungkinkan Anda mengeksekusi kode }
prosedur TMyObject.MyMethod;
mulai
akhir;
// SALAH
prosedur TMyObject.MyMethod;
{******************************************************* ****
TMyObject.Metode Saya
Rutinitas ini memungkinkan Anda mengeksekusi kode.
******************************************************* * *****}
mulai
akhir;
Jenis komentar blok kedua berisi dua karakter, tanda kurung dan tanda bintang: (* *). Kadang-kadang ini disebut komentar tanda kurung bintang. Anotasi ini umumnya hanya berguna selama pengembangan kode, dan manfaat utamanya adalah memungkinkan anotasi bertingkat memiliki kedalaman kurang dari dua tingkat. Object Pascal tidak mendukung tipe penyarangan komentar yang sama, jadi sebenarnya hanya ada satu tingkat penyarangan: kurung kurawal di dalam kurung kurawal bintang, atau kurung kurawal bintang di dalam kurung kurawal. Anotasi standar Pascal jenis lain dalam anotasi jenis ini akan diabaikan selama Anda tidak menyusunnya. Oleh karena itu, Anda dapat menggunakan sintaks ini untuk mengomentari blok kode besar yang berisi kode dan komentar:
(* prosedur TForm1.Button1Click(Pengirim: TObject);
mulai
Lakukan Ini; // Mulai prosesnya
Lakukan Itu; // Lanjutkan iterasi
{ Kami memerlukan cara untuk melaporkan kesalahan di sini, mungkin menggunakan
akhirnya mencoba memblokir ??? }
CallMoreCode; // Selesaikan prosesnya
akhir ; *)
Dalam hal ini, seluruh metode Button1Click dikomentari, termasuk sub-komentar apa pun di dalamnya.
5.2 Komentar satu baris
Komentar satu baris terdiri dari karakter komentar // dan teks utamanya, dengan spasi di antara teks dan karakter komentar. Jika komentar satu baris berada pada baris yang berbeda dengan kode, maka komentar tersebut harus memiliki tingkat indentasi yang sama dengan kode. Anda dapat menggunakan beberapa komentar satu baris untuk membentuk komentar berukuran besar.
Baris kosong wajib diisi sebelum satu baris komentar atau sekelompok komentar, kecuali baris pertama dari sebuah blok. Jika komentar digunakan untuk beberapa pernyataan, komentar dan kelompok komentar harus diikuti dengan baris kosong. Jika komentar hanya menjelaskan pernyataan pada baris berikutnya, maka tidak perlu diikuti dengan baris kosong.
Misalnya:
// Buka basis data
Tabel1.Buka;
Komentar satu baris juga dapat mengikuti deklarasi kode yang dijelaskannya. Komentar seperti ini terkadang disebut sebagai komentar pelacakan. Setidaknya harus ada satu spasi antara keduanya dan kode. Jika beberapa komentar jejak muncul secara bersamaan dalam satu blok kode, komentar tersebut perlu diselaraskan.
Misalnya:
jika ( bukan IsVisible) maka
Keluar; // tidak ada hubungannya
Inc(StrLength); // menyediakan ruang untuk terminator nol
Hindari menelusuri komentar pada setiap baris kode yang dapat dieksekusi. Biasanya yang terbaik adalah membatasi penggunaan komentar, atau bahkan membiarkannya kosong, di antara blok awal..akhir suatu metode atau fungsi. Komentar panjang dapat muncul di blok komentar sebelum definisi metode dan fungsi.
baik
6.1 Organisasi kelas
Pengorganisasian badan-badan kelas harus mengikuti urutan berikut:
·Deklarasi domain/bidang
·Deklarasi metode
·Definisi atribut
Domain/bidang, properti, dan metode harus diindeks berdasarkan abjad berdasarkan namanya.
6.1.1 Tingkat akses
Kecuali untuk kode yang dihasilkan oleh IDE, penanda cakupan kelas harus berada dalam urutan berikut:
·pernyataan pribadi
·melindungi pernyataan
·pernyataan publik
·Pernyataan yang diterbitkan
Di Object Pascal, anggota kelas memiliki empat tingkat akses: dipublikasikan, publik, dilindungi, dan pribadi—dalam rangka menurunkan kemampuan akses. Tingkat akses default dipublikasikan. Umumnya, seorang anggota harus diberi tingkat akses terendah yang paling sesuai untuknya. Misalnya: anggota yang hanya dapat diakses oleh kelas lain dalam unit yang sama harus dinyatakan privat. Pada saat yang sama, mendeklarasikan anggota dengan tingkat akses rendah juga memberikan peluang bagi kompiler untuk meningkatkan pengoptimalan. Tentu saja, di sisi lain, penggunaan tingkat akses yang rendah mempersulit perluasan subkelas. Jika ada alasan untuk meyakini bahwa suatu kelas akan dijadikan subkelas di masa mendatang, maka anggota yang perlu diwarisi dan diperluas oleh subkelas tersebut harus dinyatakan dilindungi. Properti yang digunakan untuk mengakses data pribadi juga dapat memberikan perlindungan ini.
Anda harus melarang akses publik terhadap data tersebut. Data biasanya dideklarasikan di bagian pribadi, dan akses publik apa pun ke data tersebut harus dilakukan melalui metode atau properti GetXXX, SetXXX.
6.1.8 Deklarasi konstruktor
Metode perlu diurutkan berdasarkan indeks abjad. Yang benar adalah menempatkan konstruktor dan destruktor di awal bagian publik atau menyusunnya berdasarkan abjad.
Jika terdapat beberapa konstruktor atau Anda menggunakan beberapa konstruktor dengan nama yang sama, konstruktor tersebut harus disusun berdasarkan daftar parameter, dengan konstruktor dengan parameter paling sedikit di depan konstruktor dengan parameter terbanyak. Artinya jika ada konstruktor tanpa parameter harus muncul terlebih dahulu. Untuk menjaga kompatibilitas terbaik dengan C++Builder, daftar parameter konstruktor harus unik. C++ tidak memanggil konstruktor berdasarkan namanya, jadi satu-satunya cara untuk membedakan beberapa konstruktor adalah melalui daftar argumennya.
6.2 Deklarasi metode
Jika memungkinkan, deklarasi metode akan muncul dalam satu baris.
Misalnya:
Contoh:
prosedur Pembaruan Gambar(Gambar img, tanda info: Integer,
x: Bilangan bulat, y: Bilangan bulat, w: Bilangan bulat, h: Bilangan bulat)
7.0 Antarmuka
Deklarasi antarmuka memiliki bentuk yang sama dengan deklarasi kelas:
InterfaceName = antarmuka ([ Antarmuka yang diwarisi ])
Antarmuka Tubuh
akhir ;
Deklarasi antarmuka harus diberi indentasi dua spasi, badan antarmuka diberi empat spasi, dan karakter akhir diberi dua spasi.
Tidak ada field/bidang dalam deklarasi antarmuka. Tapi atribut bisa muncul.
Semua metode antarmuka pada dasarnya bersifat publik dan abstrak, dan tidak perlu menyertakan kata kunci tersebut dalam deklarasi antarmuka.
Kecuali dinyatakan lain, deklarasi antarmuka memiliki gaya yang sama dengan deklarasi bertipe sama.
7.1 Organisasi badan antarmuka
Badan antarmuka dapat diatur dalam urutan berikut:
· Deklarasi metode antarmuka
· Deklarasi atribut antarmuka
Metode antarmuka dan properti dideklarasikan dengan gaya yang sama seperti kelas.
8.0 Pernyataan
Pernyataan adalah satu baris atau beberapa baris kode yang diakhiri dengan segel. Sebuah pernyataan tunggal hanya memiliki satu nomor larangan, dan pernyataan gabungan memiliki beberapa nama larangan.
//Ini adalah pernyataan tunggal:
SEBUAH := B;
//Ini adalah pernyataan majemuk:
mulai
B := C;
SEBUAH := B;
akhir ;
8.0.1 Deklarasi tunggal
Jika sebuah pernyataan perlu dibungkus, pernyataan tersebut harus diindentasi dua spasi relatif terhadap baris sebelumnya.
//Misalnya:
Nilai Saya :=
Nilai Saya + (SomeVeryLongStatement / OtherLongStatement);
8.1.1 Deklarasi penugasan dan ekspresi
Maksimal ada satu pernyataan per baris.
Misalnya:
a := b + c; Inc( Hitungan );
a := b+c; //Benar
Inc(Hitungan); //Benar
8.1.2 Deklarasi variabel lokal
Variabel lokal juga menggunakan format camelCase. Jangan gunakan pemimpin "F", yang dicadangkan untuk bidang/field dalam deklarasi kelas.
Misalnya:
var
Data Saya: Bilangan Bulat;
String Saya: string ;
Anda dapat mendeklarasikan beberapa variabel dengan tipe yang sama pada baris yang sama:
var
Ukuran Array, Jumlah Array: Integer;
Kebiasaan deklarasi ini tidak disarankan dalam deklarasi kelas.
8.1.3 Deklarasi array
Biasanya selalu memberi spasi sebelum tanda kurung buka dan setelah tanda kurung tutup:
jenis
TMyArray = array [0..100] dari Char;
8.2.3 pernyataan if
Pernyataan if harus muncul setidaknya dalam dua baris:
Misalnya:
//kesalahan:
jika A = B maka Lakukan Sesuatu;
//benar
jika A = B maka
Lakukan Sesuatu;
Jika ini adalah pernyataan gabungan if, harus ada baris baru untuk setiap pembatas:
//kesalahan:
jika A = B maka mulailah
Lakukan Sesuatu;
Lakukan Sesuatu yang Lain;
akhiri yang lain mulai
Lakukan Ini;
Lakukan Itu;
akhir ;
//benar
jika A = B maka
mulai
Lakukan Sesuatu;
Lakukan Sesuatu yang Lain;
akhir
kalau tidak
mulai
Lakukan Ini;
Lakukan Itu;
akhir ;
Beberapa variasi berikut dapat diadopsi:
//benar
jika Kondisi maka
mulai
Lakukan Ini;
akhiri yang lain
mulai
Lakukan Itu;
akhir ;
//benar
jika Kondisi maka
mulai
Lakukan Ini;
akhir
kalau tidak
Lakukan Sesuatu;
//benar
jika Kondisi maka
mulai
Lakukan Ini;
akhiri yang lain
Lakukan Sesuatu;
//Metode berikut mungkin tidak dipedulikan, tetapi patut dipuji:
jika Kondisi maka
Lakukan Ini
jika tidak, Lakukan Itu;
8.2.4 untuk pernyataan
Contoh:
// SALAH
untuk i := 0 hingga 10 dimulai
Lakukan Sesuatu;
Lakukan Sesuatu yang Lain;
akhir ;
// BENAR
untuk i := 0 sampai 10 lakukan
mulai
Lakukan Sesuatu;
Lakukan Sesuatu yang Lain;
akhir ;
8.2.5 pernyataan sementara
Contoh:
// SALAH
sementara x < ; j dimulai
Lakukan Sesuatu;
Lakukan Sesuatu yang Lain;
akhir ;
// BENAR
sementara x <j lakukan
mulai
Lakukan Sesuatu;
Lakukan Sesuatu yang Lain;
akhir ;
8.2.6 ulangi sampai pernyataan
Contoh:
// BENAR
mengulang
x := j;
j := Nilai Pembaruan;
sampai j = 25;
8.2.7 pernyataan kasus
Contoh:
// BENAR
Kontrol kasus . Sejajarkan
alLeft, alNone: NewRange := Max(NewRange, Posisi);
baiklah: Inc(AlignMargin, Control.Width);
akhir ;
// BENAR
kasus x dari
CSSmulai:
mulai
j := Nilai Pembaruan;
akhir ;
csMulai: x := j;
csWaktu Keluar:
mulai
j := x;
x := Nilai Pembaruan;
akhir ;
akhir ;
// BENAR
kasus ScrollCode dari
SB_LINEUP, SB_LINEBAWAH:
mulai
Incr := Peningkatan div FLineDiv;
FinalIncr := Peningkatan FLineDiv;
Hitung := FLineDiv;
akhir ;
SB_PAGEUP, SB_PAGEDOWN:
mulai
Incr := Peningkatan FPage;
FinalIncr := Termasuk mod FPageDiv;
Termasuk := Termasuk div FPageDiv;
Hitung := FPageDiv;
akhir ;
kalau tidak
Hitung := 0;
Termasuk := 0;
FinalIncr := 0;
akhir ;
8.2.8 pernyataan percobaan
//Benar
mencoba
mencoba
EnumThreadWindows(CurrentThreadID, @Disable, 0);
Hasil := Daftar Jendela Tugas;
kecuali
AktifkanTaskWindows(Daftar Jendela Tugas);
mengangkat ;
akhir ;
Akhirnya
DaftarJendela Tugas := DaftarJendelaSimpan;
TaskActiveWindow := SaveActiveWindow;
akhir ;
Blog Penulis: http://blog.csdn.net/sailerbai/