Một bình luận(comment) là một ghi chú dễ đọc của lập trình viên được chèn trực tiếp vào code của chương trình. Nó sẽ bị bỏ qua bởi trình biên dịch và chỉ dành cho lập trình viên sử dụng.
Trong C ++ có hai kiểu Comment khác nhau, cả hai đều phục vụ cùng một mục đích: để giúp các lập trình viên lưu giữ lại một vài thông tin nào đó để giúp đọc code dễ hiểu hơn.
Nội dung chính
1. Comment đơn dòng
Biểu tượng // là bắt đầu một Comment trong một dòng của C ++, thông báo cho trình biên dịch bỏ qua mọi thứ từ biểu tượng // đến cuối dòng. Ví dụ:
std::cout << "Hello world!"; // Everything from here to the end of the line is ignored
Thông thường, comment một dòng được sử dụng để nhận xét nhanh về một dòng code đó.
std::cout << "Hello world!\n"; // std::cout lives in the iostream library
std::cout << "It is very nice to meet you!\n"; // these comments make the code hard to read
std::cout << "Yeah!\n"; // especially when lines are different lengths
Có các comment ở bên phải của một dòng có thể làm cho cả code và comment khó đọc, đặc biệt nếu dòng đó dài. Nếu các dòng khá ngắn, các comment có thể được căn chỉnh (thường là dùng tab), như vậy:
std::cout << "Hello world!\n"; // std::cout lives in the iostream library
std::cout << "It is very nice to meet you!\n"; // this is much easier to read
std::cout << "Yeah!\n";
Tuy nhiên, nếu các dòng comment dài thì khi đặt comment ở bên phải có thể làm cho các dòng của bạn thực sự dài. Trong trường hợp đó, các comment một dòng thường được đặt ở phía trên của dòng code mà ta đang muốn comment:
// std::cout lives in the iostream library
std::cout << "Hello world!\n";
// this is much easier to read
std::cout << "It is very nice to meet you!\n";
// don't you think so?
std::cout << "Yeah!\n";
Chú ý:
Các comment trên chỉ là ví dụ về việc comment đoạn code. Bởi vì các đoạn chương trình có một ý nghĩa cụ thể nào đó. Thay vào đó, chúng ta đặt comment vào đó để chứng minh các khái niệm hoặc là ý nghĩa cụ thể một cách, ngắn gọn súc tích cho một dòng code nào đó.
Nếu bạn muốn biên dịch một đoạn code ở trên thì bạn cần phải biến nó thành một chương trình đầy đủ để nó biên dịch. Thông thường, chương trình đó sẽ trông giống như thế này:
#include <iostream>
int main()
{
// Viết các dòng code trên vào đây hoặc những dòng code nào đó tuỳ ý bạn!
return 0;
}
2. Comment nhiều dòng
Cặp /* và */ để biểu thị comment trên nhiều dòng kiểu C. Tất cả mọi thứ ở giữa các biểu tượng đó sẽ được bỏ qua khi biên dịch.
/* This is a multi-line comment.
This line will be ignored.
So will this one. */
Vì mọi thứ giữa các biểu tượng đều bị bỏ qua, đôi khi bạn sẽ thấy các lập trình viên làm đẹp cho các comment đa dòng của họ như sau:
/* This is a multi-line comment.
* the matching asterisks to the left
* can make this easier to read
*/
Comment kiểu nhiều dòng không thể được lồng nhau. Do đó, sau đây sẽ có kết quả bất ngờ:
/* This is a multi-line /* comment */ this is not inside the comment */
// The above comment ends at the first */, not the second */
Khi trình biên dịch cố gắng biên dịch cái này, nó sẽ bỏ qua mọi thứ từ / * đến * /. Vì đây những dòng comment không phải ở bên trong * / thì không được coi là một phần của comment nhiều dòng, trình biên dịch sẽ cố gắng biên dịch nó. Điều đó chắc chắn sẽ dẫn đến một lỗi biên dịch.
Đây là một nơi mà việc sử dụng cú pháp tô màu ký tự có thể thực sự hữu ích, vì comment có cách tô màu khác với các dòng bình thường nên chung ta sẽ dễ đang thấy rõ những gì là comment or không phải.
Cảnh báo
Đừng sử dụng các comments nhiều dòng bên trong các comments nhiều dòng khác. Nên gộp các comment một dòng trong một comment nhiều dòng là được.
3. Sử dụng comment đúng mục đích
Thông thường, comment nên được sử dụng khi nào?. Đối với một thư viện, chương trình hoặc hàm nhất định, các comment được sử dụng để mô tả những gì thư viện, chương trình hoặc hàm đó làm gì. Chúng thường được đặt ở đầu file hoặc thư viện hoặc ngay trước hàm. Ví dụ:
// This program calculates the student's final grade based on his test and homework scores.
// This function uses newton's method to approximate the root of a given equation.
// The following lines generate a random item based on rarity, level, and a weight factor.
Tất cả các comment này cung cấp cho người đọc biết về những gì thư viện, chương trình hoặc hàm đang cố gắng thực hiện mà không cần phải xem or đọc code. Người dùng (có thể là người khác hoặc bạn nếu bạn đang cố gắng sử dụng lại code mà bạn đã viết trước đó) có thể cho biết ngay code đó có liên quan đến những gì họ đang cố gắng thực hiện hay không. Điều này đặc biệt quan trọng khi làm việc trong một nhóm, nơi mà không phải ai cũng sẽ quen thuộc với tất cả các code của nhau.
Thứ hai, trong một thư viện, chương trình hoặc hàm được mô tả ở trên, các comment có thể được sử dụng để mô tả cách sử dụng code đó để thực hiện gì đó.
/* To calculate the final grade, we sum all the weighted midterm and homework scores
and then divide by the number of scores to assign a percentage. This percentage is
used to calculate a letter grade. */
// To generate a random item, we're going to do the following:
// 1) Put all of the items of the desired rarity on a list
// 2) Calculate a probability for each item based on level and weight factor
// 3) Choose a random number
// 4) Figure out which item that random number corresponds to
// 5) Return the appropriate item
Những comment này cung cấp cho người dùng ý tưởng về cách mà code sẽ hoàn thành công việc của mình mà không cần phải hiểu từng dòng code riêng lẻ làm gì.
Ở cấp độ câu lệnh, các comment nên được sử dụng để mô tả lý do tại sao code đang làm gì đó. Viết code mà có comment thì code đó không được tốt cho mấy. Nếu bạn từng viết code phức tạp đến mức cần một comment để giải thích những gì một câu lệnh đang làm, có lẽ bạn cần phải viết lại câu lệnh của bạn cho tới khi không cần comment nó.
Dưới đây là một số ví dụ về comment xấu và comment tốt.
Comment xấu:
// Set sight range to 0
sight = 0;
Lý do: Chúng ta đã có thể tự thấy rằng biến trên đang được đặt thành 0 mà không cần nhìn vào comment.
Comment tốt:
// The player just drank a potion of blindness and can not see anything
sight = 0;
Lý do: Bây giờ chúng tôi biết lý do tại sao biến trên của người chơi đang được đặt thành 0
Comment xấu:
// Calculate the cost of the items
cost = quantity * 2 * storePrice;
Lý do: Chúng ta có thể thấy rằng đây là một tính toán chi phí, nhưng tại sao số lượng nhân với 2?
Comment tốt:
// We decided to use a linked list instead of an array because
// arrays do insertion too slowly.
// We're going to use Newton's method to find the root of a number because
// there is no deterministic way to solve these equations.
Cuối cùng, các comment nên được viết theo cách dễ hiểu đối với một người không biết gì về code này.
Mẹo:
Comment code của bạn một cách tự do, và viết comment của bạn như thể nói chuyện với một người không biết code đó làm gì. Đừng giả định rằng rằng bạn sẽ nhớ tại sao bạn đưa ra code này.
4. Commenting code
Chuyển đổi một hoặc nhiều dòng code thành một comment được gọi là comment code của bạn. Điều này giúp bạn thuận tiện để (tạm thời) loại trừ các phần code mà bạn chưa cần tới khi chương trình biên dịch.
Để comment một dòng code, chỉ cần sử dụng // comment để biến một dòng code thành comment tạm thời:
Chưa comment:
std::cout << 1;
Comment:
// std::cout << 1;
Để comment vài dòng code liên tiếp, hãy sử dụng // trên nhiều dòng code hoặc / * * / để biến khối code thành comment tạm thời.
Chưa comment:
std::cout << 1;
std::cout << 2;
std::cout << 3;
Comment:
// std::cout << 1;
// std::cout << 2;
// std::cout << 3;
Hoặc
/*
std::cout << 1;
std::cout << 2;
std::cout << 3;
*/
Có một vài lý do bạn muốn làm điều này:
1) Bạn đã làm việc với một đoạn code nhưng nó chưa cần để biên dịch và bạn cần chạy chương trình ngay bây giờ. Trình biên dịch có thể bị lỗi nếu bạn cho phép chạy đoạn code đó. Comment code để biên dịch sẽ cho phép chương trình của bạn có thể chạy tốt. Khi bạn đã sẵn sàng, bạn có thể bỏ comment và tiếp tục làm việc với nó.
2) Bạn đã viết code mới để biên dịch nhưng không hoạt động chính xác và bạn không có thời gian để sửa nó cho ngay bây giờ. Comment code bị hỏng sẽ đảm bảo code bị hỏng không thực thi và gây ra sự cố cho đến khi bạn có thể sửa code đó.
3) Để tìm nguồn gốc của một lỗi. Nếu một chương trình không tạo ra kết quả mong muốn, đôi khi có thể hữu ích để vô hiệu hóa các phần của code của bạn để xem liệu bạn có thể cô lập những gì mà khiến cho nó không hoạt động chính xác không. Nếu bạn comment một hoặc nhiều dòng code và chương trình của bạn bắt đầu hoạt động như mong đợi (hoặc dừng sự cố), theo cách này thì bất cứ điều gì bạn comment cuối cùng là một phần của vấn đề. Sau đó, bạn có thể điều tra lý do tại sao những dòng code đó gây ra vấn đề.
4) Bạn muốn thay thế một đoạn code bằng một đoạn code khác. Thay vì chỉ xóa code gốc, bạn có thể comment nó và để nó ở đó để tham khảo cho đến khi bạn chắc chắn rằng code mới của bạn hoạt động đúng. Khi bạn chắc chắn code mới của mình đang hoạt động, bạn có thể xóa code comment cũ. Nếu bạn code mới của bạn không hoạt động, bạn luôn có thể xóa code mới và bỏ comment của code cũ để trở lại những gì bạn đã có trước đó.
Commnet code là một điều phổ biến phải làm trong khi phát triển, vì vậy nhiều IDE cung cấp hỗ trợ để comment một phần code và tô sáng nó lên. Cách bạn sử dụng chức năng này có thể thay đổi theo IDE.
Dành cho người dùng Visual Studio
Bạn có thể comment hoặc bỏ comment bằng cách lựa chọn qua Edit menu > Advanced > Comment Selection (or Uncomment Selection).
Đối với Code :: Blocks
Bạn có thể comment hoặc bỏ comment bằng cách lựa chọn qua Edit menu > Comment (or Uncomment, or Toggle comment, or any of the other comment tools).
Chú ý
Nếu bạn luôn sử dụng các comment một dòng cho các comment bình thường của mình, thì bạn có thể sử dụng các comment nhiều dòng để comment của bạn gọn hơn.