Vælg den rigtige datatype
Du er blevet introduceret til forskellen mellem værdityper og referencetyper samt integral- og flydende taltyper.
Lad os antage, at dit job er at bygge et nyt program, der henter, manipulerer og gemmer forskellige typer data. Hvilke datatyper bruger du?
I nogle tilfælde er det et nemt valg. Når du f.eks. har brug for at arbejde med tekst, bruger du som standard string datatypen, medmindre du skal udføre en betydelig mængde sammenkædning.
Men hvad med at arbejde med numeriske data? Der er 11 forskellige muligheder. Hvordan vælger du den rigtige datatype?
Vælg den rigtige datatype
Med så mange datatyper at vælge imellem, hvilke kriterier skal du bruge til at vælge den rigtige datatype til den specifikke situation?
Når du evaluerer dine muligheder, skal du overveje flere vigtige ting. Ofte er der ikke et eneste korrekt svar, men nogle svar er mere korrekte end andre.
Vælg den datatype, der opfylder kravene til grænseværdiområdet i dit program
Dit valg af datatype kan hjælpe med at angive grænserne for størrelsen af de data, du kan gemme i den pågældende variabel. Hvis du f.eks. ved, at en bestemt variabel kun skal gemme et tal mellem 1 og 10.000, ellers er den uden for grænserne for, hvad der forventes, byte og sbyte da deres intervaller er for lave.
Desuden har du sandsynligvis ikke brug for int, long, uint, og ulong fordi de kan gemme flere data, end det er nødvendigt. På samme måde ville du sandsynligvis springe over float, double, og decimal hvis du ikke havde brug for brøkdele. Du kan indsnævre den til short og ushort, som begge kan være levedygtige. Hvis du er sikker på, at en negativ værdi ikke har nogen betydning i dit program, kan du vælge ushort (positivt heltal uden fortegn, 0 til 65.535). Nu vil enhver værdi, der er tildelt en variabel af typen ushort uden for grænsen på 0 til 65535, udløse en undtagelse og dermed diskret hjælpe dig med at gennemtvinge en vis grad af sanitetskontrol i dit program.
Start med at vælge datatypen, så den passer til dataene (ikke for at optimere ydeevnen)
Du kan blive fristet til at vælge den datatype, der bruger færrest bit til at gemme data, fordi det forbedrer dit programs ydeevne. Nogle af de bedste råd i forbindelse med programmets ydeevne (dvs. hvor hurtigt dit program kører) er dog ikke at "optimere for tidligt". Du bør modstå fristelsen til at gætte på de dele af din kode, herunder valget af datatyper, der kan påvirke dit programs ydeevne.
Mange antager, at da en bestemt datatype gemmer færre oplysninger, skal den bruge mindre af computerens processor og hukommelse end en datatype, der gemmer flere oplysninger. I stedet skal du vælge den rigtige tilpasning til dine data, så senere kan du empirisk måle ydeevnen af dit program ved hjælp af speciel software, der giver faktuel indsigt i de dele af dit program, der påvirker ydeevnen negativt.
Vælg datatyper baseret på input- og outputdatatyperne for de anvendte biblioteksfunktioner
Lad os antage, at du vil arbejde med et tidsrum på år mellem to datoer. Da programmet er et virksomhedsprogram, kan du bestemme, at du kun har brug for et interval fra ca. 1960 til 2200. Du tror måske, du skal prøve at arbejde med byte , da det kan repræsentere tal mellem 0 og 255.
Men når du ser på de indbyggede metoder på klasserne System.TimeSpan og System.DateTime , indser du, at de for det meste accepterer værdier af typen double og int. Hvis du vælger sbyte, vil du konstant kaste frem og tilbage mellem byte og eller doubleint. I dette tilfælde kan det give mere mening at vælge int , om du ikke har brug for præcision i undersekund, og double om du har brug for præcision i undersekunder.
Vælg datatyper baseret på indvirkning på andre systemer
Nogle gange skal du overveje, hvordan oplysningerne bruges af andre programmer eller andre systemer, f.eks. en database. SQL Server's typesystem er f.eks. forskelligt fra C#'s typesystem. Derfor skal der ske en tilknytning mellem de to, før du kan gemme data i den pågældende database.
Hvis dit programs formål er at bruge grænsefladen med en database, skal du sandsynligvis overveje, hvordan dataene gemmes, og hvor mange data der gemmes. Valget af en større datatype kan påvirke mængden (og omkostningerne) af det fysiske lager, der kræves for at gemme alle de data, dit program genererer.
Når du er i tvivl, skal du holde dig til det grundlæggende
Mens du har kigget på flere overvejelser, efterhånden som du kommer i gang, bør du for nemheds skyld foretrække et undersæt af grundlæggende datatyper, herunder:
-
intfor de fleste hele tal -
decimalfor tal, der repræsenterer penge -
boolfor true- eller false-værdier -
stringfor alfanumerisk værdi
Vælg specialkomplekse typer til særlige situationer
Undlad at genopfinde datatyper, hvis der allerede findes en eller flere datatyper til et bestemt formål. I følgende eksempler kan du se, hvor en bestemt .NET-datatype kan være nyttig:
-
byte: arbejde med kodede data, der kommer fra andre computersystemer eller bruger forskellige tegnsæt. -
double: arbejde med geometriske eller videnskabelige formål.doublebruges ofte, når du bygger spil, der involverer bevægelse. -
System.DateTimefor en bestemt dato- og klokkeslætsværdi. -
System.TimeSpani et tidsrum af år/måneder/dage/timer/minutter/sekunder/millisekunder.
Resumé
Der er overvejelser, når du vælger datatyper til din kode og ofte mere end én mulighed. Overvej dine valg, og medmindre du har en god grund, kan du prøve at holde dig til de grundlæggende typer som int, decimal, stringog bool.