De ce ar trebui să elimina inutile C# folosind directivele?



De exemplu, foarte rar am nevoie de:



```
using System.Text;
```

dar's mereu acolo în mod implicit. Presupun că aplicația va utiliza mai multă memorie în cazul în care codul conține inutile [folosind directive](https://msdn.microsoft.com/en-us/library/aa664764(VS.71).aspx). Dar mai este și altceva ce ar trebui să fie conștienți de?


De asemenea, nu se face nici o importanță dacă aceeași folosind directiva este folosit într-un singur fișier vs. cele mai multe/toate fișierele?







*Edit: Rețineți că această întrebare nu este despre neafiliați concept numit-o [folosind declarație](https://msdn.microsoft.com/en-us/library/yh598w02.aspx), conceput pentru a ajuta la o gestionare a resurselor prin asigurarea faptului că, atunci când un obiect iese din sfera de aplicare, sa [IDisposable.Dispune](https://msdn.microsoft.com/en-us/library/system.idisposable.dispose.aspx) metoda se numește. A se vedea [Utilizări ale "ajutorul" în C#](https://stackoverflow.com/questions/75401/uses-of-using-in-c).*
Nu o't schimba nimic, atunci când programul se execută. Tot ce's necesare este încărcat la cerere. Deci, chiar dacă aveți că utilizarea declarație, dacă nu folosesc de fapt un tip în care spațiul de nume / de asamblare, asamblarea că utilizarea declarație este corelată a câștigat't fi încărcat.


În principal, se's, doar pentru a curăța de preferințele personale.
* Notă: a se vedea <http://www.jetbrains.net/devnet/message/5244658> pentru o altă versiune a acestui răspuns.


Citind posturile, se pare că există o anumită confuzie cu privire la întrebarea inițială. Lasă-mă să o lovitură de cuțit la ea.


Postul original este într-adevăr cere întrebarea: „Cum pot identifica și elimina referințele dintr-un proiect Visual Studio pentru alte proiecte / ansambluri care nu sunt în uz?“ Afișul vrea ansamblurile să nu mai apară ca parte a producției construi.


În acest caz, Resharper vă poate ajuta să *identificați* ei, dar trebuie să *eliminați* - le tine. 


Pentru a face acest lucru, deschide Referințe inth Solution Browser, faceți clic dreapta pe fiecare ansamblu de referință, și alege „Find Code dependent“. Vedea:


<http://www.jetbrains.com/resharper/features/navigation_search.html#Find_ReferencedDependent_Code>


Vei primi fie:


1. O listă a dependențele pe această referință într-o fereastră de browser, sau
2. Un dialog care vă spune „Codul dependent de XXXXXXX modul nu a fost găsit.“.


Dacă obține al doilea rezultat, puteți apoi să faceți clic pe mouse-dreapta Reference, selectați Eliminare și scoateți-l din proiectul dumneavoastră.


În timp ce trebuie sa la acest „manual“, adică o referință la un moment dat, se va face treaba. Dacă cineva a automatizat acest lucru într-un fel Sunt interesat de audiere cum a fost făcut.


Puteți ignora destul de mult pe cele din .Net Framework, deoarece nu, in mod normal copiate de ieșire dvs. construi (de obicei - cu toate că nu este neapărat adevărat pentru aplicațiile Silverlight).


Unele posturi par să fie răspunsul la întrebarea: „Cum pot elimina folosind clauzele (C #) dintr-un fișier de cod sursă care nu sunt necesare pentru a rezolva orice referințe în acel dosar“. 


În acest caz, Resharper ajută în câteva moduri:


1. Identifică folosind clauze neutilizate pentru timpul pe detectarea erorii zbura. Ele apar ca avertismente de inspecție de cod - codul va apărea culoarea gri (fie implicit) în fișierul și Resharper va oferi un indiciu pentru al elimina:


<http://www.jetbrains.com/resharper/features/code_analysis.html#On-the-fly_Error_Detection>
2. Vă permite să le eliminați în mod automat, ca parte a procesului de Cod Cleanup:


<http://www.jetbrains.com/resharper/features/code_formatting.html#Optimizing_Namespace_Import_Directives>


**În cele din urmă, dau seama că Resharper face analiza codul static pe soluția. Deci, dacă aveți o referință dinamică a ansamblului - spune prin reflecție sau un ansamblu care este încărcată dinamic în timpul rulării și accesate prin intermediul unei interfețe - nu se va ridica.**  Nu există nici un substitut pentru înțelegerea dvs. de baza codului și dependențele de proiect în timp ce lucra la proiectul dumneavoastră. Fac găsi Resharper caracteristici foarte utile. Mă aștept răspunsul real este pur și simplu: nu a fost un bun exemplu de utilizare. Pentru cazuri, avantajul este acela că permite o fluente API asupra tipurilor existente (care nu se furnizează logica) - și anume



```
var foo = data.Where(x=>x.IsActive).OrderBy(x=>x.Price).First();

```

care permite LINQ:



```
var foo = (from x in data
           where x.IsActive
           order by x.Price
           select x).First();

```

Cu metode statice, acest lucru pur și simplu nu este o problemă, astfel încât nu există nici o justificare; doar utiliza metoda statică pe al doilea tip.


Așa cum este, metodele de extensie nu sunt *corect* obiect orientate - ele sunt un abuz pragmatic pentru a face viața mai ușoară în detrimentul purității. Nu a fost nici un motiv pentru a dilua metode statice în același mod. aplicații deschise care rulează în memoria ram. ar fi unele din motive. nu terbuie sa stergi windowsu cand il instalezi pe celalalt (banuiesc ca de pe cd sau stick usb) ajungi la o faza cand trebuie sa stergi c unde e windowsu si restul programelor si apoi creezi din nou partitia si acolo bagi windowsu deci intr-un fel trebuie sters :d funda asta este ca să știi că ai acea funcție activă. nu contează asta. pai, nu indeplineste aceleasi functii. pe cel intern se afla fisierele sistemului, programelor, etc. care sunt solicitate in permanenta, iar pe cel extern solicitarile sunt facute manual de catre tine.
poti instala ce vrei pe ssd-ul extern, insa, tine mine!, unele programe sunt dependente de sistemul si fisierele din sistemul pe care au fost instalate, adica ele nu pun fisiere numai in locatiile cunoscute, ci stocheaza setari, preferinte, etc. si in alte locatii precum appdata si mai rar in folderul-mama, iar, de altfel, majoritatea jocurilor necesita anumite librarii de functii din fisiere continute in pachetele de visual c++, asta fac jocurile mai putin portabile pe alte sisteme. „Expressive“ înseamnă că este ușor de a scrie cod care este ușor de înțeles, atât pentru compilator și pentru un cititor uman.


Doi factori care fac pentru expresivitate:


* constructe intuitiv care pot fi citite
* lipsa de cod boilerplate


Comparați acest expresiv Groovy, cu eqivalent Java mai puțin expresiv:



```
3.times {
   println 'Hip hip hooray'
}

```

vs



```
for(int i=0; i<3; i++) {
    System.out.println("Hip hip hooray");
}

```

Uneori tranzactionati de precizie pentru expresivitate - exemplul Groovy funcționează pentru că se presupune lucruri pe care Java face să specificați în mod explicit. Problema nu e de corectitudine. Expresia e menționată în așa multe dicționare, uneori cu exemple din literatură, încît nu se pune în discuție dacă e corectă sau nu.  

  

Ea îi deranjează pe mulți vorbitori pentru că e rară și ca urmare sensul ei e insuficient de clar. Unele dicționare spun că e regionalism, dar nu precizează regiunea – un defect frecvent al dicționarelor românești.  

  

Ca urmare sfatul meu legat de această expresie – și de oricare alta care nu face parte din limba comună – este ca ea să fie folosită numai atunci cînd știm sigur că interlocutorul o înțelege. Cînd scriem pentru multă lume, de exemplu în presă, e bine s-o înlocuim cu expresii cunoscute de toți. Există destule. citeste:http://androidgeek.ro/nu-folosi-task-killer/

se aplica si in cazul aplicatiilor gen "boost memory"! pai in primul rand daca ai modul economie energie activat..pentru ca aceasta setare limiteza performantle procesorului, si dupa aceia mergi in managerul de aplicati si mai opreste din aplicatile pe care nu le folosesti.