Thứ Hai, 12 tháng 8, 2013

Tại sao nói static method không phải là khái niệm thuần túy object oriented ?



Bởi vì bạn không cần tạo ra một instance class để sử dụng static method. Thêm nữa là static method không làm việc với một số khái niệm đặc trưng của OOP. Bạn không thể định nghĩa static method trong abstract class hay interface. Bạn cũng không thể override một static method. Thực sự thì static method là procedure programming style.

Static method có phải là bad practice hay không ? Nếu bạn sử dụng đúng thì không hề. Bad practice là những cách lập trình khó hiểu, khó sử dụng, dễ gây ra các duplicate code, khó maintain, reuse, vi phạm các nguyên tắc thừa kế. Bản thân static method rất dễ khiến lập trình viên sử dụng nó bừa bãi trong chương trình. Một ví dụ về bad practice là bạn thực hiện gọi static method qua một instace class. Hoàn toàn được nhưng khó hiểu về lý do sử dụng như vậy. Sau đây là một số chỉ dẫn để bạn cân nhắc xem liệu có nên sử dụng một static method hay không

Thứ nhất, method đó có cần sử dụng các instace variable hay không ? Bạn biết đấy không thể dùng instance variable trong static method

Thứ hai, nếu một số instance method sử dụng chung một đoạn code thì bạn nên đặt đoạn code đó trong static method

Thứ ba, method đó có cần override hay không ? Bạn biết là static method không thể override

Thường thì static method được sử dụng để viết util class của bạn. Bạn có thể xem Math hoặc commons.lang, tất cả các method đều là static

Nói chung, static method có hai hạn chế là: Vi phạm các nguyên tắc OOP và có nhiều trở ngại khi test các static method bằng các test tool.

Không có nhận xét nào:

Đăng nhận xét