Bài viết sẽ hướng dẫn các bạn học lập trình java cách viết mã lệnh tối ưu


Giới thiệu mã lệnh Java

Bây giờ bạn đã biết khá nhiều về cú pháp của Java, nhưng đó không phải là lập trình thực sự chuyên nghiệp. Vậy điều gì tạo nên một chương trình Java “tốt”?
Có lẽ số lượng câu trả lời cho câu hỏi này cũng nhiều như số các lập trình viên Java chuyên nghiệp. Nhưng tôi có một số đề xuất mà tôi tin rằng hầu hết các lập trình viên Java chuyên nghiệp sẽ đồng ý cải tiến chất lượng của mã lệnh Java mà họ xử lý hàng ngày. Với chủ tâm bộc lộ hết, tôi phải nói rằng tôi nghiêng về ủng hộ các phương pháp lanh lẹn (agile) như Lập trình đỉnh cao (Extreme Programming – XP), do đó nhiều quan điểm của tôi về mã lệnh “tốt” nói chung là đã được cộng đồng phát triển theo phương pháp lanh lẹn và đặc biệt là XP công bố. Tôi nghĩ hầu hết các lập trình viên Java chuyên nghiệp giàu kinh nghiệm sẽ đồng ý với những điểm mà tôi sẽ trình bày trong phần này.

Hãy giữ cho các lớp nhỏ gọn

Chúng ta xây dựng lớp Adult đơn giản trong tài liệu này. Thậm chí sau khi chúng ta đã chuyển phương thức main() sang lớp khác, Adult cũng còn hơn 100 dòng mã lệnh. Lớp này có tới hơn hai mươi phương thức, và nó thực sự không làm được gì nhiều nếu so sánh với nhiều lớp và bạn có thể đã thấy (hay tạo ra) trong hoạt động nghề nghiệp. Đây là một lớp nhỏ. Không có gì bất thường khi bạn thấy có những lớp có từ 50 đến 100 phương thức. Điều gì khiến cho bạn nghĩ rằng ít hơn là tệ hơn ? Chẳng có gì cả. Điều quan trọng về các phương thức là bạn có những gì bạn cần. Nếu bạn cần vài phương thức trợ giúp, về bản chất thực hiện cùng một việc nhưng nhận các tham số khác nhau (như phương thức addMoney() chẳng hạn), thì đó là một lựa chọn hay. Hãy đảm bảo là chỉ hạn chế trong danh sách các phương thức bạn cần và đừng thêm nữa.
Thông thường, một lớp có quá nhiều phương thức sẽ có một vài phương thức không thuộc danh sách này vì rằng đối tượng khổng lồ thì cũng làm quá nhiều thứ. Trong cuốn Tái cấu trúc (Refactoring, xem Các tài nguyên), Martin Fowler gọi điều này là có mùi mã phương thức ngoại lai (Foreign Method code smell). Nếu bạn có một đối tượng với 100 phương thức, bạn nên suy nghĩ kỹ về việc liệu đối tượng này có phải thực sự là nhiều đối tượng hay không. Trong trường học các lớp đông thường gây phiền toái. Điều này cũng xảy ra đối với mã lệnh Java.

Hãy giữ cho các phương thức nhỏ gọn

Các phương thức nhỏ gọn cũng nên được ưu tiên hơn giống như các lớp nhỏ gọn với lý do tương tự.
Một trong những lời phàn nàn của các lập trình viên hướng đối tượng giàu kinh nghiệm đối với ngôn ngữ Java là nó cung cấp một đống hướng đối tượng nhưng không dạy họ cách thực hiện nó sao cho tốt. Nói cách khác, Java mang lại cho họ đủ rắc rối, dù ít nhất cũng không nhiều như ngôn ngữ C++. Nơi thường thấy điều này chính là trong một lớp với phương thức main() dài dằng dặc, hoặc chỉ một phương thức có tên là doIt(). Nếu chỉ vì bạn có thể nhồi tất cả mã lệnh của mình vào chỉ một phương thức trong một lớp thì điều đó không có nghĩa là bạn nên làm thế. Ngôn ngữ Java có nhiều gia vị cú pháp hơn nhiều ngôn ngữ hướng đối tượng khác nên cũng cần dài dòng đôi chút, nhưng không nên quá đà.
Hãy ngẫm nghĩ chốc lát về những phương thức cực kỳ dài ấy. Phải cuộn đến 10 trang màn hình đầy mã lệnh để luận ra cái gì đang xảy ra khiến cho thật khó khăn để hiểu cái gì đang xảy ra. Phương thức ấy làm gì? Bạn sẽ cần cả một cốc cà phê bự và nghiên cứu vài giờ để hiểu ra. Phương thức nhỏ, thậm chí là tý hon nữa là một bó lệnh dễ tiêu hóa. Hiệu suất chạy thi hành không phải là lý do để viết các phương thức nhỏ gọn. Khả năng dễ đọc hiểu mới là phần thưởng thực sự của nó. Điều này khiến cho mã lệnh của bạn dễ dàng bảo trì hơn và dễ thay đổi hơn khi bạn muốn thêm các đặc tính mới.
Hãy hạn chế sao cho mỗi phương thức thực hiện chỉ một việc.

0 nhận xét:

Đăng nhận xét

 
Top