2009-06-11 13 views
14

Chúng tôi có một chút chiến đấu đang xảy ra trong nhóm phát triển của chúng tôi về điều này. Tôi rất thích nghe những gì người khác nghĩ về điều này.Bất cứ ai có thể cho tôi một lý do thực sự tốt để sử dụng tên loại CLR thay vì C# loại tên (bí danh) trong mã (như là một thực tế chung)?

+0

Vậy các đối số được đưa ra trong trận chiến của nhóm phát triển của bạn là gì? – xyz

+0

Đối số lớn nhất cho các loại CLR (trong nhóm của chúng tôi) là mọi người đều có thể hiểu được loại nào đang được sử dụng, bất kể lựa chọn ngôn ngữ. Tuy nhiên, nhóm của chúng tôi sẽ không bao giờ sử dụng bất cứ điều gì NHƯNG C#, vì vậy lập luận của tôi là không phải lo lắng về điều đó. – SQN

Trả lời

28

Trong mã thực tế? Không, trừ phi bạn sẽ có rất nhiều người làm việc trên mã quen thuộc với .NET nhưng không phải với C#.

Trong tên thành viên? Chắc chắn rồi. Ví dụ: giả sử Convert.ToSingle được gọi là Convert.ToFloat - điều đó sẽ hoàn toàn gây nhầm lẫn cho các nhà phát triển F #, với "float" có nghĩa là "điểm nổi 64 bit".

Quy tắc chung của tôi là C# bí danh để triển khai, loại CLR cho tên thành viên.

Nếu bạn muốn tìm một số đối số có lợi cho việc sử dụng tên loại CLR ở khắp mọi nơi, Jeff Richter đề xuất rằng trong "CLR via C#". (Nếu bạn chưa có nó, hãy mua một bản sao bất kể vấn đề này - đó là một cuốn sách tuyệt vời.) Tôi không đồng ý với những lý lẽ mà anh ấy đưa ra, nhưng dù sao cũng có một số lý do.

+0

Cảm ơn bạn Jon ... ví dụ của bạn có ý nghĩa hoàn hảo ... – SQN

+0

Sẽ không có hiệu suất rất nhỏ trong thời gian biên dịch khi trình biên dịch chuyển đổi các bí danh để nhập tên? (Về lý thuyết, ý tôi là, không phải đây là vấn đề thực sự ...) – antirysm

+0

Vâng, tôi nghĩ rằng sự biện minh của Jeff trong cuốn sách của anh ta là một chút cực đoan (pg 119 nếu có ai quan tâm). Tuy nhiên tôi đồng ý với anh ta rằng họ nên không bao giờ bao gồm các bí danh ở nơi đầu tiên và float val = br.ReadSingle(); là một chút kỳ quặc. Mặc dù tôi nghĩ đơn val = br.ReadSingle() cũng là lẻ, bởi vì mọi người đã sử dụng bí danh như là một tiêu chuẩn de facto-Tôi không biết bất cứ ai sử dụng Int32 trên int. – RichardOD

0

Không. Tôi không thể. Dường như với tôi rằng các bí danh sẽ được sử dụng :)

3

Tôi thường sử dụng bí danh C# khi khai báo biến, nhưng kiểu CLR cho các thành viên tĩnh. Tôi đoán tôi giống như sự phân biệt hình ảnh mà nó cung cấp.

2

nhóm phát triển trước đây của tôi thông qua thực hành này vì sự pha trộn của C# và các nhà phát triển Basic.NET Visual. Nó đã được quyết định rằng các loại CLR sẽ làm cho nó dễ dàng hơn cho người C# và VB.NET để giao tiếp.

2

Tôi nghĩ rằng gần như thời gian duy nhất, việc sử dụng tên kiểu CLR là trong một cửa hàng ngôn ngữ hỗn hợp. Một khả năng khác là nếu bạn định chuyển từ ngôn ngữ hiện tại sang ngôn ngữ khác trong tương lai gần. Trong trường hợp đó tôi sẽ đi với tên kiểu CLR.

Ngoài ra, thực sự không phải là một lý do thúc đẩy mạnh mẽ để chọn một phương pháp khác. Điều quan trọng hơn là bạn phải đi đến một sự đồng thuận bằng cách này hay cách khác và đảm bảo mọi người tuân theo "tiêu chuẩn".

1

Tôi nghĩ có ý nghĩa khi sử dụng tên kiểu CLR một cách nhất quán khi gọi các phương thức thành viên kiểu tĩnh, vì bạn vẫn phải làm điều đó trên enums. Vì vậy, để khai báo, hãy sử dụng tên kiểu C#, nhưng khi gọi các thành viên tĩnh, hãy sử dụng các kiểu CLR. Điều này giúp dễ đọc và phù hợp hơn. Kể từ đó, bạn không thể viết:

MyEnum value = enum.Parse(typeof(MyEnum), "value"); 

mà sẽ phù hợp tốt hơn với:

int i = int.Parse("1"); 
long l = long.parse("1"); 

Bạn thà viết:

int i = Int32.Parse("1"); 
long l = Int64.Parse("1"); 
MyEnum value = Enum.Parse(typeof(MyEnum), "value"); 
3

(Mặc dù nó không phải là một lý do particularily mạnh) Tôi thích loại tên hơn bí danh vì màu tiêu chuẩn IntelliSense.

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