Comment Code - Tại sao chúng ta nên Comment Code? (p2)

Tiếp theo Comment Code - Tại sao chúng ta nên Comment Code? (p1)


**Một số người thường có thói quen viết code mà không comment gì cả.** Họ lý giải rằng: Code của họ viết để mình họ đọc thôi. Nhưng trong công việc, nhất là những công việc đòi hỏi nhiều người cùng làm thì việc viết code kèm theo chú thích giúp chương trình dễ đọc, khả năng bảo trì khi gặp lỗi tiện lợi hơn rất nhiều (nhất là những đoạn code được đọc lại sau khoảng một thời gian dài).

Và đa phần project share trên mạng hiện nay thiếu trầm trọng comment, dẫn tới người xem chẳng hiểu các bạn code như thế nào, dòng code đó để làm gì . Khi các bạn code, với mạch suy nghĩ của bạn thì bạn thấy đơn giản không cần thiết phải comment, nhưng với những người hoàn toàn không biết bạn sẽ làm gì và đang làm gì thì thật là tốn thời gian để hiểu được code của bạn . Mình đọc sách hoặc xem một vài tut thấy một lớp có nội dung khoảng 300 dòng code thì người ta comment thêm tới 300 dòng, như thế dù dài dòng nhưng mà mình thấy hợp lí lắm vì đó là theo hướng giáo dục …Với những dự án lớn, phức tạp, thì cách tổ chức code là 1 trong những vấn đề đặc biệt quan trọng, vì mục đích dễ dàng update sau này, dễ để mọi người nắm bắt code . . . . . Dưới đây là 1 đoạn code trong source mình down từ trang MSDN về, đây là trang dạy mọi ngôn ngữ và công nghệ của Microsoft.

 /// <summary> 
        /// This timer is started when the player clicks  
        /// two icons that don't match, 
        /// so it counts three quarters of a second  
        /// and then turns itself off and hides both icons.
        /// </summary> 
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timer1_Tick(object sender, EventArgs e)
        {
            // Stop the timer.
            timer1.Stop();

            // Hide both icons.
            firstClicked.ForeColor = firstClicked.BackColor;
            secondClicked.ForeColor = secondClicked.BackColor;

            // Reset firstClicked and secondClicked  
            // so the next time a label is 
            // clicked, the program knows it's the first click.
            firstClicked = null;
            secondClicked = null;
        }

        /// <summary> 
        /// Check every icon to see if it is matched, by  
        /// comparing its foreground color to its background color.  
        /// If all of the icons are matched, the player wins. 
        /// </summary> 
        private void CheckForWinner()
        {
            // Go through all of the labels in the TableLayoutPanel,  
            // checking each one to see if its icon is matched.
            foreach (Control control in tableLayoutPanel1.Controls)
            {
                Label iconLabel = control as Label;

                if (iconLabel != null)
                {
                    if (iconLabel.ForeColor == iconLabel.BackColor)
                        return;
                }
            }

            // If the loop didn’t return, it didn't find 
            // any unmatched icons. 
            // That means the user won. Show a message and close the form.
            MessageBox.Show("You matched all the icons!", "Congratulations!");
            Close();
        }
  • Nó cho phép một lập trình viên có nhìn vào một đoạn code và biết tại sao nó tồn tại.
  • Nó làm giảm các tình huống mà một phần của code bị coi là không rõ ràng dẫn đến đoạn code đó sửa đổi và do đó code nguồn không thể hoạt động.
  • Viết comment để nắm bắt ý nghĩa của đoạn code đó cũng giống như viết các xét nghiệm y học để chứng minh rằng phần mềm của bạn có thể là những gì được mong đợi.

Robert C. Martin tác giả cuốn Clean Code tuyên bố rằng (nói lại theo cách hiểu của mình): “Comment chính là lời xin lỗi dành cho các đoạn code tệ”. Có gì sai với việc giải thích một thuật toán phức tạp hoặc một mảng dài và phức tạp của 1 đoạn code với một comment mô tả?

Vì vậy, sau khi viết một đoạn code phức tạp được viết bằng một ngôn ngữ lập trình, tại sao không thêm một lời nhận xét ngắn gọn mô tả và giải thích hoạt động của các đoạn code đơn giản, thân thiện và dễ hiểu?

Các comment cung cấp cho người sử dụng và các lập trình viên khác rất nhiều lợi ích, đóng góp có ý nghĩa đối với tính linh động của code giữa các nền tảng khác nhau, dễ đọc và dễ tiếp cận.
Bằng cách này, thay vì các lập trình viên (bao gồm cả bản thân mình) phải đọc toàn bộ các dòng thuật toán để tìm ra những gì nó làm, họ có thể chỉ cần đọc các comment mô tả bạn đã viết. Không ai muốn giải thích từng dòng code trong chương trình của bạn, và chẳng ai muốn đọc một cuốn sách để hiểu code của bạn.

“Bất kỳ kẻ ngốc nào cũng có thể viết mã để một máy tính có thể hiểu được. Các lập trình viên giỏi viết mã để cho những người khác có thể hiểu được“. ~ Martin Fowler


Phần tiếp theo sẽ là Bad Comment & Good Comment. :smiley:

3 Likes

Like cái hình đầu tiên.


Cái này chỉ áp dụng cho class lớn, quan trọng và chỉ comment như vậy trong file .h, còn nếu định nghĩa trong file .cpp hoặc file .c thì như vậy là quá nhiều.

Vậy thì hợp lý, bởi vì nếu code để dạy học thì cần comment nhiều. Nhưng nếu là code chạy thực tế, ta không nên comment những cái không cần thiết.

:+1:


Phần này chỉ mới giới thiệu thôi đúng không @DuyNguyen, anh chờ phần tiếp theo :smiley:

Dạ cái này em nói theo hướng giáo dục cần comment nhiều để dễ hiểu có nhiều cũng không sao, source của MSDN thì 1 dòng code là 1 dòng comment để người đọc thực sự hiểu được tại sao dòng code đó được viết ra chứ thực tế 1 hàm nên chỉ có 1 comment và phải comment logic, dễ hiểu chứ bao nhiêu dòng code bấy nhiêu dòng comment thì có mà chết :frowning:

Vô nội dung luôn rồi anh ơi, thì cơ bản có 3 ý chính là tại sao nên comment, bad comment và good comment, cuối cùng là làm thế nào để comment có hiệu quả :smiley:

1 Like

Đạt muốn coi cái bad comment và good comment, Đạt quan tâm cái này nhiều :smile:

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?