# 42: Hãy giữ cho thiết kế thật sạch sẽ

Bạn đã từng bao giờ nhìn vào một bản danh sách của người biên soạn về việc cảnh báo độ dài của một đoạn code không tốt và nghĩ rằng: “Mình thật sự nên làm gì đó cho việc này… Nhưng mà bây giờ mình lại không có thời gian?” Mặt khác, bạn đã bao giờ nhìn thấy một cảnh báo xuất hiện trong trình biên dịch và sẵn sàng sửa nó?

Khi tôi bắt đầu một project mới lại từ đầu, sẽ không có bất kì cảnh báo, cản trở, vấn đề nào xuất hiện. Nhưng với tư cách là một người phát triển code base, nếu không để ý, những cản trở, cảnh báo, và những vấn đề có thể sẽ xuất hiện và dễ mất kiểm soát. Khi mà có quá nhiều vấn đề cần giải quyết, thì để tìm được cảnh báo cần thiết trong hàng trăm cảnh báo khác nhau mà thậm chí mình không quan tâm là một điều thực sự khó khăn với chúng ta.

Để làm cho những cảnh báo hữu dụng trở lại, tôi đã thử một chính sách “không khoan nhượng” cho các cảnh báo trong thiết kế. Kể cả cảnh báo đó không quá nghiêm trọng, tôi vẫn thực hiện cách làm đó. Nếu cảnh báo đó không quan trọng, nhưng có sức ảnh hưởng thì tôi sẽ sửa nó. Khi người biên soạn cảnh báo về khả năng bị phản đối, tôi sẽ khắc phục nguyên nhân, thậm chí tôi biết rằng vấn đề sẽ chẳng bao giờ xuất hiện trong sản phẩm cả. Nếu như tài liệu đã được nhúng (Javadoc hoặc Similar) đề cập đến các thông số đã bị xóa hoặc đổi tên, thì tôi sẽ xóa bỏ những tài liệu đó.

Nếu như có thứ gì đó tôi không thật sự quan tâm và nó cũng không quan trọng lắm với mình, tôi sẽ yêu cầu team của mình thay đổi chính sách cảnh báo của chúng tôi. Ví dụ, đưa ra tài liệu về các thông số và đưa giá trị của hệ thống trở lại, trong nhiều trường hợp, không làm tăng thêm bất cứ giá trị nào cả. Vì vậy nó không thể là cảnh báo nếu nó đang khiếm khuyết. Hoặc là nâng cấp lên một phiên bản mới của ngôn ngữ lập trình có thể sẽ làm cảnh báo được đưa ra một cách tốt hơn. Ví dụ như khi Java 5 giới thiệu các chủng loại, tất cả loại code đã cũ không ghi rõ các loại thông số sẽ bị cảnh báo. Đây là một phương thức cảnh báo mà tôi không hề muốn đối diện. Một loạt các cảnh báo không phù hợp với thực tế sẽ không giúp được bất cứ ai.

Bằng cách hãy chắc chắn rằng thiết kế luôn được sạch sẽ, tôi sẽ không phải quyết định rằng một cảnh báo là không thích hợp mỗi lúc gặp phải nó. Phớt lờ đi mọi chuyện là một công việc cần phải suy nghĩ nhiều, và tôi cần thoát khỏi tất cả những công việc không cần thiết đó. Một thiết kế sạch sẽ cũng giúp cho những người đảm nhận công việc của tôi làm việc một cách dễ dàng hơn. Nếu tôi để mặc những cảnh báo, người khác sẽ phải vất vả để biết cái gì thích hợp và cái gì không. Hoặc nhiều khả năng, họ sẽ phớt lờ tất cả cảnh báo, kể cả những cái quan trọng.

Các cảnh báo từ thiết kế của bạn thực sự rất hữu ích, bạn chỉ cần đừng quan tâm đến những thứ không cần thiết để chú ý đến chúng. Đừng chờ đợi một lần đại trùng tu. Khi một thứ gì đó mà bạn không muốn thấy xuất hiện, hãy đối phó với nó lập tức. Hoặc hãy sửa lại từ nguồn gốc của các cảnh báo, chặn các cảnh báo, sửa lại cách cảnh báo từ công cụ của bạn. Đảm bảo thiết kế được sạch sẽ không chỉ là giữ nó không bị ràng buộc bởi các lỗi biên dịch hay lỗi kiểm tra, các cảnh báo cũng rất quan trọng và các phần code quyết định cũng thế.