SlideShare a Scribd company logo
1 of 56
Download to read offline
LOGO
“ Add your company slogan ”
Chuẩn mã nguồn
TOPIC:
Nội dung trình bày
3. Chuẩn hình thức và chuẩn ngữ nghĩa
2. Tầm quan trọng của chuẩn mã nguồn
1.Chuẩn mã nguồn là gì?
5. Phương pháp áp dụng chuẩn mã nguồn
4. Một số chuẩn mã nguồn thông dụng
6. Công cụ hỗ trợ chuẩn mã nguồn
1. Chuẩn mã nguồn là gì?
Là một bộ luật quy định cách viết code của một
chương trình mà các lập trình viên bắt buộc phải
tuân theo khi tham gia phát triển chương trình đó.
 Đặt tên lớp, thuộc tính, phương thức,…
 Khoảng trắng.
 Khai báo và sử dụng biến.
 Comment trong mã nguồn.
 …
www.themegallery.com
Nội dung trình bày
3. Chuẩn hình thức và chuẩn ngữ nghĩa
2. Tầm quan trọng của chuẩn mã nguồn
1.Chuẩn mã nguồn là gì?
5. Phương pháp áp dụng chuẩn mã nguồn
4. Một số chuẩn mã nguồn thông dụng
6. Công cụ hỗ trợ chuẩn mã nguồn
2. Tầm quan trọng của chuẩn mã nguồn
Dễ bảo trì, sửa lỗi.
www.themegallery.com
public void InsertionSort( int[] data, int firstElement, int lastElement )
{int lowerBoundary = data[ firstElement-1 ]; data[ firstElement-1 ] =
SORT_MIN for ( int sortBoundary = firstElement+1; sortBoundary <=
lastElement; sortBoundary++ ) { int insertVal = data[ sortBoundary ]; int
insertPos = sortBoundary; while ( insertVal < data[ insertPos-1 ] ) {
data[ insertPos ] = data[ insertPos-1 ]; insertPos = insertPos-1; } data[
insertPos ] = insertVal; } data[ firstElement-1 ] = lowerBoundary; }
Bạn là một debugger xuất sắc
Có người nhờ bạn sửa lỗi chương
trình giúp họ
2. Tầm quan trọng của chuẩn mã nguồn
Dễ bảo trì, sửa lỗi.
www.themegallery.com
public void InsertionSort( int[] data, int firstElement, int lastElement ) {
int lowerBoundary = data[ firstElement-1 ];
data[ firstElement-1 ] = SORT_MIN;
for ( int sortBoundary = firstElement + 1; sortBoundary <= lastElement; sortBoundary++ ) {
int insertVal = data[ sortBoundary ];
int insertPos = sortBoundary;
while ( insertVal < data[ insertPos - 1 ] ) {
data[ insertPos ] = data[ insertPos - 1 ];
insertPos = insertPos - 1;
}
data[ insertPos ] = insertVal;
}
data[ firstElement - 1 ] = lowerBoundary;
}
2. Tầm quan trọng của chuẩn mã nguồn
Để người khác hiểu được mã nguồn của mình
www.themegallery.com
public int F( int n) {
if (n == 0) {
return 0;
}
if (n == 1) {
return 1;
}
int x = 0;
int y = 1;
int z;
for (int i = 2; i <= n; i++) {
z = x + y;
x = y;
y = z;
}
return z;
}
2. Tầm quan trọng của chuẩn mã nguồn
Để người khác hiểu được mã nguồn của mình
www.themegallery.com
public int TinhSoFibonacy (int n) {
if (n == 0) {
return 0; //n = 0 thì f(n) = 0
}
if (n == 1) {
return 1; //n = 1 thì f(n) = 1
}
//n >= 2 thì f(n) = f(n – 1) + f(n – 2)
int fBeforeBefore = 0;
int fBefore = 1;
int f;
for (int i = 2; i <= n; i++) {
f = fBefore + fBeforeBefore;
fBeforeBefore = fBefore;
fBefore = f;
}
return f;
}
2. Tầm quan trọng của chuẩn mã nguồn
Thống nhất code giữa các thành viên trong nhóm
www.themegallery.com
Class NhanVien {
string _maNhanVien;
string _hoTen;
Date _ngaySinh;
doule luong;
double phuCap;
string P_tinhTrangHonNhan;
public int TinhTuoi(){…}
pubic double tinhLuongCuoiThang(){…}
}
Nội dung trình bày
3. Chuẩn hình thức và chuẩn ngữ nghĩa
2. Tầm quan trọng của chuẩn mã nguồn
1.Chuẩn mã nguồn là gì?
5. Phương pháp áp dụng chuẩn mã nguồn
4. Một số chuẩn mã nguồn thông dụng
6. Công cụ hỗ trợ chuẩn mã nguồn
3. Chuẩn hình thức và chuẩn ngữ nghĩa
Chuẩn hình thức
Là những quy định liên quan đến sự định dạng
của mã nguồn
 Thụt đầu dòng
 Sử dụng khoảng trắng
 Đóng ngoặc, mở ngoặc
 Đặt tên lớp, thuộc tính, phương thức
 …
www.themegallery.com
3. Chuẩn hình thức và chuẩn ngữ nghĩa
Chuẩn ngữ nghĩa
Là những quy định liên quan đến sự thực thi của
mã nguồn
 Biểu thức so sánh
 Cấu trúc điều khiển : if, for, while
 Khai báo và sử dụng biến
 Cài đặt phương thức
 …
www.themegallery.com
Nội dung trình bày
3. Chuẩn hình thức và chuẩn ngữ nghĩa
2. Tầm quan trọng của chuẩn mã nguồn
1.Chuẩn mã nguồn là gì?
5. Phương pháp áp dụng chuẩn mã nguồn
4. Một số chuẩn mã nguồn thông dụng
6. Công cụ hỗ trợ chuẩn mã nguồn
4. Một số chuẩn mã nguồn thông dụng
GNU coding standards
 Tác giả: Richard Stallman
 Phiên bản đầu tiên phát hành vào năm 1987 bởi Free
Software Foundation, Inc.
 Lần cập nhật gần nhất 12/1/2012.
 Ngôn ngữ hỗ trợ : C(chủ yếu), C++, Pascal
 Sử dụng nhiều khi phát triển các thống triển khai trên các
hệ điều hành Linux, Unix,…
www.themegallery.com
4. Một số chuẩn mã nguồn thông dụng
Code Conventions for the Java Programming
Language
 Tác giả: Sun Microsystems
 Phiên bản đầu tiên phát hành vào năm 1991.
 Lần cập nhật gần nhất vào 20/4/1999
 Ngôn ngữ hỗ trợ chính: Java
www.themegallery.com
4. Một số chuẩn mã nguồn thông dụng
Philips Healthcare - C# Coding Standard
 Tác giả: Philips Healthcare
 Phiên bản mới nhất 2.0 phát hành năm 1999.
 Ngôn ngữ hỗ trợ chính: C#
www.themegallery.com
4. Một số chuẩn mã nguồn thông dụng
White Space
www.themegallery.com
Nhữngquyđịnhvềsửdụngkhoảngtrắng(space),thụtđầu
dòng,xuốngdòng,dòngtrống.Giúpchonộidungvănbảnđ
ượctổchứcmộtcáchcóhệthốngđểdễngườiđọcdễdàngti
ếpthu.
4. Một số chuẩn mã nguồn thông dụng
White Space
www.themegallery.com
Những quy định về sử dụng khoảng trắng (space),
thụt đầu dòng, xuống dòng, dòng trống.
Giúp cho nội dung văn bản được tổ chức một cách có
hệ thống để người đọc dễ dàng tiếp thu.
dùng white space khi viết mã nguồn?
4. Một số chuẩn mã nguồn thông dụng
White Space – thụt đầu dòng
www.themegallery.com
Xác định một chuẩn thụt đầu dòng cho toàn bộ mã nguồn của
chương trình.
 1 đơn vị thụt đầu dòng = 1 tab(*)
 Hoặc, 1 đơn vị thụt đầu dòng = 5 khoảng trắng
Dòng code thứ 20 dùng 2 đơn vị thụt đầu dòng nghĩa là bấm tab 2 lần(*)
Nên dùng tab thay cho khoảng trắng
 Đỡ tốn công nhập quá nhiều lần khoảng trắng
 Có thể tùy chỉnh một đơn vị tab ứng với bao nhiêu khoảng trắng tùy ý
Hai dòng code cách nhau một bậc thì sẽ cách nhau một đơn vị
thụt đầu dòng.
4. Một số chuẩn mã nguồn thông dụng
White Space – thụt đầu dòng
www.themegallery.com
int Main(int argc, char *argv[])
{
while(x == y)
{
DoSomeThing();
DoSomeThingElse();
if (hasError)
{
FixError();
}
}
}
int Main(int argc, char *argv[])
{
while(x == y)
{
DoSomeThing();
DoSomeThingElse();
if (hasError)
{
FixError();
}
}
}
4. Một số chuẩn mã nguồn thông dụng
White Space – Dòng trống
www.themegallery.com
Những dòng code có quan hệ với nhau (cùng thực hiện một
công việc) thì gom lại thành một block
Nghĩa là không có dòng trống giữa các đoạn code như trên
Hai block code thì cách nhau ít nhất một dòng trống
4. Một số chuẩn mã nguồn thông dụng
White Space – dòng trống
www.themegallery.com
//do something
string connectionString = ReadConnectionString();
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT * FROM Customer;";
conn.Open();
//so something else
4. Một số chuẩn mã nguồn thông dụng
White Space – dòng trống
www.themegallery.com
//do something
string connectionString = ReadConnectionString();
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT * FROM Customer;";
conn.Open();
//so something else
4. Một số chuẩn mã nguồn thông dụng
White Space – inter-term spacing
Đặt khoảng trắng sau dấu phẩy và dấu chấm phẩy
TestMethod(a, b, c)
TestMethod(a,b,c)
Đặt khoảng trắng xung quanh các toán tử
a=b;
for(int i=0;i<10;i++)
a = b;
for(int i = 0 ; i < 10; i++)
4. Một số chuẩn mã nguồn thông dụng
Ngoặc tròn
12 + ((100 % 3) * 7) / 8)
C++ version: 12 + 100 % 3 * 7 / 8 = ?
Dùng dấu ngoặc tròn để
 Người đọc hiểu rõ mục đích của bạn
 Chắc chắn là trình biên dịch sẽ thực hiện đúng theo ý của bạn
Hãy quyết định dùng dấu ngoặc tròn khi bạn đang phân vân là có nên
dùng dấu ngoặc tròn hay không.
12 + ((100 % (3 * 7)) / 8)
4. Một số chuẩn mã nguồn thông dụng
Dấu {} ( theo chuẩn C# )
Dấu “{” phải được đặt ở dòng mới, không được đặt cùng dòng với
các câu if, for, while,…
public class MyClass {
TTheTestEnum FTestVar;
void DoSomething() {
if (FTestVar == 10) {
//...do something
}
else {
//...do something else
}
}
}
4. Một số chuẩn mã nguồn thông dụng
Dấu {} ( theo chuẩn C# )
Dấu “{” phải được đặt ở dòng mới, không được đặt cùng dòng với
các câu if, for, while,…
public class TTestMeClass
{
TTheTestEnum FTestVar;
void DoSomething()
{
if (FTestVar == 10)
{
//...do something
}
else
{
//...do something else
}
}
}
4. Một số chuẩn mã nguồn thông dụng
Comment
Không viết các comment chỉ lặp code
int sum = 0;
//Lặp từ 0 đến 100
for (int i = 0; i < 100; i++)
{
//Mỗi lần lặp cộng giá trị sum cho 2
sum = sum + 2;
}
 Các comment trên đơn giản chỉ lặp code, chứ không cung
cấp thêm thông tin gì cho người đọc.
 Làm code dài hơn.
 Người đọc tốn thời gian đọc nhiều hơn.
4. Một số chuẩn mã nguồn thông dụng
Comment
Viết các comment không cầu kì; càng đơn giản càng tốt
4. Một số chuẩn mã nguồn thông dụng
Comment
Viết các comment không cầu kì; càng đơn giản càng tốt
4. Một số chuẩn mã nguồn thông dụng
Comment
Khi dùng nhiều endline comment trên các dòng code liên tiếp nhau thì
các comment này phải được canh lề như nhau
4. Một số chuẩn mã nguồn thông dụng
Comment
Khi dùng nhiều endline comment trên các dòng code liên tiếp nhau thì
các comment này phải được canh lề như nhau
4. Một số chuẩn mã nguồn thông dụng
Comment
Một số lưu ý khác về comment
 Nên vừa code vừa viết comment. Tránh trường hợp viết code xong rồi
mới viết comment
 Không nên đụng chỗ nào cũng comment, chỉ viết comment khi bạn cảm
nhận là đoạn code của mình quá phức tạp.
4. Một số chuẩn mã nguồn thông dụng
Quy ước đặt tên
Quy tắc viết hoa
Pascal case
• Các chữ cái đầu mỗi từ được viết hoa.
• Các chữ còn lại được viết thường.
MyName, PathSource
Camel case
• Giống với Pascal case nhưng chữ cái đầu của từ đầu tiên viết
thường
myName, pathSource
4. Một số chuẩn mã nguồn thông dụng
Quy ước đặt tên
Class
 Sử dụng danh từ hay cụm danh từ : NhanVien, FormDangNhap,…
 Dùng Pascal case : NhanVien, FormDangNhap,…
 Hạn chế viết tắt gây khó hiểu :
 Sai: MyRect
 Đúng: MyRectangle
 Không dùng tiền tố khi đặt tên lớp
 Sai : CFileStream
 Đúng : FileStream
4. Một số chuẩn mã nguồn thông dụng
Quy ước đặt tên
Interface
Giống như đặt tên class nhưng có thêm tiền tố I
 IComponent
 ICustomAttributeProvider
4. Một số chuẩn mã nguồn thông dụng
Quy ước đặt tên
Phương thức
 Pascal Case
TinhLuong
 Tên phương thức thể hiện được chức năng của phương thức đó
TimSoNguyenToLonNhat, DemSoChan
 Tránh đặt tên gây cảm giác mơ hồ, không rõ nghĩa
XuatKetQua, SapXep
 Không phân biệt tên các phương thức bằng số
TinhLuongNhanVien1, TinhLuongNhanVien2, TinhLuongNhanVien3
4. Một số chuẩn mã nguồn thông dụng
Quy ước đặt tên
Biến
 Camel Case
ngaySinh, ngayGiaoHang,…
 Không dùng tiền tố
string strHoTen, bool bFlag,…
 Tên biến gợi nhớ, tránh viết tắt gây khó hiểu
• Đúng
String address
• Sai
String addr
4. Một số chuẩn mã nguồn thông dụng
Quy ước đặt tên
Biến(tt)
 Không đặt tên biến chỉ bằng 1 chữ cái như x, y , z,… trừ trường hợp các
biến đếm i, j, k
 Không nên đặt tên biến quá dài, hay quá ngắn vì có thể làm rối chương
trình hoặc cũng dẫn đến ý nghĩa biến mơ hồ(quá ngắn)
4. Một số chuẩn mã nguồn thông dụng
Quy ước đặt tên
Biến(tt)
 Nếu biến làm thuộc tính của một class thì thêm tiền tố “_” nhằm phân
biệt với các biến cục bộ
_maSoSinhVien, _chieuDai, _chieuRong
4. Một số chuẩn mã nguồn thông dụng
Viết một phương thức hiệu quả
 Khi một đoạn code xuất hiện ở nhiều nơi trong chương trình ta gom các
đoạn code đó thành một phương thức
Tiết kiệm thời gian bảo trì, sửa lỗi
 Khi trong một phương thức có các đoạn code xử lý phức tạp thì ta nên
tách đoạn code phức tạp đó ra thành một phương thức riêng biệt
Dễ dàng theo dõi, debug
 Khai báo tham số truyền vào vừa đủ, tránh tình trạng khai báo tham số
truyền vào nhưng không sử dụng
4. Một số chuẩn mã nguồn thông dụng
Viết một phương thức hiệu quả(tt)
Mỗi phương thức chỉ thực hiện một chức năng
void SapXepVaXuatRaConsole(int a[], int n)
{
//code sap xep mang
//code xuat ra console
}
Yêu cầu mới :Cho một mảng hãy sắp xếp và xuất kết quả ra file
Giải pháp: Viết thêm một phương thức mới SapXepVaXuatRaFile
Lặp lại code sắp xếp mảng
4. Một số chuẩn mã nguồn thông dụng
Viết một phương thức hiệu quả(tt)
Kích thước của một phương thức?
 Nhiều thí nghiệm cho thấy một phương thức có khoảng từ 50 đến
150 dòng code là hợp lý
(Trích Steve McConnell, Chapter 7.4 - Code Complete, Second Edition. 2004)
4. Một số chuẩn mã nguồn thông dụng
Left-hand comparsion
C++ : Thực hiện phép so sánh
 if (a == 42) { ... } // A right-hand comparison, kiểm tra a có bằng 42.
 if (42 == a) { ... } // dùng kiểu the left-hand comparison, kiểm tra 42 có
bằng a .
if (a = 42) { ... } // biên dịch không lỗi, kết quả sai  khó debug
if (42 = a) { ... } // biên dịch lỗi vì ta thực hiện gán 42 = a
Đối với các ngôn ngữ lập trình sử dụng “=” thực hiện phép gán
và “==“ thực hiện so sánh.
Điều gì xảy ra nếu sơ ý viết “==” thành “=”?
4. Một số chuẩn mã nguồn thông dụng
Sử dụng biến (variables)
Khai báo biến
 Tránh tình trạng khai báo biến mà không sử dụng.
Nhiều trình biên dịch warning khi complie
 Khai báo tất cả các biến mặc dù trình biên dịch không bắt buộc
làm vậy
Visual Basic cho ta sử dụng biến mà không cần khai báo
Không kiểm soát được kiểu dữ liệu và giá trị khởi tạo
4. Một số chuẩn mã nguồn thông dụng
Các lệnh if, while, for không nên lồng nhau hơn 3
bậc
4. Một số chuẩn mã nguồn thông dụng
Các lệnh if, while, for không nên lồng nhau hơn 3
bậc
Nội dung trình bày
3. Chuẩn hình thức và chuẩn ngữ nghĩa
2. Tầm quan trọng của chuẩn mã nguồn
1.Chuẩn mã nguồn là gì?
5. Phương pháp áp dụng chuẩn mã nguồn
4. Một số chuẩn mã nguồn thông dụng
6. Công cụ hỗ trợ chuẩn mã nguồn
5. Phương pháp áp dụng chuẩn mã nguồn
1/6. Chọn một bộ chuẩn
5. Phương pháp áp dụng chuẩn mã nguồn
2/6. Lập checklist các luật muốn áp dụng
5. Phương pháp áp dụng chuẩn mã nguồn
3/6. Chuẩn bị mã nguồn
5. Phương pháp áp dụng chuẩn mã nguồn
4/6. Chọn một công cụ hỗ trợ chuẩn mã nguồn
Personal License : $199
Personal License : $99
Personal License : $99
5. Phương pháp áp dụng chuẩn mã nguồn
5/6. Dùng tool chỉ định các luật trong checklist
5. Phương pháp áp dụng chuẩn mã nguồn
6/6. Dùng tool áp đặt các luật đã chọn lên mã
nguồn
Nội dung trình bày
3. Chuẩn hình thức và chuẩn ngữ nghĩa
2. Tầm quan trọng của chuẩn mã nguồn
1.Chuẩn mã nguồn là gì?
5. Phương pháp áp dụng chuẩn mã nguồn
4. Một số chuẩn mã nguồn thông dụng
6. Công cụ hỗ trợ chuẩn mã nguồn
6. Công cụ hỗ trợ chuẩn mã nguồn
Demo

More Related Content

Similar to Chuanmanguon 151124092923-lva1-app6892

Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]
Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]
Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]leduyk11
 
Nhat nghe c#
Nhat nghe   c#Nhat nghe   c#
Nhat nghe c#LanLT2011
 
Python moi
Python moiPython moi
Python moiDÉp LÊ
 
PMMNM.docx
PMMNM.docxPMMNM.docx
PMMNM.docxNgnHng26
 
OOP_02_Java can ban.pdf
OOP_02_Java can ban.pdfOOP_02_Java can ban.pdf
OOP_02_Java can ban.pdfssuserd01a5c
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson00
Lap trinh huong_doi_tuong_cpp_dhct_lesson00Lap trinh huong_doi_tuong_cpp_dhct_lesson00
Lap trinh huong_doi_tuong_cpp_dhct_lesson00xcode_esvn
 
Hàm (function)
Hàm (function)Hàm (function)
Hàm (function)Son Nguyen
 
Slide 01-Web Application Overview (1).pdf
Slide 01-Web Application Overview (1).pdfSlide 01-Web Application Overview (1).pdf
Slide 01-Web Application Overview (1).pdfHuyVnh4
 
Chuong 4. lap trinh hop ngu
Chuong 4. lap trinh hop nguChuong 4. lap trinh hop ngu
Chuong 4. lap trinh hop ngumituan
 
Giao an trinh_pascal_bai_tap_co_dap_an_huong_dan
Giao an trinh_pascal_bai_tap_co_dap_an_huong_danGiao an trinh_pascal_bai_tap_co_dap_an_huong_dan
Giao an trinh_pascal_bai_tap_co_dap_an_huong_danVăn Võ Ntn
 
Devwork.vn Giáo trình C# cơ bản
Devwork.vn Giáo trình C# cơ bảnDevwork.vn Giáo trình C# cơ bản
Devwork.vn Giáo trình C# cơ bảnDevwork
 
Reverse Engineering .NET - Advanced Patching, Playing with IL
Reverse Engineering .NET - Advanced Patching, Playing with ILReverse Engineering .NET - Advanced Patching, Playing with IL
Reverse Engineering .NET - Advanced Patching, Playing with ILLevis Nickaster
 
Tai lieu huong_dan_ve_lap_trinh_php_7512
Tai lieu huong_dan_ve_lap_trinh_php_7512Tai lieu huong_dan_ve_lap_trinh_php_7512
Tai lieu huong_dan_ve_lap_trinh_php_7512lekytho
 
Hacking de4dot for fun - Bài dịch
Hacking de4dot for fun - Bài dịchHacking de4dot for fun - Bài dịch
Hacking de4dot for fun - Bài dịchLevis Nickaster
 

Similar to Chuanmanguon 151124092923-lva1-app6892 (20)

Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]
Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]
Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]
 
Nhat nghe c#
Nhat nghe   c#Nhat nghe   c#
Nhat nghe c#
 
Nhat nghe c#
Nhat nghe   c#Nhat nghe   c#
Nhat nghe c#
 
Python moi
Python moiPython moi
Python moi
 
Coding standard
Coding standardCoding standard
Coding standard
 
PMMNM.docx
PMMNM.docxPMMNM.docx
PMMNM.docx
 
005. LAP TRINH C#.pdf
005. LAP TRINH C#.pdf005. LAP TRINH C#.pdf
005. LAP TRINH C#.pdf
 
005. LAP TRINH C#.pdf
005. LAP TRINH C#.pdf005. LAP TRINH C#.pdf
005. LAP TRINH C#.pdf
 
hàm_nocopy.pdf
hàm_nocopy.pdfhàm_nocopy.pdf
hàm_nocopy.pdf
 
Basic C programming
Basic C programmingBasic C programming
Basic C programming
 
OOP_02_Java can ban.pdf
OOP_02_Java can ban.pdfOOP_02_Java can ban.pdf
OOP_02_Java can ban.pdf
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson00
Lap trinh huong_doi_tuong_cpp_dhct_lesson00Lap trinh huong_doi_tuong_cpp_dhct_lesson00
Lap trinh huong_doi_tuong_cpp_dhct_lesson00
 
Hàm (function)
Hàm (function)Hàm (function)
Hàm (function)
 
Slide 01-Web Application Overview (1).pdf
Slide 01-Web Application Overview (1).pdfSlide 01-Web Application Overview (1).pdf
Slide 01-Web Application Overview (1).pdf
 
Chuong 4. lap trinh hop ngu
Chuong 4. lap trinh hop nguChuong 4. lap trinh hop ngu
Chuong 4. lap trinh hop ngu
 
Giao an trinh_pascal_bai_tap_co_dap_an_huong_dan
Giao an trinh_pascal_bai_tap_co_dap_an_huong_danGiao an trinh_pascal_bai_tap_co_dap_an_huong_dan
Giao an trinh_pascal_bai_tap_co_dap_an_huong_dan
 
Devwork.vn Giáo trình C# cơ bản
Devwork.vn Giáo trình C# cơ bảnDevwork.vn Giáo trình C# cơ bản
Devwork.vn Giáo trình C# cơ bản
 
Reverse Engineering .NET - Advanced Patching, Playing with IL
Reverse Engineering .NET - Advanced Patching, Playing with ILReverse Engineering .NET - Advanced Patching, Playing with IL
Reverse Engineering .NET - Advanced Patching, Playing with IL
 
Tai lieu huong_dan_ve_lap_trinh_php_7512
Tai lieu huong_dan_ve_lap_trinh_php_7512Tai lieu huong_dan_ve_lap_trinh_php_7512
Tai lieu huong_dan_ve_lap_trinh_php_7512
 
Hacking de4dot for fun - Bài dịch
Hacking de4dot for fun - Bài dịchHacking de4dot for fun - Bài dịch
Hacking de4dot for fun - Bài dịch
 

Chuanmanguon 151124092923-lva1-app6892

  • 1. LOGO “ Add your company slogan ” Chuẩn mã nguồn TOPIC:
  • 2. Nội dung trình bày 3. Chuẩn hình thức và chuẩn ngữ nghĩa 2. Tầm quan trọng của chuẩn mã nguồn 1.Chuẩn mã nguồn là gì? 5. Phương pháp áp dụng chuẩn mã nguồn 4. Một số chuẩn mã nguồn thông dụng 6. Công cụ hỗ trợ chuẩn mã nguồn
  • 3. 1. Chuẩn mã nguồn là gì? Là một bộ luật quy định cách viết code của một chương trình mà các lập trình viên bắt buộc phải tuân theo khi tham gia phát triển chương trình đó.  Đặt tên lớp, thuộc tính, phương thức,…  Khoảng trắng.  Khai báo và sử dụng biến.  Comment trong mã nguồn.  … www.themegallery.com
  • 4. Nội dung trình bày 3. Chuẩn hình thức và chuẩn ngữ nghĩa 2. Tầm quan trọng của chuẩn mã nguồn 1.Chuẩn mã nguồn là gì? 5. Phương pháp áp dụng chuẩn mã nguồn 4. Một số chuẩn mã nguồn thông dụng 6. Công cụ hỗ trợ chuẩn mã nguồn
  • 5. 2. Tầm quan trọng của chuẩn mã nguồn Dễ bảo trì, sửa lỗi. www.themegallery.com public void InsertionSort( int[] data, int firstElement, int lastElement ) {int lowerBoundary = data[ firstElement-1 ]; data[ firstElement-1 ] = SORT_MIN for ( int sortBoundary = firstElement+1; sortBoundary <= lastElement; sortBoundary++ ) { int insertVal = data[ sortBoundary ]; int insertPos = sortBoundary; while ( insertVal < data[ insertPos-1 ] ) { data[ insertPos ] = data[ insertPos-1 ]; insertPos = insertPos-1; } data[ insertPos ] = insertVal; } data[ firstElement-1 ] = lowerBoundary; } Bạn là một debugger xuất sắc Có người nhờ bạn sửa lỗi chương trình giúp họ
  • 6. 2. Tầm quan trọng của chuẩn mã nguồn Dễ bảo trì, sửa lỗi. www.themegallery.com public void InsertionSort( int[] data, int firstElement, int lastElement ) { int lowerBoundary = data[ firstElement-1 ]; data[ firstElement-1 ] = SORT_MIN; for ( int sortBoundary = firstElement + 1; sortBoundary <= lastElement; sortBoundary++ ) { int insertVal = data[ sortBoundary ]; int insertPos = sortBoundary; while ( insertVal < data[ insertPos - 1 ] ) { data[ insertPos ] = data[ insertPos - 1 ]; insertPos = insertPos - 1; } data[ insertPos ] = insertVal; } data[ firstElement - 1 ] = lowerBoundary; }
  • 7. 2. Tầm quan trọng của chuẩn mã nguồn Để người khác hiểu được mã nguồn của mình www.themegallery.com public int F( int n) { if (n == 0) { return 0; } if (n == 1) { return 1; } int x = 0; int y = 1; int z; for (int i = 2; i <= n; i++) { z = x + y; x = y; y = z; } return z; }
  • 8. 2. Tầm quan trọng của chuẩn mã nguồn Để người khác hiểu được mã nguồn của mình www.themegallery.com public int TinhSoFibonacy (int n) { if (n == 0) { return 0; //n = 0 thì f(n) = 0 } if (n == 1) { return 1; //n = 1 thì f(n) = 1 } //n >= 2 thì f(n) = f(n – 1) + f(n – 2) int fBeforeBefore = 0; int fBefore = 1; int f; for (int i = 2; i <= n; i++) { f = fBefore + fBeforeBefore; fBeforeBefore = fBefore; fBefore = f; } return f; }
  • 9. 2. Tầm quan trọng của chuẩn mã nguồn Thống nhất code giữa các thành viên trong nhóm www.themegallery.com Class NhanVien { string _maNhanVien; string _hoTen; Date _ngaySinh; doule luong; double phuCap; string P_tinhTrangHonNhan; public int TinhTuoi(){…} pubic double tinhLuongCuoiThang(){…} }
  • 10. Nội dung trình bày 3. Chuẩn hình thức và chuẩn ngữ nghĩa 2. Tầm quan trọng của chuẩn mã nguồn 1.Chuẩn mã nguồn là gì? 5. Phương pháp áp dụng chuẩn mã nguồn 4. Một số chuẩn mã nguồn thông dụng 6. Công cụ hỗ trợ chuẩn mã nguồn
  • 11. 3. Chuẩn hình thức và chuẩn ngữ nghĩa Chuẩn hình thức Là những quy định liên quan đến sự định dạng của mã nguồn  Thụt đầu dòng  Sử dụng khoảng trắng  Đóng ngoặc, mở ngoặc  Đặt tên lớp, thuộc tính, phương thức  … www.themegallery.com
  • 12. 3. Chuẩn hình thức và chuẩn ngữ nghĩa Chuẩn ngữ nghĩa Là những quy định liên quan đến sự thực thi của mã nguồn  Biểu thức so sánh  Cấu trúc điều khiển : if, for, while  Khai báo và sử dụng biến  Cài đặt phương thức  … www.themegallery.com
  • 13. Nội dung trình bày 3. Chuẩn hình thức và chuẩn ngữ nghĩa 2. Tầm quan trọng của chuẩn mã nguồn 1.Chuẩn mã nguồn là gì? 5. Phương pháp áp dụng chuẩn mã nguồn 4. Một số chuẩn mã nguồn thông dụng 6. Công cụ hỗ trợ chuẩn mã nguồn
  • 14. 4. Một số chuẩn mã nguồn thông dụng GNU coding standards  Tác giả: Richard Stallman  Phiên bản đầu tiên phát hành vào năm 1987 bởi Free Software Foundation, Inc.  Lần cập nhật gần nhất 12/1/2012.  Ngôn ngữ hỗ trợ : C(chủ yếu), C++, Pascal  Sử dụng nhiều khi phát triển các thống triển khai trên các hệ điều hành Linux, Unix,… www.themegallery.com
  • 15. 4. Một số chuẩn mã nguồn thông dụng Code Conventions for the Java Programming Language  Tác giả: Sun Microsystems  Phiên bản đầu tiên phát hành vào năm 1991.  Lần cập nhật gần nhất vào 20/4/1999  Ngôn ngữ hỗ trợ chính: Java www.themegallery.com
  • 16. 4. Một số chuẩn mã nguồn thông dụng Philips Healthcare - C# Coding Standard  Tác giả: Philips Healthcare  Phiên bản mới nhất 2.0 phát hành năm 1999.  Ngôn ngữ hỗ trợ chính: C# www.themegallery.com
  • 17. 4. Một số chuẩn mã nguồn thông dụng White Space www.themegallery.com Nhữngquyđịnhvềsửdụngkhoảngtrắng(space),thụtđầu dòng,xuốngdòng,dòngtrống.Giúpchonộidungvănbảnđ ượctổchứcmộtcáchcóhệthốngđểdễngườiđọcdễdàngti ếpthu.
  • 18. 4. Một số chuẩn mã nguồn thông dụng White Space www.themegallery.com Những quy định về sử dụng khoảng trắng (space), thụt đầu dòng, xuống dòng, dòng trống. Giúp cho nội dung văn bản được tổ chức một cách có hệ thống để người đọc dễ dàng tiếp thu. dùng white space khi viết mã nguồn?
  • 19. 4. Một số chuẩn mã nguồn thông dụng White Space – thụt đầu dòng www.themegallery.com Xác định một chuẩn thụt đầu dòng cho toàn bộ mã nguồn của chương trình.  1 đơn vị thụt đầu dòng = 1 tab(*)  Hoặc, 1 đơn vị thụt đầu dòng = 5 khoảng trắng Dòng code thứ 20 dùng 2 đơn vị thụt đầu dòng nghĩa là bấm tab 2 lần(*) Nên dùng tab thay cho khoảng trắng  Đỡ tốn công nhập quá nhiều lần khoảng trắng  Có thể tùy chỉnh một đơn vị tab ứng với bao nhiêu khoảng trắng tùy ý Hai dòng code cách nhau một bậc thì sẽ cách nhau một đơn vị thụt đầu dòng.
  • 20. 4. Một số chuẩn mã nguồn thông dụng White Space – thụt đầu dòng www.themegallery.com int Main(int argc, char *argv[]) { while(x == y) { DoSomeThing(); DoSomeThingElse(); if (hasError) { FixError(); } } } int Main(int argc, char *argv[]) { while(x == y) { DoSomeThing(); DoSomeThingElse(); if (hasError) { FixError(); } } }
  • 21. 4. Một số chuẩn mã nguồn thông dụng White Space – Dòng trống www.themegallery.com Những dòng code có quan hệ với nhau (cùng thực hiện một công việc) thì gom lại thành một block Nghĩa là không có dòng trống giữa các đoạn code như trên Hai block code thì cách nhau ít nhất một dòng trống
  • 22. 4. Một số chuẩn mã nguồn thông dụng White Space – dòng trống www.themegallery.com //do something string connectionString = ReadConnectionString(); SqlConnection conn = new SqlConnection(connectionString); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = "SELECT * FROM Customer;"; conn.Open(); //so something else
  • 23. 4. Một số chuẩn mã nguồn thông dụng White Space – dòng trống www.themegallery.com //do something string connectionString = ReadConnectionString(); SqlConnection conn = new SqlConnection(connectionString); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = "SELECT * FROM Customer;"; conn.Open(); //so something else
  • 24. 4. Một số chuẩn mã nguồn thông dụng White Space – inter-term spacing Đặt khoảng trắng sau dấu phẩy và dấu chấm phẩy TestMethod(a, b, c) TestMethod(a,b,c) Đặt khoảng trắng xung quanh các toán tử a=b; for(int i=0;i<10;i++) a = b; for(int i = 0 ; i < 10; i++)
  • 25. 4. Một số chuẩn mã nguồn thông dụng Ngoặc tròn 12 + ((100 % 3) * 7) / 8) C++ version: 12 + 100 % 3 * 7 / 8 = ? Dùng dấu ngoặc tròn để  Người đọc hiểu rõ mục đích của bạn  Chắc chắn là trình biên dịch sẽ thực hiện đúng theo ý của bạn Hãy quyết định dùng dấu ngoặc tròn khi bạn đang phân vân là có nên dùng dấu ngoặc tròn hay không. 12 + ((100 % (3 * 7)) / 8)
  • 26. 4. Một số chuẩn mã nguồn thông dụng Dấu {} ( theo chuẩn C# ) Dấu “{” phải được đặt ở dòng mới, không được đặt cùng dòng với các câu if, for, while,… public class MyClass { TTheTestEnum FTestVar; void DoSomething() { if (FTestVar == 10) { //...do something } else { //...do something else } } }
  • 27. 4. Một số chuẩn mã nguồn thông dụng Dấu {} ( theo chuẩn C# ) Dấu “{” phải được đặt ở dòng mới, không được đặt cùng dòng với các câu if, for, while,… public class TTestMeClass { TTheTestEnum FTestVar; void DoSomething() { if (FTestVar == 10) { //...do something } else { //...do something else } } }
  • 28. 4. Một số chuẩn mã nguồn thông dụng Comment Không viết các comment chỉ lặp code int sum = 0; //Lặp từ 0 đến 100 for (int i = 0; i < 100; i++) { //Mỗi lần lặp cộng giá trị sum cho 2 sum = sum + 2; }  Các comment trên đơn giản chỉ lặp code, chứ không cung cấp thêm thông tin gì cho người đọc.  Làm code dài hơn.  Người đọc tốn thời gian đọc nhiều hơn.
  • 29. 4. Một số chuẩn mã nguồn thông dụng Comment Viết các comment không cầu kì; càng đơn giản càng tốt
  • 30. 4. Một số chuẩn mã nguồn thông dụng Comment Viết các comment không cầu kì; càng đơn giản càng tốt
  • 31. 4. Một số chuẩn mã nguồn thông dụng Comment Khi dùng nhiều endline comment trên các dòng code liên tiếp nhau thì các comment này phải được canh lề như nhau
  • 32. 4. Một số chuẩn mã nguồn thông dụng Comment Khi dùng nhiều endline comment trên các dòng code liên tiếp nhau thì các comment này phải được canh lề như nhau
  • 33. 4. Một số chuẩn mã nguồn thông dụng Comment Một số lưu ý khác về comment  Nên vừa code vừa viết comment. Tránh trường hợp viết code xong rồi mới viết comment  Không nên đụng chỗ nào cũng comment, chỉ viết comment khi bạn cảm nhận là đoạn code của mình quá phức tạp.
  • 34. 4. Một số chuẩn mã nguồn thông dụng Quy ước đặt tên Quy tắc viết hoa Pascal case • Các chữ cái đầu mỗi từ được viết hoa. • Các chữ còn lại được viết thường. MyName, PathSource Camel case • Giống với Pascal case nhưng chữ cái đầu của từ đầu tiên viết thường myName, pathSource
  • 35. 4. Một số chuẩn mã nguồn thông dụng Quy ước đặt tên Class  Sử dụng danh từ hay cụm danh từ : NhanVien, FormDangNhap,…  Dùng Pascal case : NhanVien, FormDangNhap,…  Hạn chế viết tắt gây khó hiểu :  Sai: MyRect  Đúng: MyRectangle  Không dùng tiền tố khi đặt tên lớp  Sai : CFileStream  Đúng : FileStream
  • 36. 4. Một số chuẩn mã nguồn thông dụng Quy ước đặt tên Interface Giống như đặt tên class nhưng có thêm tiền tố I  IComponent  ICustomAttributeProvider
  • 37. 4. Một số chuẩn mã nguồn thông dụng Quy ước đặt tên Phương thức  Pascal Case TinhLuong  Tên phương thức thể hiện được chức năng của phương thức đó TimSoNguyenToLonNhat, DemSoChan  Tránh đặt tên gây cảm giác mơ hồ, không rõ nghĩa XuatKetQua, SapXep  Không phân biệt tên các phương thức bằng số TinhLuongNhanVien1, TinhLuongNhanVien2, TinhLuongNhanVien3
  • 38. 4. Một số chuẩn mã nguồn thông dụng Quy ước đặt tên Biến  Camel Case ngaySinh, ngayGiaoHang,…  Không dùng tiền tố string strHoTen, bool bFlag,…  Tên biến gợi nhớ, tránh viết tắt gây khó hiểu • Đúng String address • Sai String addr
  • 39. 4. Một số chuẩn mã nguồn thông dụng Quy ước đặt tên Biến(tt)  Không đặt tên biến chỉ bằng 1 chữ cái như x, y , z,… trừ trường hợp các biến đếm i, j, k  Không nên đặt tên biến quá dài, hay quá ngắn vì có thể làm rối chương trình hoặc cũng dẫn đến ý nghĩa biến mơ hồ(quá ngắn)
  • 40. 4. Một số chuẩn mã nguồn thông dụng Quy ước đặt tên Biến(tt)  Nếu biến làm thuộc tính của một class thì thêm tiền tố “_” nhằm phân biệt với các biến cục bộ _maSoSinhVien, _chieuDai, _chieuRong
  • 41. 4. Một số chuẩn mã nguồn thông dụng Viết một phương thức hiệu quả  Khi một đoạn code xuất hiện ở nhiều nơi trong chương trình ta gom các đoạn code đó thành một phương thức Tiết kiệm thời gian bảo trì, sửa lỗi  Khi trong một phương thức có các đoạn code xử lý phức tạp thì ta nên tách đoạn code phức tạp đó ra thành một phương thức riêng biệt Dễ dàng theo dõi, debug  Khai báo tham số truyền vào vừa đủ, tránh tình trạng khai báo tham số truyền vào nhưng không sử dụng
  • 42. 4. Một số chuẩn mã nguồn thông dụng Viết một phương thức hiệu quả(tt) Mỗi phương thức chỉ thực hiện một chức năng void SapXepVaXuatRaConsole(int a[], int n) { //code sap xep mang //code xuat ra console } Yêu cầu mới :Cho một mảng hãy sắp xếp và xuất kết quả ra file Giải pháp: Viết thêm một phương thức mới SapXepVaXuatRaFile Lặp lại code sắp xếp mảng
  • 43. 4. Một số chuẩn mã nguồn thông dụng Viết một phương thức hiệu quả(tt) Kích thước của một phương thức?  Nhiều thí nghiệm cho thấy một phương thức có khoảng từ 50 đến 150 dòng code là hợp lý (Trích Steve McConnell, Chapter 7.4 - Code Complete, Second Edition. 2004)
  • 44. 4. Một số chuẩn mã nguồn thông dụng Left-hand comparsion C++ : Thực hiện phép so sánh  if (a == 42) { ... } // A right-hand comparison, kiểm tra a có bằng 42.  if (42 == a) { ... } // dùng kiểu the left-hand comparison, kiểm tra 42 có bằng a . if (a = 42) { ... } // biên dịch không lỗi, kết quả sai  khó debug if (42 = a) { ... } // biên dịch lỗi vì ta thực hiện gán 42 = a Đối với các ngôn ngữ lập trình sử dụng “=” thực hiện phép gán và “==“ thực hiện so sánh. Điều gì xảy ra nếu sơ ý viết “==” thành “=”?
  • 45. 4. Một số chuẩn mã nguồn thông dụng Sử dụng biến (variables) Khai báo biến  Tránh tình trạng khai báo biến mà không sử dụng. Nhiều trình biên dịch warning khi complie  Khai báo tất cả các biến mặc dù trình biên dịch không bắt buộc làm vậy Visual Basic cho ta sử dụng biến mà không cần khai báo Không kiểm soát được kiểu dữ liệu và giá trị khởi tạo
  • 46. 4. Một số chuẩn mã nguồn thông dụng Các lệnh if, while, for không nên lồng nhau hơn 3 bậc
  • 47. 4. Một số chuẩn mã nguồn thông dụng Các lệnh if, while, for không nên lồng nhau hơn 3 bậc
  • 48. Nội dung trình bày 3. Chuẩn hình thức và chuẩn ngữ nghĩa 2. Tầm quan trọng của chuẩn mã nguồn 1.Chuẩn mã nguồn là gì? 5. Phương pháp áp dụng chuẩn mã nguồn 4. Một số chuẩn mã nguồn thông dụng 6. Công cụ hỗ trợ chuẩn mã nguồn
  • 49. 5. Phương pháp áp dụng chuẩn mã nguồn 1/6. Chọn một bộ chuẩn
  • 50. 5. Phương pháp áp dụng chuẩn mã nguồn 2/6. Lập checklist các luật muốn áp dụng
  • 51. 5. Phương pháp áp dụng chuẩn mã nguồn 3/6. Chuẩn bị mã nguồn
  • 52. 5. Phương pháp áp dụng chuẩn mã nguồn 4/6. Chọn một công cụ hỗ trợ chuẩn mã nguồn Personal License : $199 Personal License : $99 Personal License : $99
  • 53. 5. Phương pháp áp dụng chuẩn mã nguồn 5/6. Dùng tool chỉ định các luật trong checklist
  • 54. 5. Phương pháp áp dụng chuẩn mã nguồn 6/6. Dùng tool áp đặt các luật đã chọn lên mã nguồn
  • 55. Nội dung trình bày 3. Chuẩn hình thức và chuẩn ngữ nghĩa 2. Tầm quan trọng của chuẩn mã nguồn 1.Chuẩn mã nguồn là gì? 5. Phương pháp áp dụng chuẩn mã nguồn 4. Một số chuẩn mã nguồn thông dụng 6. Công cụ hỗ trợ chuẩn mã nguồn
  • 56. 6. Công cụ hỗ trợ chuẩn mã nguồn Demo