Các quy tắc đặt tên trong lập trình


Đây là một ghi chú nhỏ của mình khi mình học về lập trình. Bài viết này nói về các quy tắc đặt tên thường được dùng trên thế giới. Công việc đặt tên cho biến, hàm, lớp, cấu trúc, … trong lập trình là công việc thường ngày và ít được chúng ta để ý. Tuy nhiên có một vấn đề quan trọng là: “sẽ như thế nào khi ta làm việc nhóm.”.
Có bao giờ bạn lên mạng down về một source code và tham khảo chưa. Nếu đã từng thì chắc hẳn bạn sẽ biết sẽ khó như thế nào khi phải đặt mình vào cách viết code của người khác. Mỗi người có thói quen và sở thích riêng nên việc viết code dựa theo sở thích sẽ tạo nên rào cản cho việc làm nhóm.
Như vậy, hôm nay, mình viết ghi chú này, đầu tiên là để ghi lại cho bản thân, kế tiếp là giúp cho các bạn – đặc biệt là các newbie các rockie mới biết đến lập trình – biết hiểu và tập một thói quen tốt.Tất nhiên là nội dung bài viết này không dài, cũng không mấy quan trọng nếu như bạn không quan tâm. Tuy nhiên mình vẫn hi vọng đóng góp được điều gì đó khi các bạn đọc các bài viết trong blog của mình.

I. Sau đây là quy tắc đặt tên trong lập trình:

1. Pascal Case (còn được gọi là Upper Camel Case): quy tắc này yêu cầu viết hoa các chữ cái đầu tiên của mọi từ
Vd:
T 
hisIsPascalCase
2. Camel Case (còn được gọi là Lower Camel Case): quy tắc này hơi đặt biệt một tí. Chữ cái đầu tiên của từ đầu tiên viết thường. Các từ còn lại viết hoa chữ cái đầu tiên.
Vd:
t 
hisIsCamelCase

II. Pascal và Camel Case được sử dụng lúc nào?

* Class, Struct : Pascal Case (Upper Camel Case)
1class SinhVien
2{
3...
4};
* Function, Method : Camel Case (Lower Camel Case)
1int lamBaiTap()
2{
3...
4}
* Variable : Camel Case (Lower Camel Case)
1int hocPhi = 1400000;     //1.400.000 vnđ : khiếp quá
* Constant : viết in hoa mọi ký tự và giữa các từ dùng dấu “_” (dấu gạch chân)
1#define MY_MAX 100
2 ...
3const int MY_MIN = 10;

III. Định nghĩa Hungary (một số tài liệu gọi là định danh Hungary)

Đây là một quy tắc nữa được dùng dùng để đặt tên cho biến. Quy tắc này có thể di kèm với Camel Case (Lower Camel Case). Mục tiêu của quy tắc này giúp tăng khả năng nhận biết kiểu dữ liệu của biến bằng cách gắn vào trước mỗi biến một số ký tự mô tả kiểu dữ liệu của chúng.
Vd:
int iTuSo;     //bạn có thể thấy ký tự “i” là đại diện cho int
Sau đây là các ký tự thường gặp
c : char, WCHAR, TCHAR
by : byte
n : short interger
i : int
l : long
f: float, flag
x, y, z : các biến tọa độ trục
b : bool, boolean
w : WORD, unsigned short
dw : DWORD, unsigned long
s : string
sz : string terminated by zero
h : handle
p : pointer
Ngoài những ký tự trên thì còn những ký tự khác nữa mà bạn sẽ gặp. Tuy nhiên bấy nhiêu trên kia đã dư rồi. Ví dụ như kiểu WORD hay DWORD là những kiểu dữ liệu mà bạn sẽ chẳng bao giờ gặp nếu như bạn không bao giờ đụng đến lập trình “C for Windows” (hay còn gọi là lập trình Win32 API). Bạn nên lưu ý là nó khác với lập trình Windows nha.

IV. Những cách ngoài luồng mà mình giới thiệu không phải là chuẩn mà là một thói quen được người ta hay sử dụng. Không biết đúng không nên các bạn nào biết thì chỉ nhá.

m_ : người ta thường thêm ký tự này vào trước tên biến thành viên (thuộc tính) của lớp để phân biệt với biến thường.
1class ABC
2{
3protected:
4int m_iNumber;   //"m" là viết rút gọn của member
5float m_fNumber;
6};
fn : đây là viết tắt của function. Bạn có để ý là khi viết tên hàm theo Lower Camel Case thì trông nó có vẻ gì đó không xứng vì chữ cái đầu bị “teo” lại. Do vậy mà theo mình, người ta hay viết thêm fn vào vừa để chỉ rõ đây là hàm và vừa để tên hàm luôn được viết hoa chữ cái đầu tiên.
VD: int fnTenHam( )
Ngoài ra còn nhiều quy tắc khác nữa tạo nên điểm nhấn cho đoạn code của bạn mà không ảnh hưởng đến cấu trúc chung nên bạn cứ an tâm sáng tạo nha.
V.Còn đây là quy ước đặt tên trong visual basic của microsoft
Cung cấp cho bạn các quy ước đặt tên được sử dụng bởi Microsoft tư vấn dịch vụ (MCS). Tài liệu này là một superset của các mã hóa công ước Visual Basic được tìm thấy trong Visual Basic "Programmer's Guide."  

Đối tượng công ước đặt tên cho các đối tượng tiêu chuẩn

Bảng dưới đây xác định các tiền tố MCS tên đối tượng tiêu chuẩn. Những tiền tố là phù hợp với những tài liệu trong Visual Basic lập trình hướng dẫn.
Prefix    Object Type                           Example
-------------------------------------------------------
ani       Animation button                      aniMailBox
bed       Pen Bedit                             bedFirstName
cbo       Combo box and drop down list box      cboEnglish
chk       Checkbox                              chkReadOnly
clp       Picture clip                          clpToolbar
cmd (3d)  Command button (3D)                   cmdOk (cmd3dOk)
com       Communications                        comFax
ctr       Control (when specific type unknown)  ctrCurrent
dat       Data control                          datBiblio
dir       Directory list box                    dirSource
dlg       Common dialog control                 dlgFileOpen
drv       Drive list box                        drvTarget
fil       File list box                         filSource
frm       Form                                  frmEntry
fra (3d)  Frame (3d)                            fraStyle (fra3dStyle)
gau       Gauge                                 gauStatus
gpb       Group push button                     gpbChannel
gra       Graph                                 graRevenue
grd       Grid                                  grdPrices
hed       Pen Hedit                             hedSignature
hsb       Horizontal scroll bar                 hsbVolume
img       Image                                 imgIcon
ink       Pen Ink                               inkMap
key       Keyboard key status                   keyCaps
lbl       Label                                 lblHelpMessage
lin       Line                                  linVertical
lst       List box                              lstPolicyCodes
mdi       MDI child form                        mdiNote
mpm       MAPI message                          mpmSentMessage
mps       MAPI session                          mpsSession
mci       MCI                                   mciVideo
mnu       Menu                                  mnuFileOpen
opt (3d)  Option Button (3d)                    optRed (opt3dRed)
ole       OLE control                           oleWorksheet
out       Outline control                       outOrgChart
pic       Picture                               picVGA
pnl3d     3d Panel                              pnl3d
rpt       Report control                        rptQtr1Earnings
shp       Shape controls                        shpCircle
spn       Spin control                          spnPages
txt       Text Box                              txtLastName
tmr       Timer                                 tmrAlarm
vsb       Vertical scroll bar                   vsbRate
    

Đối tượng quy ước đặt tên cho các đối tượng cơ sở dữ liệu

Prefix        Object Type          Example
------------------------------------------
db            ODBC Database        dbAccounts
ds            ODBC Dynaset object  dsSalesByRegion
fdc           Field collection     fdcCustomer
fd            Field object         fdAddress
ix            Index object         ixAge
ixc           Index collection     ixcNewAge
qd            QueryDef object      qdSalesByRegion
qry (suffix)  Query (see NOTE)     SalesByRegionQry
ss            Snapshot object      ssForecast
tb            Table object         tbCustomer
td            TableDef object      tdCustomers

    
Lưu Ý: Bằng cách sử dụng một hậu tố cho các truy vấn cho phép mỗi truy vấn để được sắp xếp với bảng liên kết trong hộp thoại Microsoft Access (thêm bảng, danh sách các bảng ảnh chụp).

Quy ước đặt tên đơn

Các ứng dụng thường xuyên sử dụng một sự phong phú của điều khiển menu.Kết quả là, bạn cần một bộ khác nhau của công ước đặt tên cho các điều khiển. Tiền tố đơn kiểm soát nên được mở rộng vượt ra ngoài nhãn hiệu đầu tiên mnu bằng cách thêm một tiền tố bổ sung cho mỗi cấp độ làm tổ, với các chú thích cuối cùng trình đơn ở phần cuối của chuỗi tên. Ví dụ:
Menu Caption Sequence   Menu Handler Name
Help.Contents           mnuHelpContents
File.Open               mnuFileOpen
Format.Character        mnuFormatCharacter
File.Send.Fax           mnuFileSendFax
File.Send.Email         mnuFileSendEmail
    
Khi công ước này được sử dụng, tất cả thành viên của một nhóm cụ thể đơn được liệt kê bên cạnh mỗi khác trong đối tượng danh sách thả xuống hộp (trong mã cửa sổ và cửa sổ bất động sản). Ngoài ra, tên điều khiển menu rõ ràng tài liệu các mục trình đơn mà họ được kết nối vào.

Quy ước đặt tên cho các điều khiển khác

Cho mới điều khiển không được liệt kê ở trên, hãy thử để đi lên với một tiền tố ba nhân vật duy nhất. Tuy nhiên, nó là quan trọng để rõ ràng hơn để dính vào ba ký tự. 
Đối với điều khiển bắt nguồn từ, chẳng hạn như một hộp danh sách nâng cao, mở rộng các tiền tố bên trên vì vậy mà có là không có sự nhầm lẫn hơn kiểm soát mà thực sự được sử dụng. Một tên viết tắt thấp hơn trường hợp cho các nhà sản xuất cũng thường sẽ được thêm vào tiền tố. Ví dụ, một ví dụ kiểm soát tạo ra từ các chuyên Visual Basic 3D khung có thể sử dụng một tiền tố của fra3d để tránh nhầm lẫn mà điều khiển đang thực sự được sử dụng. Một nút lệnh từ MicroHelp có thể sử dụng cmdm để phân biệt nó từ nút chuẩn lệnh (cmd).

Điều khiển bên thứ ba

Mỗi điều khiển bên thứ ba được sử dụng trong một ứng dụng nên được liệt kê trong các ứng dụng tổng quan phần bình luận, cung cấp tiền tố được dùng cho việc kiểm soát, tên đầy đủ của các điều khiển, và tên của các nhà cung cấp phần mềm:
Prefix    Control Type        Vendor
cmdm      Command Button      MicroHelp
    

Thay đổi và thói quen đặt tên

Tên biến và chức năng có cấu trúc sau: <prefix> <body> <qualifier> <suffix>
Part          Description                                  Example
--------------------------------------------------------------------------
<prefix>      Describes the use and scope of the variable. iGetRecordNext
<body>        Describes the variable.                      iGetNameFirst
<qualifier>   Denotes a derivative of the variable.        iGetNameLast
<suffix>      The optional Visual Basic type character.    iGetRecordNext%
    
Tiền tố: 
Bảng dưới đây xác định biến và chức năng tên tố dựa trên ký hiệu Hungary C cho Windows. Tiền tố này nên được sử dụng với tất cả các biến và hàm tên.Sử dụng các hậu tố cơ bản cũ (chẳng hạn như %, &, #, vv) không được khuyến khích. 
Thay đổi và chức năng tên tiền tố:
Prefix    Converged    Variable Use         Data Type  Suffix
--------------------------------------------------------------------------
b         bln          Boolean              Integer    %
c         cur          Currency - 64 bits   Currency   @
d         dbl          Double - 64 bit      Double     #
                       signed quantity
dt        dat          Date and Time        Variant
e         err          Error
f         sng          Float/Single - 32    Single     !
                       bit signed
                       floating point
h                      Handle               Integer    %
i                      Index                Integer    %
l         lng          Long - 32 bit        Long       &
                       signed quantity
n         int          Number/Counter       Integer    %
s         str          String               String     $
u                      Unsigned - 16 bit    Long       &
                       unsigned quantity
          udt          User-defined type
vnt       vnt          Variant              Variant
a                      Array
    
Lưu Ý: các giá trị trong cột Converged đại diện cho những nỗ lực để kéo nhau tiêu chuẩn đặt tên cho Visual Basic, Visual Basic cho các ứng dụng, và truy cập cơ bản. Nó có khả năng rằng các tiền tố sẽ trở thành tiêu chuẩn của Microsoft tại một số điểm trong tương lai gần. 
Phạm vi và sử dụng tiền tố:
Prefix         Description
g              Global
m              Local to module or form
st             Static variable
(no prefix)    Non-static variable, prefix local to procedure
v              Variable passed by value (local to a routine)
r              Variable passed by reference (local to a routine)
    
Ký hiệu Hungary là như có giá trị trong Visual Basic là trong C. Mặc dù hậu tố loại Visual Basic chỉ ra một biến loại dữ liệu, họ không giải thích những gì một biến hoặc chức năng được sử dụng cho, hoặc làm thế nào nó có thể được truy cập. Dưới đây là một số ví dụ:
iSend - đại diện cho một số của số lượng thư được gửi
bSend - A Boolean cờ xác định sự thành công của chiến dịch gửi qua
hSend - A xử lý giao diện Comm
Mỗi người trong số các tên biến cho biết một lập trình viên một cái gì đó rất khác nhau. Thông tin này sẽ bị mất khi tên biến giảm đến gửi %. Tiền tố phạm vi như g và m cũng giúp làm giảm vấn đề ganh đua tên đặc biệt là trong các dự án multi-developer. 
Ký hiệu Hungary cũng được sử dụng bởi Windows C lập trình viên và không ngừng tham khảo tài liệu sản phẩm Microsoft và trong ngành công nghiệp lập trình sách. Ngoài ra, liên kết giữa lập trình c và lập trình viên sử dụng Visual Basic sẽ trở nên mạnh hơn nhiều như Visual C ++ phát triển hệ thống tăng động lượng. Chuyển đổi này sẽ gây ra nhiều Visual Basic lập trình di chuyển đến c cho lần đầu tiên và nhiều lập trình di chuyển thường xuyên trở lại và ra từ cả hai môi trường.

Cơ thể của biến và thói quen tên

Cơ thể của một biến hoặc thói quen tên nên sử dụng hỗn hợp trường hợp và cần miễn là cần thiết để mô tả mục đích của nó. Ngoài ra, chức năng tên nên bắt đầu với một động từ, ví dụ như InitNameArray hoặc CloseDialog. 
Đối với các thuật ngữ thường được sử dụng hay dài, chuẩn chữ viết tắt được khuyến khích để giữ cho độ dài tên hợp lý. Nói chung, tên biến lớn hơn 32 ký tự có thể được khó khăn để đọc trên màn hình VGA. 
Khi sử dụng chữ viết tắt, hãy chắc chắn rằng họ là nhất quán trong suốt toàn bộ ứng dụng. Ngẫu nhiên chuyển đổi giữa Cnt và số trong một dự án sẽ dẫn đến sự nhầm lẫn không cần thiết.

Vòng loại biến và thói quen tên

Các biến có liên quan và thói quen thường được sử dụng để quản lý và thao tác một đối tượng phổ biến. Trong những trường hợp này, sử dụng tiêu chuẩn vòng loại nhãn bắt nguồn từ biến và thói quen. Mặc dù đặt trong vòng loại sau khi cơ quan tên có vẻ một chút khó khăn (như trong sGetNameFirst, sGetNameLast thay vì sGetFirstName, sGetLastName), thực hành này sẽ giúp để danh sách các tên với nhau trong những biên tập viên Visual Basic thói quen, làm cho logic và cấu trúc của các ứng dụng dễ dàng hơn để hiểu. Bảng sau đây xác định vòng loại phổ biến và ý nghĩa tiêu chuẩn của họ:
Qualifier  Description (follows Body)
--------------------------------------------------------------------------
First      First element of a set.
Last       Last element of a set.
Next       Next element in a set.
Prev       Previous element in a set.
Cur        Current element in a set.
Min        Minimum value in a set.
Max        Maximum value in a set.
Save       Used to preserve another variable that must be reset later.
Tmp        A "scratch" variable whose scope is highly localized within the
           code. The value of a Tmp variable is usually only valid across
           a set of contiguous statements within a single procedure.
Src        Source. Frequently used in comparison and transfer routines.
Dst        Destination. Often used in conjunction with Source.
    

Người dùng xác định loại

Tuyên bố loại người dùng định nghĩa trong tất cả các mũ với _TYPE nối thêm vào cuối tên biểu tượng. Ví dụ:
Type CUSTOMER_TYPE
      sName As String
      sState As String * 2
      lID as Long
   End Type
    
Khi khai báo một biến thể hiện của một người dùng xác định loại, thêm một tiền tố cho tên biến để tham khảo các loại. Ví dụ:
   Dim custNew as CUSTOMER_TYPE
    

Đặt tên hằng

Cơ thể không đổi tên nên UPPER_CASE với underscores (_) giữa các từ. Mặc dù hằng số Visual Basic tiêu chuẩn bao gồm thông tin Hungary, tiền tố như tôi, s, g, và m có thể rất hữu ích trong sự hiểu biết giá trị và phạm vi của một hằng số. Tên liên tục, thực hiện theo các quy tắc tương tự như các biến. Ví dụ:
<mnUSER_LIST_MAX   ' Max entry limit for User list (integer value,
                     ' local to module)
   gsNEW_LINE        ' New Line character string (global to entire
                     ' application)
    

Biến thể loại dữ liệu

Có nếu bạn biết rằng một biến sẽ luôn luôn lưu trữ dữ liệu của một loại hình cụ thể, Visual Basic thể xử lý dữ liệu đó hiệu quả hơn nếu bạn khai báo một biến loại. 
Tuy nhiên, kiểu biến thể dữ liệu có thể cực kỳ hữu ích khi làm việc với cơ sở dữ liệu, tin nhắn, DDE hoặc OLE. Nhiều cơ sở dữ liệu cho phép NULL như một giá trị hợp lệ cho một lĩnh vực. Mã của bạn cần phải phân biệt giữa NULL, 0 (zero), và "" (chuỗi rỗng). Nhiều lần, các loại hoạt động kinh doanh có thể sử dụng một thói quen chung loại dịch vụ mà không cần phải biết loại dữ liệu nhận được để xử lý hoặc đậu trên dữ liệu. Ví dụ:
   Sub ConvertNulls(rvntOrg As Variant, rvntSub As Variant)
      ' If rvntOrg = Null, replace the Null with rvntSub
      If IsNull(rvntOrg) Then rvntOrg = rvntSub
   End Sub
    
Là có một số nhược điểm, tuy nhiên, để sử dụng các biến thể. Báo cáo mã sử dụng phiên bản đôi khi có thể mơ hồ để các lập trình viên. Ví dụ:
   vnt1 = "10.01" : vnt2 = 11 : vnt3 = "11" : vnt4 = "x4"
   vntResult = vnt1 + vnt2  ' Does vntResult = 21.01 or 10.0111?
   vntResult = vnt2 + vnt1  ' Does vntResult = 21.01 or 1110.01?
   vntResult = vnt1 + vnt3  ' Does vntResult = 21.01 or 10.0111?
   vntResult = vnt3 + vnt1  ' Does vntResult = 21.01 or 1110.01?
   vntResult = vnt2 + vnt4  ' Does vntResult = 11x4 or ERROR?
   vntResult = vnt3 + vnt4  ' Does vntResult = 11x4 or ERROR?
    
Các ví dụ ở trên sẽ ít hơn nhiều mơ hồ và dễ dàng hơn để đọc, gỡ lỗi, và duy trì nếu thói quen chuyển đổi loại Visual Basic đã được sử dụng để thay thế. Ví dụ:
   iVar1 = 5 + val(sVar2)   ' use this (explicit conversion)
   vntVar1 = 5 + vntVar2    ' not this (implicit conversion)
    

Cho ý kiến của bạn mã

Tất cả các thủ tục và chức năng nên bắt đầu với một thảo luận ngắn gọn mô tả các đặc tính chức năng của những thói quen (những gì nó làm). Mô tả này nên không mô tả chi tiết thực hiện (làm thế nào nó để nó) bởi vì thường những xuyên thay đổi theo thời gian, kết quả công việc bảo trì bình luận không cần thiết, hoặc tệ hơn chưa, sai ý kiến. Mã chính nó và bất kỳ ý kiến cần thiết trong đường dây hoặc địa phương sẽ mô tả việc thực hiện. 
Tham số truyền cho một thói quen nên được mô tả khi chức năng của họ không phải là rõ ràng và khi những thói quen dự kiến các tham số để trong một phạm vi cụ thể. Chức năng trả về giá trị và biến toàn cầu được thay đổi bởi những thói quen (đặc biệt là thông qua các tham số tham khảo) cũng phải được mô tả ở đầu của mỗi thói quen. 
Bình luận tiêu đề thường lệ khối nên trông như thế này (xem phần tiếp theo "Định dạng của bạn mã" ví dụ):
Section    Comment Description
--------------------------------------------------------------------------
Purpose    What the routine does (not how).
Inputs     Each non-obvious parameter on a separate line with
           in-line comments
Assumes    List of each non-obvious external variable, control, open file,
           and so on.
Returns    Explanation of value returned for functions.
Effects    List of each effected external variable, control, file, and
           so on and the affect it has (only if this is not obvious)
    
Mỗi khai báo biến không nhỏ nên bao gồm một bình luận trong dòng mô tả việc sử dụng các biến được tuyên bố. 
Biến, điều khiển, và thói quen nên được đặt tên rõ ràng đủ rằng trong dòng cho ý kiến là chỉ cần thiết cho chi tiết phức tạp hoặc không trực quan thực hiện. 
Một tổng quan về các ứng dụng, liệt kê các đối tượng dữ liệu chính, thói quen, thuật toán, hộp thoại, cơ sở dữ liệu và tập tin hệ thống phụ thuộc, và như vậy nên được bao gồm ở đầu các.BAS mô-đun có chứa các dự án Visual Basic chung liên tục khai báo. 
Lưu Ý: Cửa sổ dự án vốn đã mô tả danh sách các tập tin vào một dự án, do đó phần tổng quan này chỉ cần cung cấp thông tin về các tập tin quan trọng nhất và mô-đun, hoặc các tập tin, cửa sổ dự án không danh sách, chẳng hạn như khởi tạo (.INI) hoặc cơ sở dữ liệu tập tin.

Định dạng mã của bạn

Bởi vì rất nhiều lập trình viên vẫn còn sử dụng VGA màn hình, màn hình bất động sản phải được conserved càng nhiều càng tốt, trong khi vẫn cho phép mã định dạng, để phản ánh cấu trúc logic và làm tổ. 
Tiêu chuẩn, tab-based, khối làm tổ lõm nên dấu cách 2-4. Hơn bốn không gian là không cần thiết và có thể gây ra phát biểu sẽ được ẩn hoặc vô tình cắt ngắn. Ít hơn hai không gian không đủ hiện logic làm tổ. Trong Microsoft Knowledge Base, chúng tôi sử dụng một không gian ba thụt lề. Sử dụng hộp thoại tùy chọn môi trường để đặt chiều rộng tab mặc định. 
Những nhận xét tổng quan chức năng của một thói quen nên thụt vào một không gian. Những điều khoản cấp cao nhất mà theo những nhận xét tổng quan nên thụt vào một tab, với mỗi lồng nhau khối thụt vào một tab bổ sung.Ví dụ:
**************************************************************************
'Purpose:   Locate first occurrence of a specified user in UserList array.
'Inputs:    rasUserList():  the list of users to be searched
'           rsTargetUser:   the name of the user to search for
'Returns:   the index of the first occurrence of the rsTargetUser
'           in the rasUserList array. If target user not found, return -1.
'**************************************************************************

'VB3Line: Enter the following lines as one line
Function iFindUser (rasUserList() As String, rsTargetUser as String) _
   As Integer
   Dim i As Integer           ' loop counter
   Dim bFound As Integer      ' target found flag
   iFindUser = -1
   i = 0
   While i <= Ubound(rasUserList) and Not bFound
      If rasUserList(i) = rsTargetUser Then
         bFound = True
         iFindUser = i
      End If
   Wend
End Function
    
Biến và hằng số phi-chung nên được nhóm lại theo chức năng chứ không phải bởi đang được tách ra thành các khu vực bị cô lập hoặc tập tin đặc biệt.Visual Basic hằng số chung chung như HOURGLASS nên được nhóm lại trong một mô-đun đơn (VB_STD.BAS) để giữ cho họ tách biệt khai báo ứng dụng cụ thể.

Các nước sử dụng

Luôn luôn sử dụng một dấu "và" (&) khi concatenating chuỗi, và sử dụng dấu cộng (+) khi làm việc với các giá trị số. Bằng cách sử dụng một dấu cộng (+) với phi-số values, có thể gây ra vấn đề khi hoạt động trên hai phiên bản. Ví dụ:
   vntVar1 = "10.01"
   vntVar2 = 11
   vntResult = vntVar1 + vntVar2         ' vntResult =  21.01
   vntResult = vntVar1 & vntVar2         ' vntResult = 10.0111
    

Phạm vi

Biến nên luôn luôn được xác định với phạm vi nhỏ nhất có thể. Biến toàn cầu có thể tạo ra rất nhiều phức tạp nhà nước máy và làm cho logic của một ứng dụng rất khó hiểu. Biến toàn cầu cũng làm cho tái sử dụng và bảo trì mã của bạn khó khăn hơn. Biến trong Visual Basic có thể có lĩnh vực sau đây:
Scope             Variable Declared In:            Visibility
--------------------------------------------------------------------------
Procedure-level   Event procedure, sub, or         Visible in the
                  function                         procedure in which
                                                   it is declared
Form-level,       Declarations section of a form   Visible in every
Module-level      or code module (.FRM, .BAS)      procedure in the
                                                   form or code
                                                   module
Global            Declarations section of a code   Always visible
                  module (.BAS, using Global
                  keyword)
    
Trong một ứng dụng Visual Basic, chỉ sử dụng các biến toàn cầu, khi không có cách nào thuận tiện khác để chia sẻ dữ liệu giữa các hình thức. Bạn có thể muốn xem xét việc lưu trữ thông tin trong một kiểm soát thẻ tài sản, có thể truy cập trên toàn cầu bằng cách sử dụng cú pháp form.object.property. 
Nếu bạn phải sử dụng các biến toàn cầu, đó là thực hành tốt để tuyên bố tất cả chúng trong một mô-đun duy nhất và nhóm chúng theo chức năng. Cung cấp cho các mô-đun một tên có ý nghĩa cho biết mục đích của nó, chẳng hạn như toàn cầu.BAS. 
Ngoại trừ các biến toàn cầu (mà không nên được thông qua), thủ tục và chức năng nên chỉ hoạt động trên các đối tượng được truyền cho họ. Biến toàn cầu được sử dụng trong thói quen nên được xác định trong khu vực thảo luận chung tại đầu của những thói quen. Ngoài ra, vượt qua đối số để dự bị và chức năng sử dụng ByVal, trừ khi bạn rõ ràng muốn thay đổi giá trị của các đối số thông qua. 
Viết mô-đun mã bất cứ khi nào có thể. Ví dụ, nếu ứng dụng của bạn sẽ hiển thị một hộp thoại, đặt tất cả các điều khiển và mã yêu cầu để thực hiện nhiệm vụ của hộp thoại trong một hình thức duy nhất. Điều này giúp giữ cho các ứng dụng mã tổ chức thành các thành phần hữu ích và giảm thiểu chi phí thời gian chạy của nó.

Điều khiển bên thứ ba

Lưu Ý: Sản phẩm thảo luận dưới đây được sản xuất bởi nhà cung cấp độc lập của Microsoft. Microsoft đưa ra không có bảo hành, ngụ ý hay cách khác, liên quan đến các sản phẩm hiệu suất hoặc độ tin cậy. 
Bảng dưới đây liệt kê tiêu chuẩn đại lý của bên thứ ba tên nhân vật tiền tố được sử dụng với kiểm soát tiền tố:
Vendor               Abbv
-------------------------

MicroHelp (VBTools)  m
Pioneer Software     p
Crescent Software    c
Sheridan Software    s
Other (Misc)         o
    
Bảng dưới đây liệt kê tiêu chuẩn cấp kiểm soát tiền tố:
Control         Control     Abbr  Vendor     Example            VBX File
Type            Name                                            Name
--------------------------------------------------------------------------
Alarm           Alarm       almm  MicroHelp  almmAlarm          MHTI200.VBX
Animate         Animate     anim  MicroHelp  animAnimate        MHTI200.VBX
Callback        Callback    calm  MicroHelp  calmCallback       MHAD200.VBX
Combo Box       DB_Combo    cbop  Pioneer    cbopComboBox       QEVBDBF.VBX
Combo Box       SSCombo     cbos  Sheridan   cbosComboBox       SS3D2.VBX
Check Box       DB_Check    chkp  Pioneer    chkpCheckBox       QEVBDBF.VBX
Chart           Chart       chtm  MicroHelp  chtmChart          MHGR200.VBX
Clock           Clock       clkm  MicroHelp  clkmClock          MHTI200.VBX
Button          Command     cmdm  MicroHelp  cmdmCommandButton  MHEN200.VBX
                Button
Button          DB_Command  cmdp  Pioneer    cmdpCommandButton  QEVBDBF.VBX
Button (Group)  Command     cmgm  MicroHelp  cmgmBtton          MHGR200.VBX
                Button
                (multiple)
Button          Command     cmim  MicroHelp  cmimCommandButton  MHEN200.VBX
                Button
                (icon)
CardDeck        CardDeck    crdm  MicroHelp  crdmCard           MHGR200.VBX
Dice            Dice        dicm  MicroHelp  dicmDice           MHGR200.VBX
List Box (Dir)  SSDir       dirs  Sheridan   dirsDirList        SS3D2.VBX
List Box (Drv)  SSDrive     drvs  Sheridan   drvsDriveList      SS3D2.VBX
List Box (File) File List   film  MicroHelp  filmFileList       MHEN200.VBX
List Box (File) SSFile      fils  Sheridan   filsFileList       SS3D2.VBX
Flip            Flip        flpm  MicroHelp  flpmButton         MHEN200.VBX
Scroll Bar      Form Scroll fsrm  MicroHelp  fsrmFormScroll     ???
Gauge           Gauge       gagm  MicroHelp  gagmGauge          MHGR200.VBX
Graph           Graph       gpho  Other      gphoGraph          XYGRAPH.VBX
Grid            Q_Grid      grdp  Pioneer    grdpGrid           QEVBDBF.VBX
Scroll Bar      Horizontal  hsbm  MicroHelp  hsbmScroll         MHEN200.VBX
                Scroll Bar
Scroll Bar      DB_HScroll  hsbp  Pioneer    hsbpScroll         QEVBDBF.VBX
Graph           Histo       hstm  MicroHelp  hstmHistograph     MHGR200.VBX
Invisible       Invisible   invm  MicroHelp  invmInvisible      MHGR200.VBX
List Box        Icon Tag    itgm  MicroHelp  itgmListBox        MHAD200.VBX
Key State       Key State   kstm  MicroHelp  kstmKeyState       MHTI200.VBX
Label           Label (3d)  lblm  MicroHelp  lblmLabel          MHEN200.VBX
Line            Line        linm  MicroHelp  linmLine           MHGR200.VBX
List Box        DB_List     lstp  Pioneer    lstpListBox        QEVBDBF.VBX
List Box        SSList      lsts  Sheridan   lstsListBox        SS3D2.VBX
MDI Child       MDI Control mdcm  MicroHelp  mdcmMDIChild       ???
Menu            SSMenu      mnus  Sheridan   mnusMenu           SS3D3.VBX
Marque          Marque      mrqm  MicroHelp  mrqmMarque         MHTI200.VB
Picture         OddPic      odpm  MicroHelp  odpmPicture        MHGR200.VBX
Picture         Picture     picm  MicroHelp  picmPicture        MHGR200.VBX
Picture         DB_Picture  picp  Pioneer    picpPicture        QEVBDBF.VBX
Property Vwr    Property    pvrm  MicroHelp  pvrmPropertyViewer MHPR200.VBX
                Viewer
Option (Group)  DB_RadioGroup radp Pioneer   radqRadioGroup     QEVBDBF.VBX
Slider          Slider      sldm  MicroHelp  sldmSlider         MHGR200.VBX
Button (Spin)   Spinner     spnm  MicroHelp  spnmSpinner        MHEN200.VBX
Spreadsheet     Spreadsheet sprm  MicroHelp  sprmSpreadsheet    MHAD200.VBX
Picture         Stretcher   strm  MicroHelp  strmStretcher      MHAD200.VBX
Screen Saver    Screen Saver svrm MicroHelp  svrmSaver          MHTI200.VBX
Switcher        Switcher    swtm  MicroHelp  swtmSwitcher       ???
List Box        Tag         tagm  MicroHelp  tagmListBox        MHEN200.VBX
Timer           Timer       tmrm  MicroHelp  tmrmTimer          MHTI200.VBX
ToolBar         ToolBar     tolm  MicroHelp  tolmToolBar        MHAD200.VBX
List Box        Tree        trem  MicroHelp  tremTree           MHEN200.VBX
Input Box       Input (Text) txtm MicroHelp  inpmText           MHEN200.VBX
Input Box       DB_Text     txtp  Pioneer    txtpText           QEVBDBF.VBX
Scroll Bar      Vertical    vsbm  MicroHelp  vsbmScroll         MHEN200.VBX
                Scroll Bar
Scroll Bar      DB_VScroll  vsbp  Pioneer    vsbpScroll         QEVBDBF.VBX
    

VI. Lời cuối

Bạn có thấy là Pascal được gọi là Upper Camel Case, còn Camel Case được gọi là Lower Camel Case. Mình nghĩ là các bạn sẽ thắc mắc. Hiện trên thế giới vẫn còn rất nhiều tranh luận về vụ này. Tuy nhiên dù cái tên được tranh luôn nhưng việc áp dụng nó thì được mọi người công nhận và không bàn cãi. Và điều quan trọng là khi làm việc ở các công ty nào thì phải tuân theo quy tắc của công ty đó. 
Nguồn :microsoft.com,kscode.wordpress.com