1. Phương pháp của Class là Ứng viên cho Refactoring
này không có nghĩa là phương pháp sẽ tự động được refactored. Có những trường hợp hợp pháp mà một phương pháp được thiết kế tốt có thể dài 100 hoặc thậm chí 200 dòng. Hãy xem xét một phương pháp thực hiện một chức năng toán học cao hơn trong đó sử dụng mảng lớn như bảng tra cứu để xử lý tốc độ cho các trường hợp phổ biến. Các mảng này hoàn toàn nằm bên trong phần thân của phương thức, có thể kéo dài nhiều dòng mã, nhưng có thể không thực sự thêm tất cả những gì vào sự phức tạp của các phương thức.
Tuy nhiên những trường hợp này là hiếm, và phần lớn thời gian bạn có thể nói phương pháp kéo dài 100 dòng cần được chia nhỏ để phù hợp với thiết kế tốt cho nhiều lý do đã đề cập ở đây (dễ đọc, testability, tái sử dụng , v.v.) Hiểu và lưu ý "trường hợp góc" khi độ dài này thực sự hợp lý, và không nhảy ngay vào các phép tuyệt đối của "bất cứ lúc nào một thứ gì đó là X dòng bạn dài phải do Y" gần như chắc chắn sẽ phản ánh tốt hơn cho bạn.
2. The Class chính nó là một Candidate cho Refactoring
Theo ghi nhận của others, không có tuyệt đối khi nói đến cách lớn một lớp nên về dòng mã. Tuy nhiên, các Single Responsibility Principle nói rằng một lớp học nên làm một điều tốt và một điều duy nhất. Đó là một giả định hợp lý rằng lớp này đang làm nhiều thứ, chỉ dựa trên chiều dài của nó, và rằng thiết kế sẽ được hưởng lợi từ việc chia nhỏ nó trong một số lớp nhỏ hơn. Tuy nhiên, điều này không phải là đảm bảo. Một ngàn dòng không phải là vô lý dài, và có thể được đánh giá cao trong một số trường hợp. Chiều dài của các phương thức hầu như luôn là mối quan tâm lớn hơn chiều dài (theo dòng mã) của lớp.
3. Các kết luận về nội dung của lớp
Trong khi tôi nghi ngờ có thể có một lỗi đánh máy trong mô tả của OP của vấn đề: phương pháp 1-n có 100 dòng và n + 1 (xem xét nếu n là một số nguyên dương lớn hơn 1 --- bạn kết thúc với số âm 100 phương thức đường). Bạn có thể bắt đầu lý do về lớp học nếu bạn có thể tính toán nhanh về số lượng từng loại phương pháp.
Ví dụ, nếu 2 * a + b = 5 (nơi một là # 100 phương pháp dòng và b là # 200 phương pháp dòng), sau đó bạn biết rằng toàn bộ lớp là bao gồm không có gì ngoài những phương pháp này, bởi vì tổng số dòng trong chúng sẽ = 1000. Trong trường hợp đó, bạn biết lớp không có hàm tạo, trường hoặc khởi tạo. Biết được điều này, nó tuân theo mọi phương thức phải là static
. Sau đó, bạn có một lớp chỉ tồn tại để cung cấp một số phương thức tĩnh dài hơn: âm thanh như một lớp tiện ích/trợ giúp cho tôi.
Bạn cũng biết trò chuyện: nếu 2 * a + b!= 5, lớp phải có ít nhất một trường, khối khởi tạo hoặc khối khởi tạo.
"phương pháp cũng được phép có 100-200 dòng mã" - er, không. –
Đối với tôi, các phương pháp dài hơn 40 dòng chắc chắn không ổn, nhưng ít nhất phải có lý do chính đáng. – MRalwasser
Phản hồi tuyệt vời từ cộng đồng java. Tái cấu trúc lại là câu trả lời. Cảm ơn mọi người. – gekrish