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.
SerialBlobkó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
Stringz 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
SerialBlobv 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. .