Không bao giờ sử dụng một từ dài khi một từ nhỏ sẽ làm.
Tôi không nghĩ rằng luận điểm của bạn về "độ dài của tên phương thức tỷ lệ thuận với độ dài của phương thức" thực sự giữ nước.
Lấy ví dụ bạn đưa ra: "getNumberOfSkinCareElTHERItemsWithinTransaction". Nghe có vẻ như tôi chỉ làm một việc: nó đếm số lượng vật phẩm trong một giao dịch thuộc một danh mục nhất định. Tất nhiên tôi không thể phán đoán mà không xem mã thực tế cho phương thức, nhưng đó có vẻ là một phương pháp tốt đối với tôi.
Mặt khác, tôi đã thấy rất nhiều phương thức với các tên rất ngắn gọn và súc tích, có tác dụng với nhiều công việc, như "processSale" hay "doStuff" phổ biến.
Tôi nghĩ rằng sẽ rất khó để đưa ra một quy tắc khó và nhanh về độ dài tên phương thức, nhưng mục tiêu phải là: đủ dài để truyền đạt những gì hàm làm, đủ ngắn để có thể đọc được. Trong ví dụ này, tôi nghĩ rằng "getSkinCareCount" có lẽ đã đủ. Câu hỏi là những gì bạn cần phân biệt. Nếu bạn có một chức năng đếm các mặt hàng đủ điều kiện chăm sóc da trong các giao dịch và một chức năng khác tính các mặt hàng đủ điều kiện chăm sóc da trong một thứ khác, thì "bên trong giao dịch" sẽ tăng thêm giá trị. Nhưng nếu nó không có nghĩa gì để nói về những mặt hàng như vậy bên ngoài một giao dịch, thì sẽ không có điểm nào làm lộn xộn tên với thông tin thừa thãi như vậy.
Hai, tôi nghĩ thật phi thực tế khi cho rằng một tên có độ dài có thể quản lý được sẽ cho bạn biết chính xác chức năng này làm gì trong tất cả các trường hợp ngoại trừ các trường hợp tầm thường nhất. Một mục tiêu thực tế là tạo ra một cái tên mang đến cho người đọc một manh mối, và điều đó có thể được ghi nhớ sau này. Giống như, nếu tôi đang cố gắng tìm mã tính toán lượng phản vật chất chúng ta cần tiêu thụ để đạt tốc độ cong vênh, nếu tôi nhìn vào tên hàm và thấy "calibrateTransporter", "firePhasers" và "calcAntimatterBurn", thì rõ ràng rằng hai cái đầu không phải nó nhưng cái thứ ba có thể là. Nếu tôi kiểm tra và thấy rằng đó thực sự là người tôi đang tìm kiếm, sẽ dễ dàng nhớ rằng khi tôi trở lại vào ngày mai để giải quyết vấn đề này thêm một lần nữa. Thế là đủ tốt rồi.
Ba, tên dài tương tự nhau khó hiểu hơn tên ngắn. Nếu tôi có hai chức năng gọi là "calcSalesmanPay" và "calcGeekPay", tôi có thể đoán được đó là một cái nhìn nhanh chóng. Nhưng nếu chúng được gọi là "notifyMonthlyCheckAmountForSalesmanForExportToAccountingSystemAndReconcestion" và "notifyMonthlyCheckAmountForProgrammersForExportToAccountingSystemAndReconcestion" thì tôi phải tìm tên nào. Các thông tin bổ sung trong tên có lẽ là phản tác dụng trong những trường hợp như vậy. Nó biến suy nghĩ nửa giây thành suy nghĩ 30 giây.