Anda benar bahwa SerialBlob
hanyalah abstraksi tipis di sekitar byte[]
, tapi:
- Apakah Anda bekerja dalam tim?
- Apakah Anda terkadang melakukan kesalahan?
- Apakah Anda malas menulis komentar?
- Apakah Anda terkadang lupa apa yang sebenarnya dilakukan kode Anda dari setahun yang lalu?
Jika Anda menjawab salah satu pertanyaan di atas dengan ya , Anda mungkin harus menggunakan SerialBlob
.
Ini pada dasarnya sama dengan abstraksi lain di sekitar struktur data sederhana (pikirkan ByteBuffer
, misalnya) atau kelas lain. Anda ingin menggunakannya lebih dari byte[]
, karena:
-
Ini lebih deskriptif. Sebuah
byte[]
bisa jadi semacam cache, bisa jadi buffer melingkar, bisa jadi semacam mekanisme pemeriksaan integritas yang salah. Tetapi jika Anda menggunakanSerialBlob
, jelas ini hanya gumpalan data biner dari database / untuk disimpan di database.Alih-alih penanganan array manual, Anda menggunakan metode di kelas, yang, sekali lagi, lebih mudah dibaca jika Anda tidak mengetahui kodenya. Bahkan manipulasi array yang sepele pun harus dipahami oleh pembaca kode Anda. Sebuah metode dengan nama yang baik adalah self-deskriptif.
Ini berguna untuk rekan satu tim Anda dan juga untuk Anda ketika Anda akan membaca kode ini dalam setahun.
-
Ini lebih bukti kesalahan. Setiap kali Anda menulis kode baru, kemungkinan besar Anda telah membuat bug di dalamnya. Ini mungkin tidak terlihat pada awalnya, tetapi mungkin ada di sana.
SerialBlob
kode telah diuji oleh ribuan orang di seluruh dunia dan dapat dikatakan bahwa Anda tidak akan mendapatkan bug apa pun yang terkait dengannya.Bahkan jika Anda yakin telah menangani array byte dengan benar, karena sangat mudah, bagaimana jika orang lain menemukan kode Anda dalam waktu setengah tahun dan mulai "mengoptimalkan" sesuatu? Bagaimana jika dia menggunakan kembali gumpalan lama, atau mengacaukan susunan susunan ajaib Anda? Setiap kesalahan satu per satu dalam manipulasi indeks akan merusak data Anda dan itu mungkin tidak langsung terdeteksi (Anda adalah menulis tes unit, bukan?).
-
Ini membatasi Anda hanya pada beberapa kemungkinan interaksi. Ini mungkin benar-benar terlihat seperti kekurangan, tetapi sebenarnya tidak! Ini memastikan Anda tidak akan menggunakan gumpalan Anda sebagai variabel sementara lokal setelah Anda selesai menggunakannya. Ini memastikan Anda tidak akan mencoba membuat
String
keluar dari itu atau sesuatu yang konyol. Itu memastikan Anda hanya akan menggunakannya sebagai gumpalan. Sekali lagi, kejelasan dan keamanan. -
Itu sudah ditulis dan selalu terlihat sama. Anda tidak perlu menulis implementasi baru untuk setiap proyek, atau membaca sepuluh implementasi berbeda dalam sepuluh proyek berbeda. Jika Anda pernah melihat
SerialBlob
dalam proyek siapa pun, penggunaannya akan jelas bagi Anda. Semua orang menggunakan yang sama.
TL; DR: Beberapa tahun yang lalu (atau mungkin masih dalam C), menggunakan byte[]
akan baik-baik saja. Di Java (dan OOP secara umum), coba gunakan kelas khusus yang dirancang untuk pekerjaan itu alih-alih struktur primitif (tingkat rendah) karena lebih jelas menggambarkan maksud Anda, menghasilkan lebih sedikit kesalahan, dan mengurangi panjang kode Anda dalam jangka panjang .