2012-08-05 24 views
9

Tôi đã nghe các lập trình viên khác nhau đề xuất không bao gồm từ "riêng tư" trong các khai báo, chữ ký phương thức, v.v. vì tư nhân là phạm vi mặc định khi không được chỉ định. Nó có thể làm cho mã sạch hơn nhưng tôi quan tâm đến ý kiến ​​của bạn là liệu bạn có sử dụng phạm vi "riêng tư" trên các biến, phương pháp, v.v. Các công cụ như CodeRush tạo mã cho bạn bao gồm từ "riêng tư" để tôi ' m tò mò nếu điều này là tốt hay xấu hay chỉ là vấn đề sở thích cá nhân.Khi "riêng tư" là phạm vi mặc định trong C# - liệu từ "riêng tư" có bị xóa khỏi chữ ký để có mã sạch hơn không?

Trả lời

16

Mã số dọn dẹp hơn rõ ràng theo ý định của nhà thiết kế. Sử dụng private thể hiện sự lựa chọn có chủ ý, không mở để tranh luận. Rơi vào mặc định sẽ mở ra các câu hỏi: điều này có chủ đích không, hoặc anh ta chỉ đơn giản là quên bao gồm một công cụ sửa đổi?

+1

Ngoại trừ riêng tư là mặc định (ngoại trừ các lớp không lồng nhau). Vì vậy, điều tốt nhất mà nhà thiết kế có thể làm, để làm cho mã an toàn hơn và dễ hiểu hơn, là giữ cho bề mặt công khai càng nhỏ càng tốt. Làm một điều gì đó riêng tư không đòi hỏi một quyết định có chủ ý. Làm điều gì đó không riêng tư. –

+0

@Kyralessa: Tôi đã đề cập đến nó là mặc định, và lập luận của tôi là, ít nhất về nguyên tắc, _everything_ mà bạn nên là _deliberate_, không chỉ đánh dấu một cái gì đó 'công khai'. –

+0

Bạn giả định rằng việc bỏ qua công cụ sửa đổi chỉ có thể là ngẫu nhiên. –

8

Tháo tin và hỏi các nhà phát triển đồng bào của bạn cho dù họ đang nhầm lẫn hay không

Cá nhân tôi cảm thấy, trong đó có cá nhân làm cho mã của bạn dễ đọc hơn. Tôi sẽ cung cấp cho tầm quan trọng hơn đối với "Độ khó" hơn "là sạch hơn"

+2

Thêm _readable_ code _is_ _cleaner_. Cleaner không nhất thiết phải ngắn hơn! –

0

Đó là vào trình biên dịch làm thế nào để giải thích các phương pháp hay các thành viên lớp khác mà không tin, bảo vệ hoặc của cộng đồng. Nó có thể được thay đổi trong phiên bản nex. Vì vậy, không làm điều đó.

+4

Đó sẽ là một thay đổi _breaking_ ... –

+1

Thực ra, trong các thủ tục VB6 được công khai theo mặc định. Điều đó đã thay đổi trong VB.Net. Đúng, phá vỡ thay đổi. Bất cứ ai đã không khai báo phạm vi phương pháp của họ đã có rất nhiều việc phải làm khi di chuyển mã VB6 sang VB.Net. – DOK

3

Trong một cơ sở dữ liệu mà nội dung công khai là rò rỉ thông tin (ví dụ: nó sẽ không còn bị làm xáo trộn), bạn muốn public để loại bỏ. Loại bỏ private cũng có tác dụng 'thủy triều' xuất hiện trên protected và mức độ hiển thị cao không cần thiết khác. Lý tưởng nhất là tôi muốn sử dụng quy tắc StyleCop hoặc tương tự để làm cho mã thực sự nhất quán (mặc dù vậy, như với tất cả các quy tắc mã thực sự nên được đồng ý giữa các nhà phát triển trước khi ai đó đi đến kết luận về nó).

(BTW Sự tranh cãi của bạn trong việc hỗ trợ CodeRush trước khi bỏ sót nó là không chính xác - các tùy chọn cho phép bạn đặt chế độ hiển thị phương thức, vv là private (OOTB) hoặc 'mặc định' (không chỉ định bất kỳ điều gì)).

+0

Ruben - bạn có thể chỉ cho tôi nơi tôi có thể đặt "riêng tư" không xuất hiện trong tùy chọn DevExpress cho CodeRush không? – Neal

+0

DevExpress \ Options - Editor \ Code Style \ Phạm vi - Phương pháp: Chọn "Mặc định" –

+0

@RoryBecker cảm ơn bạn đã bước vào. Trong khi chúng tôi ở đây, tôi chỉ tìm ra nó tồn tại vì tôi đẫm máu và nằm trong vòng 3 của tôi mọi menu tùy chọn trong đó. Vấn đề là 'Mặc định' có nghĩa là ít. Tôi không biết giải pháp, nhưng có lẽ nó nên nói 'Mặc định (không có từ khóa phát ra)' hay cái gì? (Có, tôi biết nhiều hơn về mặt kỹ thuật, thuật ngữ chính xác có tiêu chuẩn lang thang) –

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