Lập trình không có comment

Nếu việc gieo rắc vào code của bạn với nhiều comment là tốt, thì việc có vô số commenttrong code của bạn sẽ là rất tuyệt vời, đúng không nào? Nhưng điều đó hoàn toàn không đúng. Vượt quá giới hạn là một cách để những comment tốt trở nên tồi:

Chúng ta phải viết comment trong code sao cho hiệu quả nhỉ?Chúng ta phải viết comment trong code sao cho hiệu quả nhỉ?

Tôi luôn luôn bắt gặp những comment từ những lập trình viên mà dường như họ không hiểu rằng đoạn code đó đã thực sự nói với chúng ta nó làm việc như thế nào rồi; chúng ta cần comment để nói về tại sao nó lại làm việc như vậy. Comment trong code cũng thường bị hiểu sai và lạm dụng một cách tràn lan đến nỗi đôi khi bạn cũng tự hỏi rằng liệu có đáng để sử dụng comment chút nào không nhỉ? Nhưng hãy cẩn thận với mong ước đó của bạn. Đây là một đoạn code mà không có bất kỳ chút comment nào:

Bạn có bất kỳ ý nghĩ nào về điều mà đoạn code đó làm không? Nó thì hoàn toàn dễ đọc, nhưng nó đang làm cái quái gì thế?

Hãy bổ sung thêm một dòng comment nhé.

Đó có phải là điều mà tôi đang tìm kiếm, đúng không nào? Có một chút dễ chịu hơn, và đã tiến tới điểm giữa của con đường thỏa hiệp giữa hai thái cực là không có comment chút nào cả và có một comment tràng giang đại hải sau mỗi 2 dòng code?

Không chính xác là vậy. Thay vì bổ sung thêm một comment, thì tôi thích sửa nó lại thế này hơn:

Tôi đã không bổ sung thêm bất kỳ một dòng comment nào, và bây giờ thì đoạn code khó hiểu đó đã hoàn toàn rõ như ban ngày.

Trong khi các comment vốn đã hoặc là tốt hoặc là tồi, chúng thường xuyên được sử dụng như một vật chống đỡ. Bạn nên luôn luôn viết code như thể là các dòng comment không tồn tại vậy. Điều này ép buộc bạn phải viết code của mình sao cho đơn giản nhất, rõ ràng nhất, và hầu như phần code đó tự bản thân nó đã nói lên chức năng của nó làm gì rồi.

Khi bạn đã rewritten, refactored, và rearchitected phần code của mình hàng tá lần để khiến cho nó trở nên dễ dàng cho các lập trình viên đồng nghiệp của bạn có thể đọc và hiểu được — khi bạn không thể tưởng tượng ra bất kỳ cách nào để code của bạn có thể trở nên rõ ràng và dễ hiểu hơn — thì, và chỉ khi đó, bạn mới cảm thấy vạn bất đắc dĩ bổ sung thêm một comment để giải thích điều mà đoạn code đó làm.

Như Steve đã chỉ ra rằng, đây là một điểm khác biệt chính giữa lập trình viên junior and senior:

Ngày xưa, việc phải nhìn quá nhiều code một lúc thường vượt quá điểm ngưỡng chịu đựng về sự phức tạp của tôi, và khi tôi phải làm việc cùng nó thì tôi thường cố gắng rewrite nó hoặc ít ra thì tôi viết comment rất nhiều. Tuy nhiên, ngày nay tôi chỉ làm việc say mê qua nó mà không than phiền (nhiều). Khi tôi đã có một mục tiêu xác định trong tâm trí và một mẩu code phức tạp để viết, tôi dành thời gian của mình để làm nó hơn là cứ ngồi kể câu chuyện của mình về nó [bằng các comment].

Các lập trình viên junior dựa vào các comment để nói lên câu chuyện khi mà họ nên dựa vào code để nói lên câu chuyện đó. Các comment mang tính tường thuật; quan trọng theo cách của riêng chúng, nhưng không có cách nào có thể thay thế cốt truyện, đặc tính và các thiết lập được cả.

Có lẽ đó là một bí mật hơi bẩn thỉu của các comment trong code: để viết các comment tốt thì bạn phải là một tay viết tốt. Các comment không phải là code dành cho trình biên dịch, chúng là những từ để truyền đạt các ý tưởng với những người khác. Trong khi tôi (hầu như) rất yêu quý những đồng nghiệp lập trình viên của mình, nhưng tôi không thể nói rằng việc truyền đạt hiệu quả với người khác là thế mạnh của chúng ta. Tôi đã từng nhìn thấy những bức email dài tới 3 đoạn từ những lập trình viên trong nhóm của mình mà khiến tôi cảm thấy não mình tan chảy. Liệu đây có phải là những người mà chúng ta đang tin tưởng sẽ viết ra những dòng comment rõ ràng và dễ hiểu trong code của mình? Tôi nghĩ rằng có thể một số người trong chúng ta phải trở nên gắn chặt với điểm mạnh của mình hơn — đó là, viết cho trình biên dịch theo một cách rõ ràng nhất mà chúng ta có thể làm, và chỉ sử dụng comment khi đó là phương án cuối cùng.

Việc viết những comment tốt và có ý nghĩa thường rất khó. Nó cũng khó như là nghệ thuật viết code vậy; thậm chí còn khó hơn là đằng khác. Như Sammy Larbi đã nói trong bàiCommon Excuses Used To Comment Code rằng: nếu bạn cảm thấy code của bạn quá phức tạp để có thể hiểu mà không có comment đi kèm, thì code của bạn có thể rất tồi. Hãy viết lại nó cho tới khi không cần chút comment nào nữa. Nếu bạn đã hoàn thành xong nỗ lực đó, nhưng bạn vẫn cảm thấy các comment là cần thiết, thì hãy bổ sung thêm các comment. Nhưng thật cẩn trọng.

ITZone via Vinacode

Chia sẻ bài viết ngay