Trong nhóm của tôi, chúng tôi làm việc chặt chẽ với một vài kiến trúc sư phần mềm. Họ phê duyệt tất cả các quyết định thiết kế của các dự án của chúng tôi, thực hiện một số đánh giá mã, v.v.
Các dự án của chúng tôi chủ yếu bao gồm chức năng phụ trợ được triển khai trong PHP bằng cách sử dụng khung công tác Symfony 2. Vì vậy, về mặt cú pháp, mã, quy ước đặt tên và cấu trúc dự án trông gần giống với giao diện của Java (Symfony 2 khuyến khích cấu trúc như vậy). Tôi đang đề cập đến điều này bởi vì các quy ước dành riêng cho Java cũng được áp dụng trong trường hợp của chúng tôi (nếu có thể).
Gần đây, họ đề xuất một cái gì đó mà tôi thấy rất lạ: tất cả các phương thức nên có liên từ trong tên của họ getEntityOrNull
, setValueOrException
v.v.
Một quy ước đặt tên như vậy cảm thấy rất sai đối với tôi, nhưng tôi không thể đưa ra bất kỳ lập luận cụ thể hoặc các bài báo / trang trực tuyến nào thách thức điều này.
Điều duy nhất tôi nghĩ ra là:
- thông tin đó phải được trình bày trong các chú thích của phương thức, như
@return
hoặc@throws
- việc sử dụng các liên từ ("và", "hoặc" v.v.) trong các tên phương thức thường cho thấy Nguyên tắc Trách nhiệm duy nhất không được tôn trọng đúng mức
Một số lập luận cụ thể khác chống lại quy ước đặt tên này là gì?
the use of conjunctions ("and", "or" etc.) in method names usually suggest that the Single Responsibility Principle is not properly respected
Đây không phải là trường hợp cho các ví dụ bạn đã liệt kê, trong đó kết hợp được sử dụng để làm rõ cơ chế được sử dụng để xử lý các lỗi, không cho biết nó có thể làm điều này hay cách khác. Ngay cả hàm được xác định hẹp nhất cũng có thể có các điều kiện lỗi hợp pháp, ví dụ: xuất hiện một ngăn xếp trống.
Int32.TryParse
và Int32.Parse
- cả hai phân tích một chuỗi thành một số nguyên, nhưng cái trước trả về Boolean cho thấy thành công và cái sau ném vào thất bại.
Try...
, ...OrNull
, ...OrDefault
. @EricLippert Đó không phải là quy ước duy nhất trong .net. Xem xét Single
so với SingleOrDefault
, rất gần với OrNull
OP đề xuất.