Ngộ ra comment code phải chăng đều là thừa thãi

Comment code như thế nào là bị coi là thừa thãi

Mình đọc được câu này và mình cảm thấy rất là hay “Comment do not make up your bad code” –  Comment không khiến những dòng code xấu xí trở nên “đẹp” hơn, đẹp ở đây là dễ đọc và dễ nhìn. Có rất nhiều thể loại comment khác nhau, mỗi comment cũng được coi là một trường phái, người comment bằng //, người thì bằng */ /* còn có người comment chinh bằng tên biến, tên hàm, tên class… Đó mới chính là comment của các cao nhân, còn comment khác cũng chỉ được coi là rác thải mà thôi, vì đơn giản, chúng đều thừa thãi và thực sự không cần thiết.

Comment code là như thế nào để không bị coi là rác thải

Mình lấy ví dụ như sau:

private String HTTP_DATE_REGEXP = 
"[SMTWF][a-z]{0-2}\\,\\s[0-9]{2}\\s[JPMASOND][a-z]{2}\\s[0-9]{4}\\s"
+"[0-9]{2}\\:[0-9]{2}\\:[0-9]{2}\\sGMT";
//Example: "Tue, 02 Apr 2003 20:18:49 GMT"

Comment như trên thì hoàn toàn cần thiết, nếu nó được tính là rác thải thì mình xin đi làm công nhân dọn rác :)). Nó giúp chúng ta hiểu đươc chuỗi regular expresstion trên sẽ chấp nhận chuỗi như thế nào, nếu không có nó thì bạn sẽ mất kha khá thời gian để hiểu được ý nghĩa của nó, hoặc bạn nghĩ ra cách khác để có thể biểu thị ý nghĩa bằng tên biến thay cho comment thì đó là điều khó có thể thực hiện được.

Một số ví dụ về comment thừa thãi

Các comment cung cấp thông tin của hàm, cách nó sử dụng hay làm những điều tương tự đều có vẻ như là thừa thãi.

// change layout music player
public void changeLayout() {
    
}
// cách khác viết lại như thế này
public void changeLayoutMusicPlayer() {

}

Comment như vậy rõ ràng rất hữu ích vì nó đã cung cấp thông tin chức năng của hàm, nhưng chúng hoàn toàn không cần thiết, thay vì viết comment bạn có thể viết lại tên hàm để có thể nhìn thấy rõ ràng mục đích của hàm. Mình tin chắc tên hàm chuẩn sẽ được đánh giá cao hơn là tên hàm + comment rồi.

public class Song {
 // id of song
 private int id;
 // name of song
 private String name;
 // resource of song
 private int resource;
 // id of song
 private String author;
 // constructor 
 public Song(int id, String name, int resource, String author) {
 this.id = id;
 this.name = name;
 this.resource = resource;
 this.author = author;
 }
 // get name of song
 public String getName() {
 
 
 }
}

Một ví dụ khác mà mình cảm thấy đau đầu nữa, chẳng hiểu sao ở đâu ra lại có những comment kiểu như thế này, mọi thứ dường như quá rõ ràng để comment, kiểu như nói “ban đêm trời sẽ tối” vậy. Đây gọi là những comment làm nhiễu, khi nhìn vào những dòng code xấu xí này bạn sẽ tốn thêm thời gian để đọc comment, và hoàn toàn chúng không cung cấp thông tin nào cả. Bạn nên bỏ chúng để code được gọi là “clean code”.

// set name, author of the current music to layout when music is playing
if (music.isPlaying()) {
 setNameToLayout(CurrentPlaying.getName());
}

Một câu trong sách nữa mà mình nên trích ra cho các bạn “Don’t use comment when you can use a function or a variable”. Đừng bao giờ dùng comment nếu bạn có thể biểu diễn chúng bằng hàm hoặc biến. Bạn xem ví dụ trên đi, một chuỗi các hoạt động rất dễ hiểu bởi tên hàm được đặt chuẩn và nêu được chức năng của nó. Nhưng hơn hết, còn một vấn đề nữa với những câu comment này, đó chính là nội dung của nó. Bạn thử suy nghĩ xem nội dung câu của nó và nhiệm vụ của đoạn code có giống nhau không ?. Một bên thì nói rằng đặt cả tên bài hát và tác giả vào layout còn  trong trong code chỉ có tên bài hát, nên nếu nhìn comment có thể bạn sẽ phải phân tích một lúc trước khi đưa ra quyết định xem code có sai không.

Có một vài lí do để giải thích điều này: có thể lúc đó ông này, comment trước và code sau nhưng quên thêm phần author còn thiếu vào code, nhưng rõ ràng nếu không được hiển thị nó sẽ được fix ngay, vậy chỉ có trường hợp là trước kia nó đầy đủ và sau nhiều lần thay đổi code và comment giữ nguyên khiến nội dung bị hiểu nhầm.

Tóm lại, comment không phải là thừa thãi, quan trọng là chúng ta có tận dụng được sức mạnh của code hay không, nếu sử dụng đúng lúc thì code chính là comment, chính là thứ vũ khí lợi hại của coder, đặt sai chỗ comment chính là rác thải, là kẻ địch cần được loại bỏ.

Series Navigation<< Hàm bạn đã viết có “đúng chuẩn” Clean code ?

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *