2011-04-20 23 views
5

Tôi đã bắt đầu sử dụng StyleCop và nó đưa ra cảnh báo bất cứ nơi nào có một biến được khai báo như m_VariableName.Tên biến không được bắt đầu bằng 'm_': Quy tắc StyleCop 1308 - Tại sao tên này được coi là hành vi xấu (hoặc không tốt/tiêu chuẩn)?

Thông điệp cảnh báo là: Variable names must not start with 'm_'. Đây là quy tắc StyleCop SA1308.

Tôi có thể tắt quy tắc này. Nhưng

1) Tôi muốn biết tại sao thực hành không tốt hoặc được coi là thực tiễn không tốt để khai báo tên biến bắt đầu bằng 'm_'?

2) Nhân vật gạch dưới có ý nghĩa đặc biệt đối với việc tái cấu trúc Visual Studio không? (Tôi nghe nó từ một trong những nhà phát triển cao cấp.)

+0

Vui lòng không sử dụng đặt tên C++ cho C#. Tôi tình cờ thích quy tắc StyleCop. ALL_CAPs _myInstance và m_MyVar thật khủng khiếp. Tên nên mô tả đối tượng, không phải là thuộc tính của nó, hãy để từ khóa làm điều đó. –

Trả lời

8

Quy tắc StyleCop mặc định theo Microsoft C# coding style.

Chúng bao gồm không sử dụng m_ làm tiền tố (được xem là Hungarian Notation).

Nếu nhóm của bạn không tuân thủ các nguyên tắc về phong cách này và có của riêng bạn, vui lòng tắt quy tắc.

+0

+1 cho các liên kết! –

0

Tôi không hoàn toàn chắc chắn về điều này, nhưng một số nhà phát triển có xu hướng tiền tố tên trường đối tượng với m_. Nếu bạn mở reflector, bạn sẽ thấy rằng đó là một thực tế phổ biến vào mã của Microsoft.

Rất nhiều sách cũng chứa các ví dụ như thế.

Bây giờ, tại sao đó là một thực tế xấu ... Không có ý tưởng :) Cá nhân tôi không làm điều đó và luôn luôn tiền tố trường với từ khóa this.

3

Tôi không nghĩ đó là hành vi xấu - cá nhân tôi thích nhập và đọc m_banana hơn this.banana. StyleCop có một số quy tắc mã hóa mặc định để kiểm tra và nếu bạn không thích chúng hoặc đã sử dụng các quy ước khác, hãy tắt cảnh báo hoặc viết các quy tắc tùy chỉnh của bạn.

+0

+1 NHƯNG Tôi đã chấp nhận một câu trả lời khác làm câu trả lời. Vì vậy, tôi không thể chấp nhận của bạn quá, thật không may. – Learner

5

Nó chỉ phù hợp của naming guidelines for Fields Microsoft:

Không sử dụng một tiền tố cho tên trường. Ví dụ, không sử dụng g_ hoặc s_ để phân biệt các trường tĩnh và không tĩnh.

Tôi tin rằng đó là một phần của cuộc thanh trừng chung của Hungary mà Microsoft đã cố gắng triển khai khi họ giới thiệu .NET.

Nhưng với tất cả mọi thứ xung quanh kiểu mã hóa, nếu nó không phù hợp với những gì bạn và/hoặc nhóm của bạn cảm thấy thoải mái, thì đừng sử dụng nó.

+0

+1 NHƯNG Tôi đã chấp nhận một câu trả lời khác làm câu trả lời. Vì vậy, tôi không thể chấp nhận của bạn quá, thật không may. – Learner

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