Hậu quả của việc có các tài liệu tham khảo và sử dụng không cần thiết là gì?


12

Tôi là một người hơi kỳ dị và có xu hướng giữ các dự án của mình bằng cách dọn dẹp các tài liệu tham khảo và usings trong mỗi lớp để chỉ giữ lại những gì thực sự được sử dụng.

Tôi có thể đưa ra lập luận nào khác (ngoài việc làm dịu thần kinh OCD của tôi) về việc giữ các yếu tố cần thiết? Tôi nghĩ chủ yếu là các tài liệu tham khảo hệ thống, bất kỳ tài liệu tham khảo nào cho công việc tùy chỉnh sẽ mang lại nhiều vấn đề tương thích ngược. Là dấu chân phát hành lớn hơn? Thời gian biên dịch lâu hơn?


5
Lưu ý rằng usings và tài liệu tham khảo không giống nhau. Nhiều câu trả lời không tính đến điều đó.
phoog

1
Nếu bạn muốn giữ mã sạch và sử dụng ở mức tối thiểu, hãy cân nhắc mua ReSharper. Mở rộng tuyệt vời cho Visual Studio. Tôi không thể sống / chương trình mà không có. ;-)
Anders

Câu trả lời:


13

Intellisense sẽ là một công cụ hữu ích hơn rất nhiều cho bạn nếu bạn giữ usingở mức tối thiểu, và đó là một lợi thế lớn.

Ngoài ra, tôi không nghĩ rằng có bất kỳ lợi ích. Vì vậy, có thể trình biên dịch C # sẽ hoạt động nhanh hơn bằng cách nói, 1%; Vậy thì sao.


1
Giá trị giảm dần của 1% đó là đáng kể ... nhưng về cơ bản, bạn mong muốn trình biên dịch sẽ tối ưu hóa mọi vấn đề. Tuy nhiên tôi không gặp vấn đề gì với việc đơn giản là gọn gàng
Murph

C # IntelliSense đã hơi lộn xộn kể từ khoảng năm 2005, khi họ bắt đầu bỏ hoàn toàn mọi thứ vào danh sách.
Rei Miyasaka

@ReiMiyasaka để bạn có được IntelliSense cho bất cứ điều gì bạn muốn và sau đó làm Ctrl+.để khắc phục nhanh "Thêm không gian tên XYZ"
kizzx2

1
@Murph: cho dù giá trị tích lũy của 1% cuối cùng lớn đến đâu, nó vẫn sẽ là 1% trong tổng số tích lũy, vì vậy nó sẽ luôn không có giá trị. Ngoài ra, trình biên dịch không thể bỏ qua bất kỳ usings nào cho đến khi nó nhận ra rằng chúng thực sự không cần thiết, nhưng nó không thể tìm ra điều đó trừ khi nó đã biên dịch toàn bộ tệp nguồn của bạn trước. Như với các tham chiếu dự án, chúng không bị loại bỏ chỉ vì chúng dường như không được sử dụng, bởi vì chúng có thể được sử dụng theo cách động (không thể phát hiện được trong thời gian biên dịch).
Mike Nakis

1
Hơi muộn một chút, nhưng trong trường hợp của tôi, chúng tôi đang tạo một ứng dụng cho một thiết bị có nguồn lực rất hạn chế. Thêm các tham chiếu không cần thiết sẽ tác động đến kích thước ứng dụng cuối cùng. Và chúng tôi sẽ cố gắng phân phối gói và cạnh tranh với các gói khác, một gói lớn hơn có thể khiến người dùng suy nghĩ kỹ về việc có nên tải xuống ứng dụng hay không.
hmadrigal

9

Vì hầu như không quan trọng để thực hiện điều này trong Visual Studio (nhấp chuột phải đơn giản), tại sao không làm điều đó?

Điều này phù hợp với Occam's Razor , nó chỉ đơn giản là kỹ thuật tốt.

Về hậu quả của việc không làm điều đó, hãy xem xét điều gì sẽ xảy ra nếu một số nhà phát triển khác cố gắng mở dự án của bạn và nó chứa tham chiếu (không sử dụng) đến thư viện mà anh ấy / cô ấy không có trên máy tính của anh ấy / cô ấy. Bây giờ nhà phát triển nghèo cần tìm hiểu tại sao tài liệu tham khảo chưa được giải quyết đó tồn tại và phải làm gì với nó.

Nếu bạn thích, hãy xem xét nó theo các quy tắc vàng. Bạn có muốn tiếp quản sự phát triển của một dự án có nhiều tài liệu tham khảo đến các thư viện mà bạn không có trên máy tính của mình và bạn không biết tại sao chúng lại ở đó?


+1, có một bổ trợ có thể làm điều này cho toàn bộ giải pháp. Điều này cũng khiến tôi nhớ đến video ClojureScript và Google Đóng trong đó tối ưu hóa toàn bộ chương trình là quan trọng vì một trang web thông thường hiện có khoảng 1 MB. Đó là một thói quen tốt để có - làm sạch những thứ không cần thiết.
Công việc

6

usingcác câu lệnh chỉ đơn giản là để trình biên dịch có thể tham chiếu đầy đủ các lớp, v.v. Các usingcâu lệnh bổ sung sẽ không có tác dụng đáng kể về thời gian biên dịch.

Ngoài ra, thời gian chạy sẽ không tải một hội đồng tham chiếu cho đến khi nó thực sự cần thiết, vì vậy một lần nữa tôi không tin có bất kỳ hậu quả tiêu cực nào của các tham chiếu không cần thiết.

Nếu bạn sử dụng một công cụ như Reflector, việc tìm và loại bỏ các bit không cần thiết này có thể chủ yếu là tự động, vì vậy tôi sẽ nói thật lãng phí khi dành nhiều thời gian cho các hoạt động này. Ví dụ: một hoặc hai giờ loại bỏ thủ công các usingcâu lệnh không cần thiết nhiều hơn trả cho giấy phép Reflector - và nó đi kèm với nhiều tính năng nâng cao năng suất khác.


Dọn dẹp bằng cách sử dụng là một tính năng tích hợp của VS 2010 (tôi nghĩ 2008 cũng vậy). Và ReSharper cũng có thể làm các tài liệu tham khảo. Nhưng vâng, trước khi tôi bắt tay vào bất kỳ hoạt động dọn dẹp quy mô lớn nào, tôi sẽ xem xét việc sử dụng một công cụ để làm việc này cho tôi.
MPelletier

+1 để thể hiện rõ sự khác biệt giữa usingcác tham chiếu không sử dụng và các tham chiếu không sử dụng. Hai là rất khác nhau!
phoog

1

Ngoài những điều trên, tôi đoán rằng nó chưa được đề cập ở đây rằng, mỗi tham chiếu yêu cầu một thành phần hoặc trong khung .NET hoặc một DLL bên ngoài. Nếu tham chiếu được tạo cho một DLL bên ngoài, bạn sẽ cần phải có nó khi (và ở đâu) bạn chạy phần mềm.

Chỉnh sửa - Theo nhận xét hợp lệ của phoog bên dưới: Ứng dụng sẽ vẫn chạy nếu DLL không được sử dụng và không bắt buộc phải được gửi cùng với ứng dụng chỉ vì nó được thêm vào tài liệu tham khảo. Để chăm sóc các tham chiếu không được sử dụng trong mã, bạn có thể muốn xem xét: Xóa các tham chiếu không sử dụng .


1
Nếu tham chiếu không được sử dụng, bạn sẽ không cần DLL khi nào và nơi bạn chạy phần mềm.
phoog

@phoog, cảm ơn bình luận của bạn. Ít nhất là trong .NET VS2010, nếu bạn thêm một tham chiếu vào giải pháp theo cách thủ công, thì DLL được thêm vào vật lý vào thư mục bin ngay cả khi bạn không sử dụng nó trong mã.
NoChance

1
Nhưng, nếu bạn xóa DLL khỏi thư mục bin hoặc xuất bản ứng dụng mà không có DLL, ứng dụng vẫn sẽ chạy.
phoog

@phoog, bạn đã đúng, cảm ơn vì đã chỉ ra điều này. Tôi sẽ chỉnh sửa bài viết.
NoChance
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.