1 / 24

CODING STANDARDS

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

lona
Download Presentation

CODING STANDARDS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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 • Các chuẩn mã nguồn thông dụng • Các công cụ hỗ trợ chuẩn mã nguồn

  3. 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

  4. 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

  5. Chuẩn cú pháp • File Names and Organization (tên file và tổ chức) • Indentation (thụt đầu dòng) • Formatting (định dạng code) • Naming Conventions (qui ước đặt tên)

  6. 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

  7. 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 đơn • Break 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;

  8. 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

  9. Chuẩn cú pháp (tt) 3. Formatting • Inter-term spacing: khoảng cách • Nên đặt khoảng cách sau dấu phẩy hoặc chấm phẩy VD: 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) orfor(int i=0;i<10;++i)

  10. 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 Windows if (ia->ia_maddr != MADDRUNK) { sc->pPacketPagePhys = ia->ia_maddr; } • BSD và Java if ((cp = strchr(*argv, ':')) != NULL) { *cp++ = '\0'; a_gid(cp); }

  11. Chuẩn cú pháp (tt) 3. Formatting • Comment: chú thích cho nội dung dòng code • Chú thích cho các thuật toán case 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ác • Hay những vị trí cần chỉnh sửa trong tương tai. /* * TODO - sort output */

  12. 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à GNU VD: exponent_is_negative • Initials: dùng cho BSD VD: strcmp //string compare Ngoà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 ???

  13. Chuẩn ngữ nghĩa • Object Lifeycle (vòng đời đối tượng) • Control Flow (luồng điều khiển) • Various data types (kiểu dữ liệu) • Exception Handling (xử lí ngoại lệ) • Coding Style (phong cách code)

  14. 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ớ

  15. 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à block if (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) //bad if(!condition) //good

  16. 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ặckhởi tạo. VD: bool pos = (val > 0) ? true : false; Hoặc bool pos = (val > 0); bool pos; if (val > 0) { pos = true; } else { pos = false; }

  17. 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ố định VD: const PI= 3.14

  18. 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

  19. 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ự.

  20. 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?

  21. 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. • 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,… • Hỗ trợ các ngôn ngữ: Pascal, C, C++, java,… • JAVA: ra đời năm 1991 ở Sun Microsystems, phát hành 1994 • 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,…) • Hỗ trợ trên hầu hết các trình duyệt: Internet Explorer, Firefox, Safari

  22. 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. • AT&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, V • Bắ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 • FreeBSD: tập trung vào sự cài đặt dễ dàng của dòng máy PC • NetBSD: tập trung vào nhiều kiến trúc CPU khác nhau • OpenBSD: tập trung vào bảo mật

  23. Các công cụ hỗ trợ chuẩn mã nguồn • Java: checkstyle, jcsc • C#: stylecop • C++: cppcheck

  24. Thank you!

More Related