Đăng nhập | Đăng ký

Danh sách thành viên | Cá nhân | Nhà đất, bất động sản

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
598  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
vspforum.zip
Ma nguon vspforum ngay xua
aspnet 4/18/2023 6:38:37 AM 8
pdfjs.rar
pdfjs 2017 : hiển thị tốt trên iphone 11, 12, 13 không lỗi, bản 2012 sẽ lỗi trên iphone
aspnet 6/21/2022 11:52:48 AM 2
pdfjs2.rar
Xem file pdf bằng viewer.hml cua pdfjs (thư viện chuẩn mozilla) 2012. https://mozilla.github.io/pdf.js/getting_started/#download có thể download bản prebuild tại đây
aspnet 6/21/2022 11:52:04 AM 2
runner.zip
using three.js, orbitcontrol to view an object move random on map. Di chuyển 1 đồ vật ngẫu nhiên trên bản đồ, sử dụng với demo nhân viên di chuyển trong văn phòng. Toàn js download về là chạy
aspnet 12/5/2019 5:55:14 PM 0
gmap.zip
google map + marker
aspnet 7/17/2019 2:25:05 PM 1
vinsmarthomeservice.zip
java post json to api, use AsyncTask, event listener
aspnet 7/9/2019 5:00:10 PM 1
fblogin.zip
Login facebook bang javascript SDK
aspnet 7/9/2019 9:16:37 AM 0
autocomplete-location.zip
autocomplete location geo from google place, html + js
aspnet 7/4/2019 4:37:55 PM 2
WebAPI.zip
api for android access db (v1.0.0)
aspnet 7/4/2019 9:14:17 AM 8
KydientuPdf.zip
Ky dien tu file PDF su dung itextsharp
aspnet 4/9/2019 3:30:37 PM 9
GooglePlusLogin.zip
Login Google Plus account, C#, web asp.net ver2.0. Simple connect google APIs. Send key, get token, get full account info
aspnet 6/1/2018 10:41:12 AM 11
WebApplication1.rar
Sample su dung thuat toan ma hoa tripDES, co khoa bi mat (privateKey)
aspnet 3/30/2018 10:06:35 PM 8
NETMdbToolsTestApp.rar
dotNet MdbTools for Access 2003/2007/2016 without Microsoft Jet Engine, source C#, https://www.codeproject.com/Articles/283626/MsAccess-MdbTools-with-MFC-and-NET
aspnet 3/26/2018 11:43:16 PM 1
Cryptography_MD5_TriDES_src.zip
Thuật toán mã hóa 2 chiều TriDES, gồm Encrypt và Decrypt, aspnet 2.0
aspnet 3/22/2018 11:20:44 AM 3
mvc.rar
sample project MVC on C#
aspnet 3/20/2018 9:25:36 AM 9
EduPortal.rar
Edu portal frame work for VB.NET
aspnet 3/14/2018 12:00:41 AM 13
AutoEntity.rar
Gencode vb.net visual studio 2015. dotnet v2.0
aspnet 3/13/2018 11:59:16 PM 2
GenCode.rar
Gencode XML, XSLT, Info, DAL .. engine enterprise for quick app database
aspnet 2/5/2018 9:37:28 AM 9
DataXml.rar
Read DB from SQL to XML file, Convert string TCVN to Unicode
aspnet 1/29/2018 2:15:45 PM 4
DesktopModules.rar
Module quản lý tin tức, CMS, quản lý nhóm tin trên dotnetnuke 6.x
aspnet 3/7/2013 4:47:49 PM 1715
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,