1. Trang chủ
  2. » Mẫu Slide

C coding convention

35 1,1K 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 35
Dung lượng 519,78 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

C++ (đọc là C cộng cộng hay xiplusplus, IPA: siː pləs pləs) là một loại ngôn ngữ lập trình. Đây là một dạng ngôn ngữ đa mẫu hình tự do có kiểu tĩnh và hỗ trợ lập trình thủ tục, dữ liệu trừu trượng, lập trình hướng đối tượng, và lập trình đa hình.

Trang 1

C++ Coding Convention

SVTH: Tiêu Mỹ Hồng – 51303297

Đoàn Thị Huyền Trang – 51303186

Khoa: Công Nghệ Thông Tin

Trang 2

C++ Coding Convention

I CHUẨN VIẾT CODE TRONG C++

1 Tổ chức chương trình

2 Chuẩn tài liệu

II CÁC LỖI THƯỜNG GẶP TRONG C++

III CÔNG CỤ KIỂM TRA TỰ ĐỘNG CODE CÓ VIẾT ĐÚNG

CHUẨN HAY KHÔNG

1 Giới thiệu về công cụ hỗ trợ kiểm tra chuẩn viết Code – Cppcheck –

trong C++

2 Mục đích sử dụng của Cppcheck

Trang 3

C++ Coding Convention

I.Chuẩn viết code trong C++

C++ (đọc là "C cộng cộng" hay "xi-plus-plus", IPA: /siː pləs pləs/) là một loại ngôn 

ngữ lập trình. Đây là một dạng ngôn ngữ đa mẫu hình tự do có kiểu tĩnh và hỗ  trợ lập trình thủ tục, dữ liệu trừu trượng, lập trình hướng đối tượng, và lập trình 

đa hình. 

Trang 4

C++ Coding Convention

I.Chuẩn viết code trong C++

1.Tổ chức chương trình

 Môđun hóa chương trình:

- Chương trình nên được tách thành nhiều môđun, mỗi môđun nên thực hiện một công việc và càng độc lập nhau càng tốt Điều này sẽ giúp dễ bảo dưỡng chương trình hơn.

- Khi chuyển thông tin cho chương trình con nên sử dụng các tham số để tạo tính độc lâp và dễ dàng kiểm soát giá trị của chúng khi chương trình thi hành

Trang 5

- Mỗi file header của lớp nên sử dụng các định hướng #ifndef, #define, và

#endif để đảm bảo mỗi file header chỉ được include một lần.

Trang 7

C++ Coding Convention

 Tên gọi

- Sử dụng các tên có nghĩa

- Đặt tên một cách nhất quán

- Tên của các project, form, và component sinh bởi môi trường lập trình.

- Tên biến và tên hàm thường phải là các từ hoặc cụm từ.

- Không được viết tắt trừ các từ viết thông dụng như HTML, khi đó coi từ viết tắt như từ thông thường ( tên sẽ có dạng convertToHtml thay vì

convertToHTML)

Trang 9

C++ Coding Convention

 Khoảng cách

- Nên đặt khoảng cách sau dấu phẩy hoặc dấu chấm phẩy.

- Xung quanh các toán tử.

VD:

Method(int a, int b)

x = a + b ;

for(int i = 0; i < n; i++)

Trang 10

temp = a[i]; a[i] = a[i + 1];

a[i] = a[i + 1]; a[i + 1] = temp;

a[i + 1] = temp; }

}

Trang 11

C++ Coding Convention

 Định dạng :

-  Lùi đầu dòng các đoạn code, mỗi mức dùng 3 hoặc 4 ký tự, tốt nhất là dùng tab.

- Mỗi dòng chỉ chứa nhiều nhất một lệnh và không dài quá 79 ký tự.

- Có thể căn thẳng hàng để nâng cao hightlight.

- Nên có các khoảng trắng giữa từ khoá và dấu ‘(‘, nhưng không nên có khoảng trắng giữa tên hàm và dấu ‘(‘ Nên có một khoảng trắng trước và sau mỗi toán tử số học hoặc logic, chẳng hạn +, <<, ||, <=,

- Chèn các dòng trắng khác giữa các đoạn khác nhau trong chương trình

Trang 12

C++ Coding Convention

 Thiết kế:

- Không để dữ liệu của lớp ở dạng public

- Hạn chế tối đa việc dùng biến toàn cục

- Nguyên tắc quyền ưu tien tối thiểu

- Không để dữ liệu trong lớp mà nó không thực sự thuộc về lớp đó

- Các hàm hoặc phương thức của lớp không nên tạo output trừ khi đó

là nhiệm vụ của phương thức đó.

- Mỗi phương thức/hàm chỉ chứa tối đa 30 dòng kể cả tính từ mở hàm tới kết thúc hàm.

Trang 13

C++ Coding Convention

CODE:

- Viết theo chuẩn OSI dù complier có bắt buộc hay không.

- Hạn chế #include ngoài chuẩn.

- Nên để int main() và return 0; thay vì void main()

- Khai báo using std:: ngay cả khi IDE không bắt buộc.

- Các hằng số không nên viết trực tiếp vào chương trình

Trang 14

C++ Coding Convention

- Luôn viết new và delete thành từng cặp.

- Khi khai báo con trỏ dấu con trỏ nên được đặt liền với tên nhắm tránh trường

hợp: char *p,q,r; //q,r không là con trỏ

- Nên sử dụng các dấu () khi muốn tránh các lỗi về độ ưu tiên toán tử

- Tách các biểu thức phức tạp thành các biểu thức đơn giản hơn

Trang 15

C++ Coding Convention

- Viết các lệnh dễ hiểu, không viết các lệnh “khôn ngoan”.

- Cẩn thận với dấu = và dấu == là 2 toán tử gây nhầm lẫn nhất trên C,

nhưng bạn có thể tránh gặp nó bằng thói quen viết r-value ( biểu thức bên phải phép gán) sang bên trái phép so sánh.

- Các idiom

Trang 16

II Các lỗi thường gặp trong C++

Các lỗi này thường xảy ra khi ta sơ sót, dẫn đến nếu thiếu các dấu mở hoặc đóng ngoặc, dấu phẩy

Trang 17

8 Array bounds missing ] Thiếu dấu đóng ngoặc ] khi truy xuất đến các

phần tử của mảng

9 Array must have at

least one element Khi khai báo mảng phải có ít nhất 1 phần tử Xảy ra khi khai báo mảng mà số phần tử tối đa

Kiểu dữ liệu của Bit field phải là số nguyên

14 Bit filed must contain

at least one bit

Kích thước của mỗi Bit field phải có ít nhất 1bit

15 Body already defined

for this function

Hàm đã được định nghĩa rồi Lỗi xảy ra khi ta viết phần thân của một hàm nào đó 2 lần

Trang 18

1 Cannot call ‘main’ from

within the program

Không thể gọi thực hiện hàm main() trong chương trình, vì đây là một hàm đặc biệt, tự động thực hiện

một lần trong mỗi lần chạy chương trình

18 Cannot cast from ‘type 1’

to ‘type 2’

Không thể ép kiểu dữ liệu từ kiểu 1 sang kiểu 2

19 Cannot convert ‘type 1’

to ‘type 2’

Không thể chuyển đổi dữ liệu từ kiểu 1 sang kiểu 2

20 Cannot initialize ‘type 1’

22 Case outside of switch Lệnh CASE nằm bên ngoài SWITCH

23 Case statement missing : Lệnh CASE thiếu dấu 2 chấm (:)

24 Character constant must

be one or two characters

long

Kích thước của hằng ký tự không đúng Xảy ra khi

ta ghi một chuỗi dài các ký tự vào giữa cặp dấu

nháy đơn ‘’

Trang 19

Không tìm thấy đối số thích hợp

28 Could not find file

‘filename’

Không tìm thấy tập tin

29 Declaration is not

allowed here

Vị trí khai báo sai Không được khai báo tại đây

30 Declaration missing ; Khai báo thiếu dấu chấm phẩy (;)

31 Declaration syntax error Khai báo không đúng cú pháp

32 Declaration terminated

incorrectly

Khai báo sai (gần giống lỗi trên)

33 Declaration was expected Thiếu khai báo

Trang 20

36 Division by zero Chia cho 0, lỗi này xảy ra khi mẫu số của một

phân số có giá trị bằng 0

37 Do statement must

have while

Lệnh Do phải đi với While Xảy ra khi thiếu

While trong câu lệnh Do

41 Duplicate case Lệnh CASE bị trùng, xảy ra khi ta viết 2 dòng

CASE khác nhau nhưng cùng một giá trị như

nhau

42 Expression expected Vị trí này phải là một biểu thức

43 Expression syntax Sai cú pháp khi xây dựng biểu thức

44 Extra parameter in call

to function

Gọi thực hiện hàm nhưng lại truyền dư tham số

45 File name too long Tên tập tin quá dài

Trang 21

46 For statement missing ( Thiếu dấu (, ), ; trong câu lệnh For

47 For statement missing )

48 For statement missing ;

49 ‘function’ cannot return

Hàm có tên ‘function’ phải được khai báo không có tham số, xảy ra khi phần khai báo (prototype) và phần thân hàm không giống nhau về số tham số

Trang 22

56 Function should return a

Tên ‘identifier’ không phải là thành phần của cấu

trúc, xảy ra khi ta viết tên thành phần sai

59 ‘identifier’ is not a

parameter

Tên ‘identifier’ không phải là 1 tham số

61 If statement missing ( Câu lệnh If thiếu mở hay đóng ngoặc

khác A F hay a f

64 Illegal octal digit Không phải là một hệ 8 hợp lệ

65 Illegal pointer Thực hiện phép trừ không hợp lệ trên con trỏ

Trang 23

66 Illegal use of floating

point

Dùng dấu chấm động không đúng, ví dụ sử dụng phép toán modulo % trên số thực chẳng hạn

67 Illegal use of pointer Dùng con trỏ không hợp lệ

68 Implicit conversion of

‘type 1’ to ‘type 2’ not

allow

Không cho phép ngầm chuyển từ kiểu 1 sang kiểu 2

69 Improper use of typedef

‘identifier’

Kiểu dữ liệu ‘identifier’ được sử dụng không đúng

70 Incompatible type

conversion

Không thể chuyển đổi kiểu dữ liệu

71 Incorrect number format Không phải là dữ liệu dạng số, thường xảy ra khi ta

gõ các ký tự khác 0 9 trong 1 dữ liệu kiểu số

72 Incorrect use of default Dùng DEFAULT không đúng

73 Invalid use of dot Dùng dấu chấm (.) không đúng vị trí

74 Lvalue required Vế trái của phép gán phải là 1 tên biến Lỗi xảy ra

khi ta gán giá trị cho 1 hằng

Trang 24

76 Misplaced break Dùng break ngoài vòng lặp hoặc ngoài

SWITCH

77 Misplaced continue Dùng continue ngoài vòng lặp

78 Misplaced decimal point Dấu chấm thập phân sai vị trí

79 Misplaced else Dùng else sai vị trí (thiếu if, )

80 ‘new’ and ‘delete’ not

supported

Không được phép dùng new và delete trong cấp

phát vùng nhớ động

81 No: following the ? Toán tử điều kiện thiếu dấu 2 chấm (:)

82 No file name ending Không có phần kết thúc tên tập tin

83 No file name given Không có tên tập tin

84 No type information Không tìm thấy thông tin gì về kiểu dữ liệu

85 Not an allowed type Kiểu dữ liệu này không cho phép dùng ở đây

86 Numeric constant too

large

Hằng số có giá trị quá lớn

Trang 25

88 sizeof may not be

applied to a bit field

Toán tử sizeof() không dùng cho kiểu bit field

89 sizeof may not be

92 Statement missing ; Thiếu dấu chấm phẩy (;), thông thường do thiếu

dấu ; tại dòng trên của dòng báo lỗi

93 Structure required on

left side of or *

Xảy ra khi truy xuất các thành phần của cấu trúc

không đúng cách

Trang 26

95 Switch statement missing ( Câu lệnh switch thiếu ngoặc Phần giá trị của

lệnh switch phải được đặt trong cặp dấu ngoặc

96 Switch statement missing )

97 The value for ‘identifier’ is

not within the range of an

Khai báo quá nhiều kiểu dữ liệu mới (ít gặp)

103 Too much global data

defined in file

Có quá nhiều biến toàn cục trong chương trình, gây tràn vùng nhớ dành riêng cho các biến này

Trang 27

104 Type mismatch in default

argurment value

Giá trị mặc định của tham số truyền cho chương

trình con bị sai kiểu

105 Type mismatch in default

value for parameter

Truyền tham số cho chương trình con ‘function’

bị sai kiểu ở tham số ‘number’

109 Type name expected Thiếu tên kiểu tại vị trí báo lỗi

110 Type ‘typename’ may not

be defined here

Kiểu dữ liệu ‘typename’ không thể định nghĩa ở

vị trí này được

Trang 28

112 Unable to execute

command ‘command’

Không thể thực hiện lệnh ‘command’

113 Unable to open include

file ‘filename’

Không thể mở được tập tin tiêu đề ‘filename’ thường xảy ra do ta viết tên tập tin tiêu đề sai, hoặc tập tin này không tồn tại trên đĩa

118 Unexpected end of file in

comment started on ‘line

number’

Thường xảy ra trong trường hợp thiếu dấu đóng

ngoặc } của hàm main()

119 Unexpected end of file in

conditional started on

‘line number’

Trang 29

120 Unknown language,

must be C or C++

Một cú pháp lạ, không phải là cú pháp của C

hay C++

121 User break Chương trình bị ngắt do người sử dụng

122 Value of type void is

Biến ‘identifier’ được khởi tạo nhiều lần

124 void & is not a valid

Trang 30

C++ Coding Convention

III Công cụ kiểm tra tự động code có viết đúng chuẩn hay không

1 Giới thiệu về công cụ hỗ trợ kiểm tra chuẩn viết Code – Cppcheck – trong C++

- Cppcheck là một công cụ phân tích mã tĩnh cho ngôn ngữ lập trình C và C++

Nó là một công cụ đa năng có thể kiểm tra mã không đúng tiêu chuẩn

- Cppcheck là phần mềm miễn phí theo GNU (General Public License)

- Cppcheck hỗ trợ một loạt các kiểm tra tĩnh mà có thể không bao gồm biên dịch Việc kiểm tra là kiểm tra phân tích tĩnh có thể được thực hiện ở mức mã nguồn Chương trình này hướng theo kiểm tra phân tích tĩnh nghiêm ngặt, chứ không phải phỏng đoán tự nhiên

Trang 31

C++ Coding Convention

2 Mục đích sử dụng của Cppcheck

Một trong những lợi ích cơ bản của công cụ phân tích Cppcheck là nó rất dễ dàng để sử dụng Nó rất tốt để giảng dạy và nghiên cứu các phương pháp phân tích tĩnh: ví dụ, bạn cài đặt Cppcheck trên một hệ thống Windows và có được một giao diện GUI cho phép bạn ngay lập tức bắt đầu kiểm tra các

project của bạn.

Trang 32

C++ Coding Convention

Chỉ cần chọn “Check directory” trong menu và chỉ định đường dẫn đến project của bạn Báo cáo phân tích project như sau:

Trang 33

C++ Coding Convention

- Nếu bạn bắt đầu sử dụng Cppcheck trên một mức độ sâu sắc hơn, bạn cũng cần tuỳ chỉnh một số cài đặt Ví dụ, bạn sẽ cần phải chỉ định đường dẫn đến thư viện của bên thứ ba, tích hợp Cppcheck với môi trường phát triển của bạn hoặc thiết lập kiểm tra ban đêm Nhưng trên thực tế bạn chỉ có thể chọn một thư mục và nhận được kết quả nghiêm trọng Nó đặc biệt như vậy, nếu bạn chỉ việc bắt đầu với phân tích tĩnh, trong trường hợp một khả năng như vậy là vô giá

- Khi phân tích, bạn có thể nghiên cứu các thông điệp đặc trưng Chúng được phân thành các loại sau đây: Errors, Warnings, Style Warnings, Portability Warnings,

Performance Warnings, Information Messages Bạn có thể dễ dàng mở và đóng các nhóm trên bằng cách nhấp vào nút đặc biệt trên thanh công cụ

Trang 34

C++ Coding Convention

- Hình bên dưới cho thấy làm thế nào để thiết lập chế độ xem tin nhắn để chỉ xem Style Warnings: nhóm tin nhắn “Style Warnings” là on, trong khi tất

cả các phần còn lại là off Các tập tin “cpuid_x86.c” chứa một số cảnh báo

về loại hình này, và điều đầu tiên được chọn trong đó đề cập đến dòng 214

Mô tả của đặc trưng được hiển thị ở cửa sổ bên dưới:

Trang 35

C++ Coding Convention Cảm ơn thầy và các bạn đã lắng nghe!!!

Thêm ví dụ phần lỗi

Ngày đăng: 11/03/2016, 22:17

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w