З яких причин слід тримати розділ "користування" чистим у C #?


11

Одного разу , коли я був рефакторинг мого коду, я підійшов до IDE в використанні частини мого C # класу і очистити невикористовувані простору імен і дублікати просторів імен , і сортую їх усіх.

Моя пара (парне програмування) запитала у мене причину. Я поняття не мав, чому я це зробив. Я зробив це зі своєї звички, щоб весь мій код був чистим та охайним. Я маю на увазі, я сказав йому, що мати чистіший код - це взагалі гарна ідея, але, звичайно, ця причина не є гарним виправданням, оскільки я навіть не буду намагатися витрачати свій час на користування розділом будь-якої кодової сторінки C #.

Оскільки багато разів ви переміщуєте клас або enum (або тип взагалі) з одного простору імен в інший простір імен, і це додає нові дані, використовуючи оператори до вашого коду (або вручну, відкриваючи вікно коду і самостійно записуючи використовуючу заяву, або через редактор, що використовує комбінацію Alt+ Ctrl+ F10), і оскільки ці нові оператори використання будуть додані до кінця розділу , завдяки чому вони не сортуються за алфавітом, і оскільки компілятор ніколи не скаржиться на будь-яку з цих проблем, чому ми повинні піклуватися про те, щоб це зробити розділ чистий і охайний? Які причини у нас можуть бути?


5
Про це вже запитували та відповіли на Stack Overflow - stackoverflow.com/questions/4163320/unused-using-statements (та два пов'язані питання на бічній панелі) - в основному немає причин турбуватися про невикористані користування
ChrisF

Чудова посилання @ChrisF, я думаю, що я отримав там свою відповідь. Можливо, вам слід приєднатися до питання з цим, або зробити щось подібне. :)
Saeed Neamati

Перевірте це також: stackoverflow.com/a/136646/333306

Відповіді:


22

Немає різниці в продуктивності, незалежно від того, скільки у usingвас директив.

Але я думаю, що має сенс підтримувати їх в чистоті з двох причин:

  1. Якщо ви подивитеся на usings, ви зможете побачити, які залежності має файл. Це допоможе вам зрозуміти, що роблять типи (файли) у файлі. Якщо ви це зробите, встановлення usings у визначеному порядку допомагає вам швидше бачити це.
  2. Якщо у вас занадто багато usings, це може вказувати на те, що ви погано відокремлюєте проблеми і що типи у файлі роблять занадто багато.

І те й інше не дуже важливо, тому вам не варто надто турбуватися про це. Але особисто я вважаю, що це заслуговує на підтримку usingчистоти.


8

Мої основні причини очищення серед використовуючих висловлювань:

  • Чим більше використовуються оператори, тим більше можливостей називати конфлікти, що означатиме, що вам доведеться включати частини простору імен у код, щоб уникнути неоднозначності.
  • IntelliSense відфільтровано на основі всіх складових ваших операторів використання. Тому якщо ви очистите його від зайвих тверджень, ви допоможете собі, допомагаючи з точністю IntelliSense.

На додаток до цього я погоджуюся з іншими відповідями тим, що це збільшує читабельність та полегшує уявлення про те, що роблять типи (и) у класі.


Я не розумію, чому це голосування не вище. Конфлікти у просторі імен є законною проблемою.
RubberDuck

7

«Досконалість досягається не тоді, коли не залишається нічого додати, а коли не залишається нічого, щоб забрати» - Антуан де Сент-Екзюпері

Щоразу, коли ви можете видалити щось, що не потрібно і не додає розуміння, робіть це (читабельність вартує додаткового коду).


Великий афоризм. Ідея мені сподобалась. +1;)
Саїд Неаматі

4

Це просто видалення шуму з сигналу. Менше шуму означає, що простіше приймати сигнал, тобто розуміти наміри коду.

Однак, як генератор шуму, він є досить незначним.


2
  • Це покращує читабельність вашого коду.
  • Як правило, мало сенсу дотримуватися цього керівництва, якщо у вас є лише кілька користувачів, які використовують заяви

  • Більш сенс розділяти використання операторів на розділи.

Наприклад:

    using System.Web;

    using MyPlatform.FooX;        
    using MyPlatform.FooY;

    using MyFramework.Helpers;        
    using MyFramework.Extentions;

Якщо я дивлюся на клас, то миттєво бачу, що даний клас використовує збірку System.Web, а також нашу платформу та фреймворк. Це дає мені приблизне уявлення про його залежності та складність.

Потім ви можете зробити цей крок далі і замовити висловлювання, але я думаю, що це робить висловлювання менш читабельними, тому я б не рекомендував цього.

using MyFramework.Extentions;
using MyFramework.Helpers;

using System.Web;

using MyPlatform.FooX;        
using MyPlatform.FooY;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.