Nó phụ thuộc. Thực sự có 2 loại phương thức tĩnh:
- Các phương thức tĩnh vì chúng CÓ THỂ
- Các phương thức tĩnh vì chúng PHẢI
Trong một cơ sở mã kích thước nhỏ đến trung bình, bạn thực sự có thể xử lý hai phương pháp này thay thế cho nhau.
Nếu bạn có một phương thức nằm trong danh mục đầu tiên (có thể là tĩnh) và bạn cần thay đổi nó để truy cập trạng thái lớp, thì tương đối phải tìm hiểu xem có thể biến phương thức tĩnh thành phương thức thể hiện hay không.
Tuy nhiên, trong một cơ sở mã lớn, số lượng lớn các trang web cuộc gọi có thể khiến việc tìm kiếm để xem liệu có thể chuyển đổi một phương thức tĩnh thành một phương thức không tĩnh quá tốn kém hay không. Nhiều lần mọi người sẽ thấy số lượng cuộc gọi và nói "ok ... Tốt hơn là tôi không nên thay đổi phương pháp này, mà thay vào đó hãy tạo một phương pháp mới thực hiện những gì tôi cần".
Điều đó có thể dẫn đến:
- Nhiều mã trùng lặp
- Sự bùng nổ về số lượng đối số phương thức
Cả hai điều đó đều tệ.
Vì vậy, lời khuyên của tôi là nếu bạn có cơ sở mã trên 200K LOC, tôi sẽ chỉ tạo các phương thức tĩnh nếu chúng là các phương thức phải tĩnh.
Việc tái cấu trúc từ non-static sang static tương đối dễ dàng (chỉ cần thêm một từ khóa), vì vậy nếu bạn muốn biến một can-be-static thành một static thực sự sau này (khi bạn cần chức năng của nó bên ngoài một phiên bản) thì bạn có thể. Tuy nhiên, việc tái cấu trúc ngược, biến một phương thức có thể là tĩnh thành một phương thức cá thể sẽ đắt hơn RẤT NHIỀU.
Với các cơ sở mã lớn, tốt hơn là bạn nên mắc lỗi ở khía cạnh dễ mở rộng, hơn là về độ thuần túy lý tưởng.
Vì vậy, đối với các dự án lớn, đừng làm cho mọi thứ trở nên tĩnh lặng, trừ khi bạn cần. Đối với các dự án nhỏ, chỉ cần làm những gì bạn thích nhất.