Máte pravdu, že SerialBlob
je jen tenká abstrakce kolem byte[]
, ale:
- Pracujete v týmu?
- Děláte někdy chyby?
- Jste líní psát komentáře?
- Zapomínáte někdy, co váš kód před rokem skutečně dělá?
Pokud jste na některou z výše uvedených otázek odpověděli ano , pravděpodobně byste měli použít SerialBlob
.
Je to v podstatě stejné s jakoukoli jinou abstrakcí kolem jednoduché datové struktury (předpokládejme ByteBuffer
, například) nebo jiná třída. Chcete jej používat přes byte[]
, protože:
-
Je to popisnější.
byte[]
může to být nějaký druh mezipaměti, může to být kruhový buffer, může to být nějaký druh mechanismu kontroly integrity, který se pokazil. Ale pokud používáteSerialBlob
, je zřejmé, že se jedná pouze o blob binárních dat z databáze / k uložení do databáze.Namísto ruční manipulace s polem používáte metody na třídě, což je opět snadněji čitelné, pokud neznáte kód. I triviální manipulaci s polem musí čtenář vašeho kódu pochopit. Metoda s dobrým jménem je sebepopisná.
To je užitečné pro vaše spoluhráče a také pro vás, když budete tento kód číst za rok.
-
Je to více důkaz o chybách. Pokaždé, když napíšete nový kód, je velká šance, že jste v něm udělali chybu. Možná to zpočátku není vidět, ale pravděpodobně tam je.
SerialBlob
kód byl testován tisíci lidmi po celém světě a lze s jistotou říci, že s ním nebudou spojeny žádné chyby.I když jste si jisti, že jste správně zvládli zpracování bajtového pole, protože je tak přímočaré, co když někdo jiný najde váš kód za půl roku a začne věci „optimalizovat“? Co když znovu použije starý blob nebo pokazí vaši výplň magického pole? Každá jednotlivá chyba při manipulaci s indexem poškodí vaše data a ta nemusí být okamžitě detekována (jste psaní jednotkových testů, že?).
-
Omezuje vás pouze na hrstku možných interakcí. Ve skutečnosti to může vypadat jako nevýhoda, ale není! Zajistí, že poté, co s ním skončíte, nebudete objekt blob používat jako místní dočasnou proměnnou. Zajistí, že se nebudete pokoušet vytvořit
String
z toho nebo něco hloupého. Zajistí, že jej budete používat pouze jako blob. Opět přehlednost a bezpečnost. -
Už je to napsané a vždy to vypadá stejně. Nemusíte psát novou implementaci pro každý projekt nebo číst deset různých implementací v deseti různých projektech. Pokud někdy uvidíte
SerialBlob
v projektu kohokoli vám bude použití jasné. Všichni používají stejný.
TL; DR: Před několika lety (nebo možná ještě v C) pomocí byte[]
bylo by to v pořádku. V Javě (a OOP obecně) zkuste místo primitivní (nízkoúrovňové) struktury použít konkrétní třídu navrženou pro danou úlohu, protože jasněji popisuje vaše záměry, produkuje méně chyb a z dlouhodobého hlediska snižuje délku vašeho kódu. .