Java SE 8 đi kèm với một cơ chế mới cho những ngày, giới thiệu LocalDate
, LocalTime
và LocalDateTime
các lớp học để biểu diễn khoảnh khắc của thời gian. Để thao tác khoảnh khắc như vậy, một tập hợp các phương pháp được đưa ra: LocalDate.plusDays(...)
, LocalDate.minusDays(...)
và vân vân.
Tôi đã luôn nghĩ rằng thực tiễn tốt là đặt tên cho các phương thức sau khi các động từ mô tả mục đích của chúng, vì thực tế, các phương thức được thực thi, một cái gì đó sẽ thực hiện một hành động. Chỉ cần đề cập đến, nếu bạn xem xét các lớp học như StringBuilder
, ví dụ, tên phương pháp là append
, insert
, delete
...
Đây là lý do tại sao với tôi nó không phải âm thanh đặt tên một phương pháp plusDays
thay vì sumDays
, minusDays
thay vì subtractDays
. Chỉ là tôi thấy nó rất phiền phức? Bạn nghĩ sao?
Lý do duy nhất tôi có thể nghĩ đến là ngày tháng là những đối tượng bất biến, vì vậy bằng cách gọi plusDays
bạn không thêm ngày vào đối tượng ban đầu mà tạo ra một đối tượng mới với các thuộc tính mới, nhưng điều đó rất tinh tế.
sqrt
chỉ là một từ mà các lập trình viên dự kiến sẽ nhận ra và biết. Nhân tiện, từ tiếng Anh là "căn bậc hai". Nhưng đặt tên mọi thứ theo những gì tự nhiên trong tiếng Anh là không tốt. Lấy từ "bất hợp pháp", ví dụ, một từ tiếng Anh hoàn toàn tốt. Tuy nhiên, nếu ai đó đặt tên cho phương pháp của họ, hãy nói rằng isIllicit
tôi nghĩ rằng tôi sẽ muốn xé nhãn cầu mỗi khi tôi nhìn vào phương thức này. Nó chỉ có vẻ khủng khiếp và phải có một cách tốt hơn để thể hiện ý tưởng.
sum
Nghe có vẻ sai trong bối cảnh này. Tôi thích .net AddDays
.
Math.addExact(1, 2)
bởi vì bạn nói "thêm 1 và 2". tomorrow.plusDays(2)
bởi vì bạn nói "ngày mai cộng 2 ngày". Nếu addExact
là một thành viên của Integer
bằng cách nào đó nó sẽ có được 1.plusExact(2)
.
plusDays
sẽ trả lại một ngày mới x số ngày trong tương lai, trong khi addDays
tôi có thể mong đợi sẽ làm thay đổi đối tượng ban đầu. Mặc dù đó chỉ là tôi, tôi không quen thuộc lắm với Java.
sqrt
lấy căn bậc hai. Đặt tên cho phương thức nàytakeSqrt
có vẻ có ý nghĩa theo quy tắc của bạn, nhưng đặt tên cho phương thức này sẽ không làm cho phương thức dễ đọc hơn và cũng không làm cho nó rõ ràng hơn.