Vì lý do gì tôi nên giữ sạch sử dụng phần trên màn hình trong C #?


11

Một lần khi tôi đang cấu trúc lại mã của mình, tôi đã chuyển IDE đến phần sử dụng của lớp C # của mình và dọn sạch các không gian tên không sử dụng và các không gian tên trùng lặp và sắp xếp tất cả chúng.

Cặp của tôi (lập trình cặp) hỏi tôi lý do. Tôi không biết tại sao tôi lại làm vậy. Tôi đã làm theo thói quen của mình để giữ cho tất cả các mã của tôi sạch sẽ và gọn gàng. Ý tôi là, tôi đã nói với anh ấy rằng có một mã sạch hơn là một ý tưởng tốt nói chung, nhưng tất nhiên lý do đó không phải là một lời biện minh tốt, vì tôi thậm chí sẽ không dành thời gian của mình trong phần sử dụng của bất kỳ trang mã C # nào.

Vì nhiều lần bạn di chuyển một lớp hoặc một enum (hoặc một loại nói chung) từ một không gian tên này sang một không gian tên khác và điều này sẽ thêm các câu lệnh mới vào mã của bạn (bằng cách tự đi lên bằng cửa sổ mã và tự viết câu lệnh sử dụng, hoặc thông qua việc biên tập sử dụng Alt+ Ctrl+ F10kết hợp), và kể từ khi các mới tuyên bố sử dụng sẽ được thêm vào cuối sử dụng phần , mà làm cho họ không được sắp xếp theo thứ tự abc, và kể từ khi biên dịch không bao giờ phàn nàn về bất cứ những vấn đề này, tại sao chúng ta nên quan tâm để làm điều này phần sạch sẽ và gọn gàng? Những lý do chúng ta có thể có?


5
Điều này đã được hỏi và trả lời trên Stack Overflow - stackoverflow.com/questions/4163320/unuse-USE-statements (và hai câu hỏi được liên kết trên thanh bên) - về cơ bản không có lý do gì để lo lắng về việc sử dụng không sử dụng
ChrisF

Tài liệu tham khảo tuyệt vời @ChrisF, tôi nghĩ rằng tôi đã có câu trả lời của mình ở đó. Có lẽ bạn nên tham gia câu hỏi với câu hỏi đó, hoặc làm điều gì đó tương tự. :)
Saeed Neamati

Kiểm tra điều này cũng: stackoverflow.com/a/136646/333306

Câu trả lời:


22

Không có sự khác biệt về hiệu suất, cho dù usingbạn có bao nhiêu chỉ thị.

Nhưng tôi nghĩ việc giữ chúng sạch sẽ vì hai lý do:

  1. Nếu bạn nhìn vào usings, bạn có thể thấy tập tin phụ thuộc vào cái gì. Điều này có thể giúp bạn tìm ra loại (s) trong tệp làm gì. Nếu bạn làm điều này, có các usings theo thứ tự cụ thể sẽ giúp bạn thấy nó nhanh hơn.
  2. Nếu bạn có quá nhiều usings, điều đó có thể cho thấy bạn có sự phân tách mối quan tâm kém và loại (các) tệp trong tệp làm quá nhiều.

Cả hai điều này không quan trọng lắm, vì vậy bạn không nên lo lắng về nó quá nhiều. Nhưng cá nhân, tôi nghĩ rằng nó làm cho nó đáng để giữ usingsạch sẽ.


8

Những lý do chính của tôi để dọn dẹp trong số các tuyên bố sử dụng là:

  • Càng sử dụng nhiều câu lệnh, càng có nhiều khả năng đặt tên xung đột, điều đó có nghĩa là bạn phải bao gồm các phần của không gian tên trong mã để tránh sự mơ hồ.
  • IntelliSense được lọc dựa trên tất cả các cụm trong các câu lệnh sử dụng của bạn. Do đó, nếu bạn dọn sạch nó khỏi những tuyên bố không cần thiết, bạn sẽ tự giúp mình bằng cách giúp với độ chính xác của IntelliSense.

Trên hết, tôi đồng ý với các câu trả lời khác ở chỗ nó làm tăng khả năng đọc và giúp dễ dàng có được ý tưởng về loại (các) loại trong lớp làm gì.


Tôi không hiểu tại sao điều này không được bình chọn cao hơn. Xung đột không gian tên là một vấn đề chính đáng.
RubberDuck

7

Sự hoàn hảo đạt được không chỉ khi không còn gì để thêm, mà là khi không còn gì để lấy đi nữa - Antoine de Saint-Exupery

Bất cứ khi nào bạn có thể loại bỏ một cái gì đó không cần thiết và không thêm sự hiểu biết, hãy làm như vậy (khả năng đọc là giá trị mã bổ sung).


Câu cách ngôn tuyệt vời. Tôi thích ý tưởng. +1;)
Saeed Neamati

4

Nó chỉ loại bỏ nhiễu từ tín hiệu. Ít nhiễu hơn có nghĩa là dễ dàng nhận được tín hiệu hơn, tức là hiểu ý định của mã.

Là một máy phát tiếng ồn, nó là một thứ khá nhỏ.


2
  • Nó cải thiện khả năng đọc mã của bạn.
  • Thông thường sẽ rất ít khi làm theo hướng dẫn này nếu bạn chỉ có vài câu sử dụng

  • Nó có ý nghĩa hơn để phân tách bằng cách sử dụng các câu lệnh thành các phần.

Ví dụ:

    using System.Web;

    using MyPlatform.FooX;        
    using MyPlatform.FooY;

    using MyFramework.Helpers;        
    using MyFramework.Extentions;

Nếu tôi nhìn vào lớp, thì tôi có thể thấy ngay rằng lớp đã cho đang sử dụng lắp ráp System.Web, cũng như nền tảng và khung của chúng tôi. Điều này cho tôi một ý tưởng sơ bộ về sự phụ thuộc và phức tạp của nó.

Sau đó, bạn có thể tiến thêm một bước này và đặt hàng các câu lệnh, nhưng tôi nghĩ rằng nó làm cho việc sử dụng các câu lệnh trở nên ít đọc hơn, vì vậy tôi không khuyến nghị điều này.

using MyFramework.Extentions;
using MyFramework.Helpers;

using System.Web;

using MyPlatform.FooX;        
using MyPlatform.FooY;
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.