Du har ret i, at SerialBlob
er blot en tynd abstraktion omkring en byte[]
, men:
- Arbejder du i et team?
- Begår du nogle gange fejl?
- Er du doven med at skrive kommentarer?
- Glemer du nogle gange, hvad din kode fra et år siden faktisk gør?
Hvis du besvarede et af ovenstående spørgsmål med et ja , skal du nok bruge SerialBlob
.
Det er grundlæggende det samme med enhver anden abstraktion omkring en simpel datastruktur (tænk ByteBuffer
, for eksempel) eller en anden klasse. Du vil bruge det over byte[]
, fordi:
-
Det er mere beskrivende. En
byte[]
kunne være en slags cache, det kunne være en cirkulær buffer, det kunne være en slags integritetskontrolmekanisme, der er gået galt. Men hvis du brugerSerialBlob
, det er indlysende, at dette kun er en klat binære data fra databasen / der skal gemmes i databasen.I stedet for manuel array-håndtering bruger du metoder på klassen, som igen er nemmere at læse, hvis du ikke kender koden. Selv triviel array-manipulation skal forstås af læseren af din kode. En metode med et godt navn er selvbeskrivende.
Dette er nyttigt for dine holdkammerater og også for dig, når du læser denne kode om et år.
-
Det er mere fejlsikkert. Hver gang du skriver en ny kode, er der en god chance for, at du har lavet en fejl i den. Det er måske ikke synligt i starten, men det er sandsynligvis derinde.
SerialBlob
kode er blevet testet af tusindvis af mennesker rundt om i verden, og det er sikkert at sige, at du ikke vil få nogen fejl forbundet med den.Selvom du er sikker på, at du fik din byte-array-håndtering rigtigt, fordi den er så ligetil, hvad nu hvis en anden finder din kode om et halvt år og begynder at "optimere" tingene? Hvad hvis han genbruger en gammel klat eller roder med din magiske array-polstring? Hver enkelt off-by-one fejl i indeksmanipulation vil ødelægge dine data, og det bliver muligvis ikke opdaget med det samme (Du er at skrive enhedsprøver, ikke?).
-
Det begrænser dig til kun en håndfuld mulige interaktioner. Dette kan faktisk ligne en ulempe, men det er det ikke! Det sikrer, at du ikke vil bruge din klat som en lokal midlertidig variabel, når du er færdig med den. Det sikrer, at du ikke vil forsøge at lave en
String
ud af det eller noget dumt. Det sørger for, at du kun vil bruge det som en klat. Igen, klarhed og sikkerhed. -
Det er allerede skrevet og ser altid ens ud. Du behøver ikke at skrive en ny implementering for hvert projekt eller læse ti forskellige implementeringer i ti forskellige projekter. Hvis du nogensinde vil se en
SerialBlob
i enhvers projekt vil brugen være klar for dig. Alle bruger den samme.
TL; DR: For et par år siden (eller måske stadig i C), ved hjælp af en byte[]
ville være ok. I Java (og OOP generelt), prøv at bruge en specifik klasse designet til jobbet i stedet for en primitiv (lavt niveau) struktur, da den tydeligere beskriver dine hensigter, producerer færre fejl og reducerer længden af din kode i det lange løb .