Bagikan melalui


Konvensi Gaya Pengodian

Konvensi gaya pengkodian digunakan dalam seri sampel ini untuk membantu kejelasan dan konsistensi. Konvensi notasi "Hungaria" digunakan. Ini telah menjadi praktik pengkodatan umum dalam pemrograman Win32. Mereka termasuk notasi awalan variabel yang memberikan nama variabel saran jenis variabel.

Tabel berikut ini mencantumkan awalan umum.

Prefiks Deskripsi
a Array
b BOOL (int)
c Char
cb Jumlah byte
cr Nilai referensi warna
Cx Jumlah x (pendek)
Dw DWORD (panjang tidak ditandatangani)
f Bendera (biasanya beberapa nilai bit)
Fn Fungsi
G_ Global
h Handle
i Bilangan bulat
l Long
Lp Penunjuk panjang
M_ Anggota data kelas
n Int pendek
p Penunjuk
s String
Sz String nol yang dihentikan
tm Metrik teks
u Int tidak ditandatangani
Ul Panjang tidak ditandatangani (ULONG)
w WORD (pendek tidak ditandatangani)
x,y koordinat x, y (pendek)

 

Ini sering digabungkan, seperti dalam hal berikut.

Kombinasi awalan Deskripsi
pszMyString Penunjuk ke string.
m_pszMyString Penunjuk ke string yang merupakan anggota data kelas.

 

Konvensi lain tercantum dalam tabel berikut.

Konvensi Deskripsi
CMyClass Awalan 'C' untuk nama kelas C++.
COMyObjectClass Awalan 'CO' untuk nama kelas objek COM.
CFMyClassFactory Awalan 'CF' untuk nama pabrik kelas COM.
IMyInterface Awalan 'I' untuk nama kelas antarmuka COM.
CImpIMyInterface Awalan 'CImpI' untuk kelas implementasi antarmuka COM.

 

Beberapa konvensi yang konsisten untuk blok header komentar digunakan dalam seri sampel ini sebagai berikut.

File Header

/*+===================================================================
  File:      MYFILE.EXT

  Summary:   Brief summary of the file contents and purpose.

  Classes:   Classes declared or used (in source files).

  Functions: Functions exported (in source files).

  Origin:    Indications of where content may have come from. This
             is not a change history but rather a reference to the
             editor-inheritance behind the content or other
             indications about the origin of the source.

  Copyright and Legal notices.
  Copyright and Legal notices.
===================================================================+*/

Blok Komentar Biasa

/*--------------------------------------------------------------------
  Plain block of comment text that usually takes several lines.
  Plain block of comment text that usually takes several lines.
--------------------------------------------------------------------*/

Header Deklarasi Kelas

/*C+C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C
  Class:    CMyClass

  Summary:  Short summary of purpose and content of CMyClass.
            Short summary of purpose and content of CMyClass.

  Methods:  MyMethodOne
              Short description of MyMethodOne.
            MyMethodTwo
              Short description of MyMethodTwo.
            CMyClass
              Constructor.
            ~CMyClass
              Destructor.
C---C---C---C---C---C---C---C---C---C---C---C---C---C---C---C---C-C*/

Header Definisi Metode Kelas

/*M+M+++M+++M+++M+++M+++M+++M+++M+++M+++M+++M+++M+++M+++M+++M+++M+++M
  Method:   CMyClass::MyMethodOne

  Summary:  Short summary of purpose and content of MyMethodOne.
            Short summary of purpose and content of MyMethodOne.

  Args:     MYTYPE MyArgOne
              Short description of argument MyArgOne.
            MYTYPE MyArgTwo
              Short description of argument MyArgTwo.

  Modifies: [list of member data variables modified by this method].

  Returns:  MYRETURNTYPE
              Short description of meaning of the return type values.
M---M---M---M---M---M---M---M---M---M---M---M---M---M---M---M---M-M*/

Fungsi Tidak Didukung atau Lokal

/*F+F+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  Function: MyLocalFunction

  Summary:  What MyLocalFunction is for and what it does.

  Args:     MYTYPE MyFunctionArgument1
              Description.
            MYTYPE MyFunctionArgument1
              Description.

  Returns:  MyReturnType
              Description.
-----------------------------------------------------------------F-F*/

Header Definisi Fungsi yang Diekspor

/*F+F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F
  Function: MyFunction

  Summary:  What MyFunction is for and what it does.

  Args:     MYTYPE MyFunctionArgument1
              Description.
            MYTYPE MyFunctionArgument1
              Description.

  Returns:  MyReturnType
              Description.
F---F---F---F---F---F---F---F---F---F---F---F---F---F---F---F---F-F*/

Header Deklarasi Antarmuka COM

/*I+I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I
  Interface: IMyInterface

  Summary:   Short summary of what features the interface can bring to
             a COM Component.

  Methods:   MYTYPE MyMethodOne
               Description.
             MYTYPE MyMethodTwo
               Description.
I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I-I*/

Header Deklarasi Kelas Objek COM

/*O+O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O+++O
  ObjectClass: COMyCOMObject

  Summary:     Short summary of purpose and content of this object.

  Interfaces:  IUnknown
                 Standard interface providing COM object features.
               IMyInterfaceOne
                 Description.
               IMyInterfaceTwo
                 Description.

  Aggregation: [whether this COM Object is aggregatable or not]
O---O---O---O---O---O---O---O---O---O---O---O---O---O---O---O---O-O*/

Semua konvensi blok komentar ini memiliki string token awal dan akhir yang konsisten. Konsistensi ini mendukung pemrosesan otomatis header dengan cara tertentu. Misalnya, skrip AWK dapat ditulis untuk memfilter header fungsi ke dalam file teks terpisah yang kemudian dapat berfungsi sebagai dasar untuk dokumen spesifikasi. Demikian pula, alat seperti utilitas AUTODUCK yang tidak didukung (saat ini tersedia di MICROSOFT Developer Network Development Library CD-ROM) dapat digunakan untuk memproses blok komentar di header ini.

Tabel berikut mencantumkan string token awal dan akhir yang digunakan dalam tutorial sampel.

Token Deskripsi
/*+ Header File Dimulai
+*/ Akhir Header File
/*- Header blok komentar biasa Dimulai
-*/ Blok komentar biasa Header Akhir
/*C Header Kelas Dimulai
C*/ Header Kelas Berakhir
/*M Header Metode Dimulai
M*/ Header Metode Berakhir
/*F Header Fungsi Dimulai
F*/ Header Fungsi Berakhir
/*I Header Antarmuka Dimulai
I*/ Header Antarmuka Berakhir
/*O Header Kelas Objek COM Dimulai
O*/ Header Kelas Objek COM Berakhir

 

Header ini juga dapat digunakan sebagai petunjuk visual untuk pemindaian cepat file sumber. Mereka juga memberikan kenyamanan untuk masuk dengan cepat ke beberapa lokasi sumber jika Anda menyiapkan string pencarian di editor Anda dan kemudian 'ulangi pencarian terakhir' untuk menemukan header ini dengan cepat.

Misalnya, string pencarian "M+M" akan menemukan awal header metode, dan "M-M" akan menemukan awal definisi metode/kode implementasi yang sebenarnya.