Quy ước đặt tên nào cho tệp C # có chứa nhiều lớp?


20

Trong các dự án C #, chúng tôi thường nhóm các lớp nhỏ và liên quan chặt chẽ vào cùng một .cstệp. Cách làm này giúp giảm ma sát khi xử lý vô số tệp chứa gần như không có mã thực tế. Tuy nhiên, có một thực tiễn được thiết lập để đặt tên cho tệp chứa nhiều lớp không?


13
thành thật mà nói tôi thích một tập tin một lớp ngay cả đối với các lớp rất nhỏ
Felice Pollano

Bạn có thể chọn đặt tên theo nhóm theo các lớp liên quan chặt chẽ này.
V4Vendetta

Có lẽ những lớp học đó quá nhỏ? Cá nhân tôi chỉ nhóm nhiều enum trong một tệp (đôi khi với cả lớp, đôi khi tất cả các enum với nhau, tùy thuộc vào ngữ cảnh).
Konrad Morawski

@Felice: nhìn vào MSpec :)
Bryan Boettcher

Câu trả lời:


18

Lời khuyên của tôi: tránh các tệp chứa nhiều lớp và tên tệp == các lớp ngay cả khi bạn có nghĩa là có quá nhiều tệp. Cố gắng sắp xếp chúng trong các thư mục. Trong trường hợp rất đặc biệt, bạn có thể có các lớp lồng nhau. Trong trường hợp này, có nghĩa là tách lớp chính và một lớp lồng vào các tệp khác nhau có một lớp một phần. Trong trường hợp này tôi sử dụng quy ước đặt tên sau đây.

MyEnumerable.cs
MyEnumerable.MyEnumerator.cs

Có lẽ bạn cũng có thể sử dụng tên tệp nhiều phần trong trường hợp của bạn.


4
Thêm một ý tưởng. Bạn có thể nhóm nhiều tệp .cs trong Visual Studio Project để tất cả chúng xuất hiện dưới cùng một nút trong cây (như tệp .Designer.cs). Điều này sẽ báo hiệu cho bạn rằng các lớp chặt chẽ với nhau.


4

Hãy xem xét rằng bằng cách đặt câu hỏi về cách đặt tên cho các tệp như vậy, bạn đã xác định được mùi mã gây khó khăn cho bạn và đây là vấn đề sẽ không biến mất dễ dàng.

Bất kể lý do là gì, bạn sẽ thấy khó chọn tên hợp lý khi bạn có nhiều hơn một lớp trong một tệp, bởi vì ngay cả khi các tệp có liên quan theo cách nào đó, sẽ luôn có sự cám dỗ để ném vào thứ gì đó không hoàn toàn phù hợp với tên nhóm mà bạn gán cho một nhóm các lớp.

Do đó, câu trả lời ngắn gọn là không có tiêu chuẩn được công nhận hoặc thiết lập để đặt tên cho các loại tệp này. Đề nghị của tôi sẽ là ngồi xuống với nhóm của bạn và tìm đến tổ chức mã của bạn và áp dụng một chút nỗ lực tái cấu trúc để dọn dẹp mọi thứ một chút.

Tuy nhiên, để bắt đầu mọi thứ dễ dàng hơn một chút, tôi hỏi xem các lớp bổ sung được lồng nhau hay độc lập. Nếu độc lập, thì các lớp này có thể dễ dàng tách ra thành các tệp riêng của chúng, với mỗi tệp được đặt tên cho lớp duy nhất chứa trong đó. Nếu được lồng nhau, thì các quyết định tiếp theo có thể cần được đưa ra về cách tổ chức các lớp như vậy, tuy nhiên các lớp lồng nhau có thể không cần phải loại bỏ ngay lập tức và do đó các tệp sẽ được đặt tên cho lớp ngoài cùng. Theo như lồng nhau, có rất nhiều tranh luận chống lại, và một vài lý lẽ hợp lý để lồng trong một số trường hợp, và lời khuyên của tôi là hỏi xem cách đặt tên hợp lý và tạo cấu trúc mã nguồn có tổ chức hơn có thể là cách tốt hơn để giải quyết vấn đề.

Tuy nhiên, trên thực tế, bạn sẽ thấy rằng vào cuối vòng đời của dự án, bạn sẽ ước các tệp của mình chỉ chứa một lớp duy nhất và một cấu trúc thư mục / không gian tên đẹp đi cùng với nó.

Chúc mừng


3

Tôi đã từng là tất cả vì có nhiều lớp trong một tệp, nhưng kể từ khi tôi bắt đầu làm việc như một lập trình viên (chứ không phải là một mình), tôi đã thấy rằng đó có thể là một cơn ác mộng bảo trì với nhiều lớp trong một tệp. Mặc dù, thừa nhận, Visual Studio có thể giúp rất nhiều bằng cách sử dụng F12 (đi đến định nghĩa).

Những gì tôi đã bắt đầu làm là sử dụng quy ước đặt tên như sau: namepace. Classname.cs Bằng cách đó tôi biết chính xác những gì trong mỗi tệp và nó cũng cung cấp một số loại bối cảnh chung của tệp. Nếu lớp sẽ ở trong không gian tên mặc định, thì tôi sẽ tiếp tục và chỉ sử dụng classname.cs (tương tự như Java).

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.