Alegeți tipul de date potrivit
Ați fost introdus în diferența dintre tipurile de valori și tipurile de referințe, precum și tipurile de puncte integrale și flotante.
Să presupunem că activitatea dvs. este să construiți o aplicație nouă care preia, manipulează și stochează diferite tipuri de date. Ce tipuri de date utilizați?
În unele cazuri, este o alegere simplă. De exemplu, atunci când trebuie să lucrați cu text, atunci aveți opțiunea implicită de a utiliza string tipul de date, cu excepția cazului în care trebuie să efectuați o cantitate semnificativă de concatenare.
Dar ce se întâmplă cu lucrul cu date numerice? Există 11 opțiuni diferite. Cum alegeți tipul de date corect?
Alegeți tipul de date potrivit
Cu atât de multe tipuri de date din care să alegeți, din ce criterii trebuie să utilizați pentru a alege tipul de date potrivit pentru o anumită situație?
Atunci când evaluați opțiunile, trebuie să cântăriți mai multe considerații importante. Adesea nu există un singur răspuns corect, dar unele răspunsuri sunt mai corecte decât altele.
Alegeți tipul de date care îndeplinește cerințele intervalului de valori limită din aplicația dvs.
Alegerea unui tip de date vă poate ajuta să setați limitele pentru dimensiunea datelor pe care le puteți stoca în acea variabilă. De exemplu, dacă știți că o anumită variabilă ar trebui să stocheze doar un număr între 1 și 10.000, altfel se află în afara limitelor așteptate, este posibil să evitați byte și sbyte , deoarece intervalele lor sunt prea mici.
În plus, este posibil să nu aveți nevoie intde , long, uint, și ulong , deoarece acestea pot stoca mai multe date decât este necesar. De asemenea, probabil că omiteți float, doubleși decimal dacă nu aveți nevoie de valori fracționare. S-ar putea restrânge la short și ushort, dintre care ambele ar putea fi viabile. Dacă sunteți sigur că o valoare negativă nu ar avea nicio semnificație în aplicația dvs., puteți alege ushort (întreg nesemnat pozitiv, de la 0 la 65.535). Acum, orice valoare atribuită unei variabile de tip ushort în afara limitei de la 0 la 65535 ar genera o excepție, ajutând astfel subtly să impuneți un grad de sanitate în aplicația dvs.
Începeți cu alegerea tipului de date pentru a se potrivi datelor (nu pentru a optimiza performanța)
Este posibil să fiți tentat să alegeți tipul de date care utilizează cei mai puțini biți pentru a stoca date care cred că îmbunătățește performanța aplicației dvs. Totuși, unele dintre cele mai bune sfaturi legate de performanța aplicațiilor (adică cât de repede rulează aplicația) este de a nu "optimiza prematur". Ar trebui să rezistați tentației de a ghici părți ale codului dvs., inclusiv selectarea tipurilor de date care pot afecta performanța aplicației dvs.
Mulți presupun că, deoarece un tip de date dat stochează mai puține informații, trebuie să utilizeze mai puțin din procesorul și memoria computerului decât un tip de date care stochează mai multe informații. În schimb, ar trebui să alegeți potrivirea potrivită pentru datele dvs., apoi mai târziu puteți măsura empiric performanța aplicației utilizând software special, care oferă detalii concrete asupra părților aplicației care au un impact negativ asupra performanței.
Alegerea tipurilor de date pe baza tipurilor de date de intrare și ieșire ale funcțiilor bibliotecii utilizate
Să presupunem că doriți să lucrați cu o perioadă de ani între două date calendaristice. Deoarece aplicația este o aplicație de business, este posibil să determinați că aveți nevoie doar de un interval cuprins între aproximativ 1960 și 2200. S-ar putea crede că încercați să lucrați cu byte , deoarece poate reprezenta numere între 0 și 255.
Cu toate acestea, atunci când vă uitați la metodele predefinite pentru System.TimeSpan și System.DateTime clase, vă dați seama că acestea acceptă în cea mai mare parte valorile de tip double și int. Dacă alegeți sbyte, veți fi difuzat în mod constant între byte și double sau int. În acest caz, poate avea mai mult sens să alegeți int dacă nu aveți nevoie de precizie subseculară și double dacă aveți nevoie de precizie subseculară.
Alegerea tipurilor de date pe baza impactului asupra altor sisteme
Uneori, trebuie să luați în considerare modul în care informațiile vor fi utilizate de alte aplicații sau de alte sisteme, cum ar fi o bază de date. De exemplu, sistemul de tip SQL Server este diferit de sistemul de tip C#s. Prin urmare, unele mapări între cele două trebuie să aibă loc înainte de a putea salva datele în acea bază de date.
Dacă scopul aplicației dvs. este să interfațieze cu o bază de date, poate fi necesar să luați în considerare modul în care sunt stocate datele și volumul de date stocate. Alegerea unui tip de date mai mare poate afecta cantitatea (și costul) spațiului de stocare fizic necesar pentru a stoca toate datele pe care le va genera aplicația dvs.
Când vă îndoiți, rămâneți cu noțiunile de bază
În timp ce v-ați uitat la mai multe considerații, pe măsură ce începeți, pentru simplitate, ar trebui să preferați un subset de tipuri de date de bază, inclusiv:
-
intpentru majoritatea numerelor întregi -
decimalpentru numere reprezentând bani -
boolpentru valori adevărate sau false -
stringpentru valoarea alfanumerică
Alegerea tipurilor complexe speciale pentru situații speciale
Nu reinventați tipurile de date dacă există deja unul sau mai multe tipuri de date pentru un anumit scop. Următoarele exemple identifică unde pot fi utile tipurile de date .NET specifice:
-
byte: lucrul cu date codificate care provin din alte sisteme de computere sau utilizând seturi diferite de caractere. -
double: lucrând cu scopuri geometrice sau științifice.doublese utilizează frecvent atunci când construiți jocuri care implică mișcarea. -
System.DateTimepentru o anumită valoare de dată și oră. -
System.TimeSpantimp de un interval de ani / luni / zile / ore / minute / secunde / milisecunde.
Recapitula
Există considerații atunci când alegeți tipurile de date pentru codul dvs. și, adesea, mai multe opțiuni. Gândiți-vă la alegeri și, dacă nu aveți un motiv bun, încercați să rămâneți cu tipurile de bază, cum ar fi int, decimalstring, și bool.