sql >> Databáze >  >> RDS >> Mysql

Použití SerialBlob vs bajt[]

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:

  1. 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áte SerialBlob , 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.

  2. 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?).

  3. 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.

  4. 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. .




  1. formátování datového pole v mysql

  2. Výkon SQL Server 2005 Query

  3. Oracle 10g:MIN/MAX odhad hodnoty sloupce

  4. Co přesně jsou parametry IN, OUT, IN OUT v PL/SQL