Vì vậy, nhìn xung quanh sớm hơn tôi nhận thấy một số ý kiến về các phương pháp dài là thực hành xấu.
Tôi không chắc chắn rằng tôi luôn đồng ý rằng các phương pháp dài là xấu (và muốn ý kiến từ người khác).
Ví dụ, tôi có một số khung nhìn Django xử lý một chút các đối tượng trước khi gửi chúng tới khung nhìn, một phương thức dài là 350 dòng mã. Tôi có mã được viết để nó xử lý các tham số - sắp xếp / lọc bộ truy vấn, sau đó từng chút một xử lý trên các đối tượng mà truy vấn của tôi đã trả về.
Vì vậy, việc xử lý chủ yếu là tập hợp có điều kiện, có các quy tắc đủ phức tạp, nó không thể dễ dàng thực hiện trong cơ sở dữ liệu, vì vậy tôi có một số biến được khai báo bên ngoài vòng lặp chính sau đó bị thay đổi trong vòng lặp.
variable_1 = 0
variable_2 = 0
for object in queryset :
if object.condition_condition_a and variable_2 > 0 :
variable 1+= 1
.....
...
.
more conditions to alter the variables
return queryset, and context
Vì vậy, theo lý thuyết tôi nên đưa ra tất cả các mã thành các phương thức nhỏ hơn, để tôi có phương thức xem là tối đa một trang dài.
Tuy nhiên, trước đây tôi đã làm việc trên nhiều cơ sở mã khác nhau, đôi khi tôi thấy nó làm cho mã ít đọc hơn, khi bạn cần liên tục chuyển từ phương thức này sang phương pháp tiếp theo để tìm ra tất cả các phần của nó, trong khi vẫn giữ phương thức ngoài cùng trong đầu bạn.
Tôi thấy rằng có một phương thức dài được định dạng tốt, bạn có thể thấy logic dễ dàng hơn, vì nó không bị ẩn đi trong các phương thức bên trong.
Tôi có thể đưa mã vào các phương thức nhỏ hơn, nhưng thường có một vòng lặp bên trong được sử dụng cho hai hoặc ba điều, vì vậy nó sẽ dẫn đến mã phức tạp hơn hoặc các phương thức không làm một việc nào ngoài hai hoặc ba (thay thế Tôi có thể lặp lại các vòng lặp bên trong cho mỗi nhiệm vụ, nhưng sau đó sẽ có một hiệu suất thành công).
Vì vậy, có một trường hợp phương pháp dài không phải lúc nào cũng xấu? Luôn luôn có một trường hợp cho các phương pháp viết, khi chúng sẽ chỉ được sử dụng ở một nơi?
CẬP NHẬT: Có vẻ như tôi đã hỏi câu hỏi này hơn một năm trước.
Vì vậy, tôi đã cấu trúc lại mã sau phản hồi (hỗn hợp) ở đây, chia nó thành các phương thức. Đây là một ứng dụng Django lấy ra các bộ đối tượng phức tạp từ cơ sở dữ liệu, do đó, đối số thử nghiệm đã bị loại bỏ (có lẽ phải mất hầu hết thời gian trong năm để tạo các đối tượng có liên quan cho các trường hợp thử nghiệm. môi trường làm việc trước khi ai đó phàn nàn). Sửa lỗi trong phần mã đó bây giờ dễ dàng hơn một chút, nhưng không ồ ạt như vậy.
trước :
#comment 1
bit of (uncomplicated) code 1a
bit of code 2a
#comment 2
bit of code 2a
bit of code 2b
bit of code 2c
#comment 3
bit of code 3
hiện nay:
method_call_1
method_call_2
method_call_3
def method_1
bit of (uncomplicated) code 1a
bit of code 2a
def method_2
bit of code 2a
bit of code 2b
bit of code 2c
def method_3
bit of code 3