2012-03-12 36 views
7

Tôi có một phương pháp để kéo dữ liệu từ một cơ sở dữ liệu, và tôi muốn nó có được điều này:Đặt tên các phương pháp phức tạp

Giới hạn của Năm mục, mục loại là bản tin, Nhu cầu chủ động (PublishDate < DateTime. bây giờ)

Vì vậy, tôi nghĩ đến việc đặt tên cho nó GetFiveActiveNewslettersByCreatedDate()

Điều này có vẻ một chút thời gian để tôi. Tôi nhìn vào trang web để có một cách tốt để đặt tên những thứ như thế này, bạn sẽ xử lý nó như thế nào?

+3

Không có gì sai với tên đó, mỗi lần. Ngoài ra, bạn có thể có một phương thức có số lượng tối đa để trả về dưới dạng tham số. –

+3

Mã hóa cứng thành 5 là một thực tế không tốt. Tôi muốn đề nghị bạn chữ ký sau: 'GetActiveNewsletters (kích thước int32)' – Oybek

+1

Tiếp tục sử dụng 'ByCreatedDate' là thừa, vì' Active' đã mang ý nghĩa của biến vị ngữ thời gian. Nếu bạn sử dụng 'ByCreatedDate', nó ngụ ý rằng bạn đang chọn với một vị từ bổ sung. – Oybek

Trả lời

4

Để tránh việc đặt tên cụ thể này, tôi sẽ nghĩ đến cách tạo phương thức chung chung. Một cái gì đó như:

GetNewsLetters(int amount, bool onlyActive, SortOrder orderBy) 
12

Làm thế nào về một cái gì đó như thế này thay thế?

public IEnumerable<Newsletter> GetActiveNewsletters(int maxRecords = 5) 
{ 
    // ... 
} 

Top 5 vẫn là mặc định nhưng không quá cụ thể nữa.

+4

Tôi khuyên bạn nên chống lại các tham số mặc định công cộng vì chúng được biên dịch vào hội đồng gọi điện, điều này có thể dẫn đến lỗi tinh vi nếu assembly được cập nhật mà không biên dịch lại và triển khai lại tất cả người gọi. –

+0

@MichaelStum: Tốt. Tôi đoán nó phụ thuộc vào tình hình. Đối với nhiều/hầu hết các ứng dụng này có lẽ không phải là một vấn đề vì nó sẽ là một cái gì đó giống như một API công cộng. –

1

tôi sẽ thêm phương pháp parametrized, như

GerEntries(T typeofEntity, DateTime date, int maxNumber)

Và phương pháp tài liệu naturaly với ý kiến ​​

5

Tôi muốn giới thiệu đổi tên nó thành: GetNewsletters(int recordCount=5) Số lượng các bản tin sẽ là một tham số cho phương thức .

Phần còn lại có thể được giả định và mô tả trong ///Summary.

+1

+1 để đề cập đến '/// Tóm tắt' – Oybek

2

Đặt tên cho nó để hiển nhiên cho bất kỳ nhà phát triển nào phương thức thực hiện. Mã tự nhận xét là vua. Nếu tên phương thức của bạn quá dài, có thể bạn đang làm quá nhiều thứ khác nhau bên trong nó và sẽ là một ứng cử viên để tái cấu trúc.

Đối với ví dụ cụ thể của bạn, tôi không gặp vấn đề với tên bạn đã cung cấp.

8

Lý do tôi sẽ tránh nướng "năm" vào tên, cá nhân, là những gì nó có thể có nghĩa là xuống dòng.

Ví dụ: nếu sau này, có một số yêu cầu cho 10 bản tin trong các trường hợp nhất định thay vì 5? Vâng, bạn sẽ tạo phương thức bổ sung GetTenActiveNewslettersByCreatedDate(). Và bây giờ, bạn có một 'mẫu thiết kế' mà các nhà phát triển tiếp theo sẽ làm theo khi 20, 50, 100 bản tin là cần thiết. Đây là một thiết kế sẽ bị thối, và bạn có thể ngăn chặn nó ngay bây giờ bằng cách tham số hóa năm.

Tất nhiên, đây có thể là YAGNI/tổng quát đầu cơ. Nếu 5 thực sự là một loại ma thuật, cứng nhanh, sẽ không bao giờ thay đổi quy tắc, sau đó bạn có thể thận trọng nướng nó. Tôi chỉ thấy rằng tôi đã hối hận khi làm và nhìn thấy những thứ như vậy đến nay, thường xuyên hơn không.

Các vấn đề liên quan