coding standards

24
CODING STANDARDS Nhóm 10 0812543 – TrầnVăn Tri 0812546 – Nguyễn Anh Trí 0812548 – Nguyễn Minh Trí 0812602 – Tăng Kiên Tường 0812609 – Nguyễn Văn Việt 1

Upload: lona

Post on 24-Feb-2016

68 views

Category:

Documents


0 download

DESCRIPTION

CODING STANDARDS. Nhóm 10 0812543 – TrầnVăn Tri 0812546 – Nguyễn Anh Trí 0812548 – Nguyễn Minh Trí 0812602 – Tăng Kiên Tường 0812609 – Nguyễn Văn Việt. Chuẩn mã nguồn. Tầm quan trọng của các chuẩn mã nguồn Chuẩn cú pháp Chuẩn ngữ nghĩa Phương pháp áp dụng chuẩn mã nguồn - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: CODING STANDARDS

CODING STANDARDSNhóm 10

0812543 – TrầnVăn Tri0812546 – Nguyễn Anh Trí0812548 – Nguyễn Minh Trí0812602 – Tăng Kiên Tường0812609 – Nguyễn Văn Việt

1

Page 2: CODING STANDARDS

Chuẩn mã nguồnTầm quan trọng của các chuẩn mã nguồnChuẩn cú phápChuẩn ngữ nghĩaPhương pháp áp dụng chuẩn mã nguồnCác chuẩn mã nguồn thông dụngCác công cụ hỗ trợ chuẩn mã nguồn

2

Page 3: CODING STANDARDS

Coding standards là gì?Coding standard là 1 bộ luật ràng buộc các

quy tắc viết code mà lập trình viên phải tuân theo nhằm tạo sự thống nhất các đoạn code của 1 chương trình.

Việc tuân thủ các quy tắc này sẽ giúp duy trì khả năng làm việc nhóm, khả năng phát hiện lỗi, khả năng bảo trì và kế thừa của chương trình

Page 4: CODING STANDARDS

Tầm quan trọng của coding standards?Một chuẩn code tốt rất quan trọng cho bất kỳ

dự án phần mềm nào, nhất là những dự án nhiều người

Góp một phần lớn trong việc đảm bảo chất lượng mã nguồn, ít lỗi và dễ bảo trì

Có ý nghĩa đối với lập trình viên hiểu các dòng code mới nhanh hơn và sâu sắc hơn

Một mã nguồn đưa ra thị trường như là 1 sản phẩm cần phải được đảm bảo là nó đóng gói theo chuẩn nhất định

Page 5: CODING STANDARDS

Chuẩn cú pháp

1. File Names and Organization (tên file và tổ chức)

2. Indentation (thụt đầu dòng)3. Formatting (định dạng code)4. Naming Conventions (qui ước đặt tên)

5

Page 6: CODING STANDARDS

Chuẩn cú pháp (tt)1. File Names and Organization

Sourcefiles: Đặt tên file và phần mở rộng theo 1 chuẩn có thể giúp tối ưu hóa tìm kiếm. VD: tên file trùng với tên class.

Organization: Sắp xếp các item khác nhau theo thứ tự trong source code. VD: chuẩn Java: Class variables > Instance variables > Constructors > Methods

Directory Layout: Tạo thư mục cho mỗi cái namespace. VD: MyProject.TestSuite.TestTier (C#)

MyProject/TestSuite/TestTier

6

Page 7: CODING STANDARDS

Chuẩn cú pháp (tt)2. Indentation Wrapping Lines: Khi một biểu thức không

phù hợp trên một dòng đơnBreak after a comma.Break after an operator.Prefer higher-level breaks to lower-level breaks.Align the new line with the beginning of the

expression at the same level on the previous line

longMethodCall(expr1, expr2, expr3, expr4, expr5);

 BAD STYLE – AVOID: PREFER: var = a * b / (c - g + var = a * b / (c - g + f) + f) + 4 * z; 4 * z;

7

Page 8: CODING STANDARDS

Chuẩn cú pháp (tt)2. Indentation White Spaces:

Chuẩn thụt đầu dòng chưa có đồng nhất về số lượng đơn vị không gian(spaces)

Tốt nhất là dùng Tab vì các lí do sau: Có thể tùy chọn số lượng đơn vị space Giảm số lượng nhập khoảng trắng. Tăng giảm Block dễ dàng

Nhiều chuẩn code xác định số lượng khoảng trắng cho chổ thụt vào(indenting).

Các comment trong cùng block phải canh theo cùng 1 lề trái

8

Page 9: CODING STANDARDS

Chuẩn cú pháp (tt)3. Formatting Inter-term spacing: khoảng cáchNên đặt khoảng cách sau dấu phẩy hoặc

chấm phẩyVD: TestMethod(a, b, c);

don't use : TestMethod(a,b,c) or: TestMethod( a, b, c );

Xung quanh các toán tửVD: a = b; // don't use a=b; for (int i = 0; i < 10; ++i) don't use: for (int i=0; i<10; ++i)

or for(int i=0;i<10;++i)9

Page 10: CODING STANDARDS

Chuẩn cú pháp (tt)3. Formatting Put braces: Đặt dấu ngoặc { … }Tùy theo các chuẩn qui định

GNU, Linux , và các chương trình Windowsif (ia->ia_maddr != MADDRUNK){

sc->pPacketPagePhys = ia->ia_maddr; } BSD và Java if ((cp = strchr(*argv, ':')) != NULL) {

*cp++ = '\0'; a_gid(cp);

}

10

Page 11: CODING STANDARDS

Chuẩn cú pháp (tt)3. Formatting Comment: chú thích cho nội dung dòng codeChú thích cho các thuật toáncase 10: /* yy */

lt->tm_year = ATOI2(p); if (lt->tm_year < 69) /* hack for 2000 ;-}*/ lt->tm_year += 100;

/* FALLTHROUGH */ case 8: /* mm */ lt->tm_mon= ATOI2(p);

Chú thích cho những phần chưa biết chính xácHay những vị trí cần chỉnh sửa trong tương tai.

/* * TODO - sort output */

11

Page 12: CODING STANDARDS

Chuẩn cú pháp (tt)4. Naming Conventions Use of capitalization: dùng cho Java và Window

VD: RandomAccessFile Separation of words by underscores: dùng cho

UNIX và GNUVD: exponent_is_negative

Initials: dùng cho BSDVD: strcmp //string compareNgoài ra, tùy theo chuẩn còn có các qui tắc đặt tên biến, tên class, tên hàm khác nhau để chỉ rõ ý nghĩa, chức năng của biến, hàm đó.VD: int iCount; bool isString;public void CheckSum();Có nên đặt tên biến vòng lặp i,j,k ???

12

Page 13: CODING STANDARDS

Chuẩn ngữ nghĩa

1. Object Lifeycle (vòng đời đối tượng)2. Control Flow (luồng điều khiển)3. Various data types (kiểu dữ liệu)4. Exception Handling (xử lí ngoại lệ)5. Coding Style (phong cách code)

13

Page 14: CODING STANDARDS

Chuẩn ngữ nghĩa(tt)1. Object Lifeycle Khai báo và khởi tạo đối tượng (object)

gần nơi chúng được sử dụng: dễ dàng theo dõi

Khởi tạo biến tĩnh (static) trước khi gọi hàm: để hiểu được giá trị của biến tĩnh, nếu không khởi tạo thường thì trình biên dịch sẽ gắn giá trị là 0

Gán object = null để báo rằng object đó không còn cần thiết cải thiện bộ nhớ

14

Page 15: CODING STANDARDS

Chuẩn ngữ nghĩa(tt)2. Control Flow  Không nên thay đổi biến lặp bên trong

vòng lặp: đều này gây khó hiểu. Cập nhật biến lặp gần nơi điều kiện vòng lặp được xác định

Các lệnh (if, else, while, for, do, which) theo sau là blockif (b1) if (b2) Foo(); else Bar(); // which 'if' goes with the 'else'?

Lệnh switch phải có default sau case Lệnh if…else phải lồng hết các trường hợp Đừng so sánh rõ ràng với true, false.

VD: if (conditison == false) //badif(!condition) //good

15

Page 16: CODING STANDARDS

Chuẩn ngữ nghĩa(tt)2. Control Flow  Không truy cập hay thay đổi đối tượng nhiều

lần trong một biểu thức.VD: v[i] = ++i; // wrong

i = ++i + 1; // wrong

Không sử dụng câu lệnh lựa chọn (if, switch) thay vì một nhiệm vụ đơn giản hoặc khởi tạo.VD:

16

bool pos; if (val > 0) { pos = true; } else { pos = false; }

bool pos = (val > 0) ? true : false; Hoặcbool pos = (val > 0);

Page 17: CODING STANDARDS

Chuẩn ngữ nghĩa(tt)3. Various data types  Tùy theo ngôn ngữ sử dụng mà có các kiển dữ

liệu khác nhau Nên cân nhắc sử dụng kiểu dữ liệu cho hợp lí

VD: khi nào dùng int(Int32,Int64)? Khi nào dùng double? String? char*?

Nên dùng hằng số thay cho những giá trị cố địnhVD: const PI= 3.14

17

Page 18: CODING STANDARDS

Chuẩn ngữ nghĩa(tt)4. Exception Handling Chỉ ném ngoại lệ (thorw exception) trong những

tình huống đặc biệt

Bắt trường hợp Exception bằng cách cung cấp một phương thức để trả về trạng thái của đối tượng

Bắt Exception nếu muốn bổ sung thông tin và trả về Messages cho người dùng biết

Không ném một ngoại lệ từ bên trong một hàm ngoại lệ

Các code khác nhau sẽ có chuẩn Exception khác nhau 18

Page 19: CODING STANDARDS

Chuẩn ngữ nghĩa(tt)5. Coding Style  Không pha trộn phong cách lập trình trong

một nhóm liên quan chặt chẽ như class hoặc trong một module

Mỗi dòng code không nên quá dài. Gây dài dòng khó đọc.VD: C# không quá 80 kí tự.

19

Page 20: CODING STANDARDS

Phương pháp áp dụng chuẩn Làm sao quyết định loại chuẩn nào sẽ được áp

dụng và xác định trong chương trình của chúng ta như thế nào?Xem tài liệu hướng dẫn áp dụng chuẩn gắn liền với

ứng dụng đóXác định công cụ hỗ trợ chuẩn mã nguồn

Chúng ta nên hình thành phong cách áp dụng các mã nguồn bằng cách trả lời các câu hỏi sau:Khoảng trắng giữa các chữ có làm mã nguồn dễ

đọc hơn?Tên biến này có thể hiện nội dung chưa?Tên hàm này có đặt theo đúng chức năng gọi hay

ko?Chú thích mã nguồn thế nào?Thời gian sau quay lại chúng ta có thể dễ đọc, dễ

hiểu ko?

20

Page 21: CODING STANDARDS

Các chuẫn mã nguồn thông dụng Có rất nhiều chuẩn mã nguồn như: GNU, BSD,

Java, UNIX, Window...- GNU(GNU compiler collection) : hay còn được gọi là

GCC, phát hành năm 1987. o Là trình biên dịch tiêu chuẩn của các HĐH Unix,

Linux, BSD, Mac, nền tảng nhúng như Symbian, AMCC,…

o Hỗ trợ các ngôn ngữ: Pascal, C, C++, java,…- JAVA: ra đời năm 1991 ở Sun Microsystems, phát

hành 1994 o Chạy trên mọi nền tảng khác nhau thông qua môi

trường thực (hỗ trợ Sun solaris, Linux, Mac OS, FreeBSD, Windows, BEA, IBM,HP,…)

o Hỗ trợ trên hầu hết các trình duyệt: Internet Explorer, Firefox, Safari 21

Page 22: CODING STANDARDS

Các chuẫn mã nguồn thông dụng(tt)- Unix: dựa trên PDP-7 (1969-1970), viết bằng ngôn

ngữ C.oAT&T Bell Labs tiếp tục phát triển Unix lần lượt

dưới tên gọi hệ thống III, VoBắt đầu kết hợp với BSD từ hệ thống V

- BSD(Berkeley Software Distribution ): được phát triển từ Unix, sử dụng rộng rãi trong việc nghiên cứu cho các phần cứng PC

o FreeBSD: tập trung vào sự cài đặt dễ dàng của dòng máy PC

o NetBSD: tập trung vào nhiều kiến trúc CPU khác nhau

o OpenBSD: tập trung vào bảo mật

Page 23: CODING STANDARDS

Các công cụ hỗ trợ chuẩn mã nguồnJava: checkstyle, jcscC#: stylecopC++: cppcheck

23

Page 24: CODING STANDARDS

Thank you!

24