Đâ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
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
Vd:
t hisIsCamelCase
II. Pascal và Camel Case được sử dụng lúc nào?
* Class, Struct : Pascal Case (Upper Camel Case)
1 | class SinhVien |
2 | { |
3 | ... |
4 | }; |
* Function, Method : Camel Case (Lower Camel Case)
1 | int lamBaiTap() |
2 | { |
3 | ... |
4 | } |
* Variable : Camel Case (Lower Camel Case)
1 | int 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 | ... |
3 | const 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
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.
1 | class ABC |
2 | { |
3 | protected : |
4 | int m_iNumber; //"m" là viết rút gọn của member |
5 | float 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( )
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.
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).
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.
Đố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).
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ố:
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ố:
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ụ:
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.
Đố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.
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ụ:
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ụ:
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ụ:
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ụ:
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ụ):
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.
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ụ:
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ể.
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ó.
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ố:
Bảng dưới đây liệt kê tiêu chuẩn cấp kiểm soát tiền tố:
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
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
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%
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
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)
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. 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
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
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
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?
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)
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
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)
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
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