Đặt tên cho một do do X nếu cần phương thức


23

Cách tốt để đặt tên cho một phương thức kiểm tra xem X có cần phải thực hiện không và X có cần thiết không?

Ví dụ: làm thế nào để đặt tên cho một phương thức cập nhật danh sách người dùng nếu người dùng mới đã đăng nhập? UpdateListIfNeededdường như quá dài, trong khi đơn giản UpdateListngụ ý một hoạt động có thể tốn kém và không cần thiết được thực hiện mỗi lần. EnsureListUpdatedlà một biến thể là tốt.

C # có một bool TryXXX(args, out result)mẫu (ví dụ int.TryParse(str, out num)) để kiểm tra xem X có khả thi hay không và thực hiện nó, nhưng đó là khác biệt tinh tế.


1
Chỉ cần một điểm khuyến nghị, các phương pháp như thế này, trong khi có ý định tốt, nên được tạo ra một cách thận trọng. Trên đường đi, họ có xu hướng bị tiêu vào mã không liên quan dưới chiêu bài "chỉ trong trường hợp" hoặc "thêm một cuộc gọi đến nó trong X () đã sửa một lỗi, nhưng tôi không chắc tại sao". Nếu bạn có kỷ luật chỉ gọi RefreshUserList()trong LoginUser()LogoutUser()không, trong khi nói GetUser()(trong đó danh sách nên được cập nhật), thì bằng mọi cách có thể áp dụng lời khuyên dưới đây.
Kevin McCormick

Câu trả lời:


25

Tôi có xu hướng sử dụng Ensure. Nó mang ý nghĩa của việc đảm bảo rằng một cái gì đó được quan tâm, tuy nhiên điều đó cần phải được thực hiện. Nếu nó đã ổn, chỉ cần kiểm tra và chúng ta đã hoàn thành. Nếu không, làm điều đó. Dù bằng cách nào, chỉ cần đảm bảo rằng nó được thực hiện .


13

Sở thích của tôi là UpdateList. Nếu không có gì cần phải làm, vì vậy hãy là nó. Dù sao thì chi phí phải luôn được giảm thiểu, vì vậy nếu UpdateListlàm nhiều hơn mức cần thiết thì sẽ không có gì đó trong quá trình thực hiện.

Về cơ bản đó là động từ cho bạn biết phương thức nên làm. CalculateXnên luôn luôn tính toán lại X. GetYnên luôn trả về Y, nhưng chỉ thực hiện công việc truy xuất nó nếu cần thiết. Tương tự như vậy, UpdateZyêu cầu cập nhật Z giả sử nó được thực hiện theo cách hiệu quả nhất có thể.


2

Gọi tôi là "Có thể"

Đồng chọn từ đoạn trích Haskell tôi đã xem, thử

UpdateListMaybe();

2
Tôi cho rằng nếu tôi hiểu Haskell tốt hơn, điều này có thể có ý nghĩa hơn. Hệ quả: Nếu điều này được sử dụng trong một ngôn ngữ khác ngoài Haskell, nó sẽ chỉ được hiểu bởi những người biết Haskell.
Robert Harvey

2
Sáu năm sau, tôi là một lập trình viên khác, có kiến ​​thức hơn một chút về những thứ của Haskell. Tôi không còn xác nhận câu trả lời này nữa, haha. Tôi đoán ý tưởng của tôi lúc đó là sử dụng từ "có thể" để biểu thị rằng hàm xử lý một số loại tùy chọn. Thỉnh thoảng tôi vẫn làm điều đó (ví dụ: Tùy chọn [A] => B được gọi là mayToB)
Mark Canlas
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.