Đăng nhập | Đăng ký
Đăng nhập , với với

Diễn đàn    Cấu trúc dữ liệu và giải thuật    Quy tắc lập trình - coding convention  

Thành viênNội dung
aspnet

Lập trình không biên giới
445  bài
04-04-2010 11:54:40
0. Tại sao tôi cần phải viết mã theo quy tắc?
Bạn ko bỏ nhiều thời gian nhất để lập trình, mà là để hoàn thiện, sửa chữa nó. Bạn có muốn viết khoảng 500 dòng code, rồi phải quay lên hoặc mở file header ra để xem tên class, tên function. Hoặc khi đọc code lại phải mở phần prototype lên để đọc comment xem cái hàm đó có tác dụng gì? Đấy chính là lí do cần Coding Convention.
1.Quy tắc về file
1.1 Quy tắc cơ bản
Quy tắc đầu tiên, quy tắc quan trọng nhất, đó là code phải được dịch 1 cách hoàn chỉnh được bởi các trình biên dịch thông dụng. Chú ý rằng dịch hoàn chỉnh tức là file phải được dịch mà ko có bất cứ 1 error hay warning nào (thường thì warning nhưng file sẽ vẫn được dịch, điều này là ko được chấp nhận).
1.2 Quy tắc về tên file
Tên file phải dễ hiểu và dễ nhớ và ko quá dài. Thường thì có 1 giới hạn 14 chữ cái được đặt ra, tuy nhiên bạn có thể làm theo hay ko thì...tùy.
Phần mở rộng của file phải theo đúng chuẩn
-------------------------------------------
File Contents Name
-------------------------------------------
C++ Source Code filename.cc
C++ Header File filename.hh
C Source Code filename.c
C Header File filename.h
Object Code filename.o
Archive Libraries filename.a
Dynamic Shared Libraries filename.so.
Shell Scripts filename.sh
Yacc/C Source Code filename.y
Yacc/C++ Source Code filename.yy
Lex/C Source Code filename.l
Lex/C++ Source Code filename.ll
Directory Contents README
Build rules for make Makefile
-------------------------------------------
Mặc dù danh sách đuôi mở rộng ko có .cpp, nhưng với giới hạn làm việc của sinh viên ta bây giờ thì điều đó là chấp nhận thỏa mái .
1.3 Quy tắc về nội dung
Mặc dù ko có quy định nào về độ dài file, nhưng ko nên viết 1 file có code quá dài, sẽ rất khó chỉ để duyệt nội dung hoặc tìm đến 1 vị trí nào đó.
Ko nên viết quá dài trên 1 dòng, ko được phép viết quá 80 cột bởi vì sẽ gặp 1 vài vấn đề trong khi in ấn hoặc in ra terminal.
Trong header file phải có dòng
#ifndef _WF_FILENAME_HH
#define _WF_FILENAME_HH
Những phần còn lại có thể tìm đọc trong tài liệu vì mình thấy những phần đó ko cần thiết cho tài liệu căn bản lắm
2. Các quy tắc về định danh
2.1 Quy tắc chung
Các tên nên được viết = tiếng Anh, trừ khi bạn dùng nó cho mục đích cá nhân hoặc chỉ trao đổi với người nói cùng ngôn ngữ thì có thể dùng tiếng Việt. Nhưng dù dùng ngôn ngữ nào thì cũng đảm bảo rằng tên của bạn là có đủ ý nghĩa, và ngắn nhất có thể.
Tránh các tên 1 chữ cái (ví dụ a,i,j). Tuy nhiên đối với vài định danh ít ý nghĩa (ví dụ 1 biến chạy trong vòng lặp) thì có thể dùng 1 chữ cái.
Tránh các tên trùng hoặc dễ trùng, ví dụ 0 với O, i với 1 hay l, tránh các tên mà chỉ khác nhau về case, ví dụ như string với String, is với Is. Mặc dù điều này ko cấm, nhưng bạn nên tránh nó.
Có thể bạn nghe nói đến "Hungarian" style, nhưng đừng nghe nó, bởi vì mình thấy nó...xấu. Ví dụ thay vì viết someName, bạn phải viết shjtxSomeName...
2.2 Quy tắc về biến, phương thức và hàm
Biến, phương thức hay hàm phải được viết thường chữ cái đầu tiên, các chữ cái sau viết hoa, các từ được viết liền nhau. Ví dụ someName, myVar, myLength...
Các tên tạm thường dùng (biến chạy trong vòng lặp nhỏ) thường là i,j,k,n,m cho int, char thì thường là c,d..
Tên biến phải ngắn gọn và có nghĩa. Có thể thêm prefix, tuy nhiên ko nên dùng prefix làm dấu hiệu nhận biết kiểu như p bắt đầu cho biến con trỏ, s cho static... vì nó làm tên biến của bạn trở nên khó nhớ, và mất đi tính có nghĩa.
1 vài sufix và prefix thường dùng
is_, has_... ví dụ isPrime, hasSomething rất dễ nhớ và dễ hiểu
the_... dành riêng cho biến Global, theOne, chỉ là duy nhất
_count..dành cho biến đếm, ví dụ someCount...
Với tên mảng thì bạn nên đặt thêm chữ s ở cuối thể hiện số nhiều, ví dụ weapons[100]. Tuy nhiên 1 số trường hợp ko nên thêm, ví dụ như filename...Việc thêm hay ko tùy bạn .
Nếu phương thức hay hàm có biến truyền theo quá dài thì hãy cắt nó thành nhiều dòng, và đảm bảo là dấu phẩy ở cuối mỗi dòng (chứ ko phải là đầu dòng tiếp theo).
2.3 Quy tắc về hằng
Hằng phải được viết HOA toàn bộ, và phân cách bởi dấu gạch dưới, ví dụ như INT_MAX, MAX_WIDTH...
3. Quy tắc về coding
3.1 if, if else, else if
if( condition ) {
statements;
}
else if( condition ) {
statements;
}
else {
statements;
}
Dễ đọc, dễ hiểu. Hãy đặt 1 dấu cách sau dấu ( và trước dấu ). Dấu { nên được đặt ngay sau condition, code trong {} được lùi 1 tab. Đi theo order trên là cách hợp lí nhất rồi .
Nếu sau if chỉ có 1 câu lệnh, hãy đặt nó ở dòng tiếp theo.
if( bullet_count == 0 )
reload();
Tuy nhiên nếu câu lệnh tiếp theo là 1 câu lệnh return, break thì hãy đặt nó trong cùng 1 dòng.
3.2 while, do..while
while( condition ) {
statements;
}

do {
statements;
} while( condition )
Đơn giản là hãy làm theo nó
3.3 for...
for( int i = 0; i < MAX_ELEMENTS; i++ ) {
statements;
}
Cũng đơn giản như while... hay làm y hệt như vậy, có thể dùng các biến tạm như i,j,k,l,m,n để làm biến chạy
3.4 switch...
switch( variable ) {
case 0:
statements;
break;

case 1:
statements;
break;

default:
break;
}
Sau break bạn nên để 1 dòng trắng để cho dễ nhìn.
3.5 Tổng thế code
Bạn nên viết code thế nào cho người đọc dễ nhìn nhất. Ví dụ như:
int object_verts[6][3] = {
{-100, 0, 100}, {100, 0, 100}, { 100, 0, -100},
{-100, 11, 100}, (100, 0, -100}, {-100, 0, -100}
};
RECT rect;
rect.left = x;
rect.top = y;
rect.right = rect.left + width;
rect.bottom = rect.right + height;
Các khoảng trống hợp lí sẽ khiến cho code của bạn dễ đọc hơn
Khi khai báo biến, chỉ đặt nhiều biến cùng 1 dòng nếu chúng có cùng kiểu và cùng mục đích, nếu ko, hãy đặt chúng vào các dòng khác nhau. Ví dụ
int x,y;
int length
---
Coding for food
http://yenbai.awas.vn
http://tknd.vn
http://coder.awas.vn
http://awas.vn
http://bieuquyet.vn
http://webhocsinh.com
 

Chủ đề gần đây :

Cùng loại :

 
Tên file Người đăng Ngày Lượt
News Ticker Demo.rar
jQuery Carousellite cho cuộn các khối tin nhẹ nhàng mượt mà, sử dụng cho module Tin tức (CMS) hoặc giới thiệu sản phẩm
aspnet 5/7/2011 8:59:52 AM 475
cms_source_dll_sql_2010.rar
source C# + SQL Script + Dll module CMS trên DNN 5x, (bản chạy ổn định không lỗi)
aspnet 9/5/2010 6:05:54 PM 1863
killforever.rar
Script diệt virus forever.exe (lây nhiễm qua USB) mà không cần cài lại window
aspnet 7/28/2010 6:51:30 AM 264
CSharp Coding Standards.pdf
C# Coding standard, for all user, quy tắc viết mã lập trình c# dotnet.
aspnet 6/1/2010 8:27:39 AM 1228
weather_forex_gold.rar
module DNN : "vàng + thời tiết + tỷ giá ngoại tệ" của seekill
coder 3/11/2010 3:50:09 AM 1089
Training DotNetNuke.zip
Tài liệu hướng dẫn cài đặt DNN, tạo module DNN đơn giản, nâng cao
quanlv 9/30/2009 9:11:36 AM 2912
Viet va them 1 module don gian vao website.doc
Hướng dẫn viết module đơn giản trên DNN (word) có hình, gửi bởi vinahana
aspnet 9/18/2009 6:15:24 PM 1461
Moduel NEWs Demo.zip
Một số module bao gồm: News, WorkScheduler, QA, Comment, Menu, ...
quanlv 8/22/2009 10:44:15 AM 2543
MenuDNN5.rar
Menu DNN 51 Page.aspx
aspnet 7/21/2009 12:22:38 PM 1805
diendan.zip
Cài đặt diễn đàn (VSP) chỉ với 4 bước.
aspnet 6/15/2009 2:18:13 AM 1300
roll_updown.zip
Roll up, roll down news list using javascript, simple, easy to use.
radiogaga 6/1/2009 11:29:51 AM 423
rotator-1.0.0.rar
Auto Scroll News - tự động cuộn tin tức bằng JS
dotnetvn 5/30/2009 3:21:22 PM 623
captcha2.rar
CAPTCHA sinh ngẫu nhiên : size, font, position, color ... vẽ line gây nhiễu chống reCAPTCHA bot.
tieuphu 5/30/2009 2:34:42 PM 609
MenuDNN.zip
Menu Dọc cho DNN (Tác giả Võ Thế Quang)
biennv 5/27/2009 8:07:47 AM 1407
Gioi_thieu_san_pham_unisched4.zip
Giới thiệu phần mềm xếp thời khóa biểu đại học (University Scheduling 4.0) : áp dụng cho mô hình xếp thời khóa biểu niên chế, tại các trường đại học và cao đẳng tại việt nam
khanhjin 5/12/2009 5:00:02 PM 2852
HitCounterInDatabaseASPNET.zip
HitCounter
nguyentx 4/20/2009 4:38:04 PM 561
s3Slide.rar
Slide show chuyên nghiệp, giống tintuconline.com.vn
coder 4/9/2009 9:34:41 AM 2233
XMLPROG.zip
XML Programing C# dotnet
aspnet 4/4/2009 10:02:43 AM 603
menu_vnexpress.rar
Tạo menu giống vnexpress = xsl transform, C# dotnet, javascript(Toàn bộ mã nguồn).
coder 3/30/2009 10:14:50 PM 2367
DesktopModules.rar
CMS dotnetnuke + Image Library + Core CMS (DNN Data Provider) version 1.1
aspnet 3/30/2009 5:23:14 PM 1941
CODERVN.NET
Công ty cổ phần công nghệ và dịch vụ AWAS
Công ty cổ phần công nghệ và dịch vụ AWAS, cổng thông tin, chính phủ điện tử, phần mềm quản lý điểm, quản lý sinh viên, http://awas.vn, http://awas.com.vn, phần mềm ứng dụng, dịch vụ công trực tuyến, thiết kế website, thiet ke web, thiết kế web, điện lực, phần mềm quản lý đào tạo, cao đẳng, đại học,cổng thông tin tích hợp, cổng thông tin điện tử, webportal, thư viện điện tử, electric library, library online, email, web, quản lý quan hệ khách hàng, CRM, dịch vụ công trực tuyến, phần mềm hành chính một cửa,