Efektif-Jawa-edisi ke-3-Cina-Inggris-bilingual
Ini adalah referensi pembelajaran bahasa Mandarin dan Inggris untuk setiap bab Java Efektif (Edisi ke-3). Semoga bermanfaat untuk meningkatkan teknologi Java.
Isi
- Bab 2. Membuat dan Memusnahkan Benda
- Bab 2 Pendahuluan
- Butir 1: Pertimbangkan metode pabrik statis alih-alih konstruktor (Pertimbangkan metode pabrik statis alih-alih konstruktor)
- Butir 2: Pertimbangkan seorang pembangun ketika dihadapkan dengan banyak parameter konstruktor
- Butir 3: Menerapkan properti tunggal dengan konstruktor pribadi atau tipe enum (gunakan konstruktor pribadi atau tipe enum untuk mengimplementasikan properti tunggal)
- Butir 4: Menerapkan non-instantiabilitas dengan konstruktor privat (gunakan konstruktor privat untuk menerapkan non-instantiabilitas)
- Butir 5: Lebih memilih injeksi ketergantungan daripada sumber daya hardwiring (Injeksi ketergantungan lebih baik daripada sumber daya hardwiring)
- Butir 6: Hindari membuat objek yang tidak perlu
- Butir 7: Hilangkan referensi objek yang usang (kecualikan referensi objek yang usang)
- Butir 8: Hindari finalizer dan pembersih (hindari penggunaan finalizer dan pembersih)
- Butir 9: Lebih memilih mencoba dengan sumber daya daripada mencoba akhirnya (menggunakan sumber daya coba-dengan-lebih baik daripada mencoba-akhirnya)
- Bab 3. Metode Umum untuk Semua Objek (metode umum objek)
- Bab 3 Pendahuluan
- Butir 10: Patuhi kontrak umum saat mengganti metode yang sama (konvensi yang harus diikuti saat mengganti metode yang sama)
- Butir 11: Selalu ganti kode hash ketika Anda mengganti sama dengan (saat mengganti metode sama dengan, selalu ganti metode kode hash)
- Butir 12: Selalu ganti toString (selalu ganti metode toString)
- Butir 13: Ganti klon dengan bijaksana (ganti metode klon dengan bijak)
- Butir 14: Pertimbangkan untuk mengimplementasikan Comparable (Pertimbangkan untuk mengimplementasikan antarmuka Comparable)
- Bab 4. Kelas dan Antarmuka
- Bab 4 Pendahuluan
- Butir 15: Minimalkan aksesibilitas kelas dan anggota (minimalkan aksesibilitas kelas dan anggota)
- Butir 16: Di kelas publik gunakan metode pengakses bukan bidang publik (di kelas publik, gunakan metode pengakses, bukan bidang publik)
- Butir 17: Minimalkan mutabilitas (kurangi variabilitas)
- Angka 18: Mengutamakan komposisi dibandingkan warisan
- Angka 19: Desain dan dokumen untuk warisan atau melarangnya (warisan harus dirancang dan didokumentasikan dengan baik, jika tidak, penggunaannya dilarang)
- Butir 20: Lebih memilih antarmuka daripada kelas abstrak (Antarmuka lebih baik daripada kelas abstrak)
- Butir 21: Rancang antarmuka untuk anak cucu
- Butir 22: Gunakan antarmuka hanya untuk mendefinisikan tipe (antarmuka hanya digunakan untuk mendefinisikan tipe)
- Butir 23: Lebih memilih hierarki kelas daripada kelas yang diberi tag (Hierarki kelas lebih baik daripada kelas yang diberi tag)
- Butir 24: Lebih menyukai kelas anggota statis daripada kelas nonstatis (kelas anggota statis lebih baik daripada kelas anggota nonstatis)
- Butir 25: Batasi file sumber pada satu kelas tingkat atas (file sumber dibatasi pada satu kelas tingkat atas)
- Bab 5. Generik
- Bab 5 Pendahuluan
- Butir 26: Jangan gunakan tipe mentah (Jangan gunakan tipe mentah)
- Butir 27: Hilangkan peringatan yang tidak dicentang (hilangkan peringatan yang tidak dicentang)
- Butir 28: Lebih memilih daftar daripada array (daftar lebih baik daripada array)
- Butir 29: Lebih menyukai tipe generik (lebih suka menggunakan tipe generik)
- Butir 30: Lebih menyukai metode generik (lebih suka menggunakan metode generik)
- Butir 31: Gunakan karakter pengganti yang dibatasi untuk meningkatkan fleksibilitas API (gunakan karakter pengganti yang dibatasi untuk meningkatkan fleksibilitas API)
- Butir 32: Gabungkan obat generik dan vararg dengan bijaksana
- Butir 33: Pertimbangkan wadah heterogen yang aman untuk mengetik (Pertimbangkan wadah heterogen yang aman untuk mengetik)
- Bab 6. Enum dan Anotasi (enumerasi dan anotasi)
- Bab 6 Pendahuluan
- Butir 34: Gunakan enum alih-alih konstanta int (gunakan tipe enumerasi alih-alih konstanta int)
- Butir 35: Gunakan bidang instan alih-alih ordinal
- Butir 36: Gunakan EnumSet alih-alih bidang bit (gunakan EnumSet alih-alih bidang bit)
- Butir 37: Gunakan EnumMap alih-alih pengindeksan ordinal (Gunakan EnumMap untuk menggantikan pengindeksan ordinal)
- Butir 38: Meniru enum yang dapat diperluas dengan antarmuka (gunakan antarmuka untuk menyimulasikan enumerasi yang dapat diperluas)
- Butir 39: Lebih memilih anotasi daripada pola penamaan (anotasi lebih baik daripada pola penamaan)
- Butir 40: Gunakan anotasi Override secara konsisten (bersikeras menggunakan anotasi @Override)
- Butir 41: Gunakan antarmuka penanda untuk menentukan tipe
- Bab 7. Lambdas dan Aliran (λ ekspresi dan aliran)
- Bab 7 Pendahuluan
- Butir 42: Lebih memilih lambda daripada kelas anonim (ekspresi λ lebih baik daripada kelas anonim)
- Butir 43: Lebih memilih referensi metode daripada lambda (referensi metode lebih baik daripada ekspresi lambda)
- Butir 44: Mendukung penggunaan antarmuka fungsional standar
- Butir 45: Gunakan aliran dengan bijaksana
- Butir 46: Lebih memilih fungsi bebas efek samping di aliran (gunakan fungsi bebas efek samping di aliran)
- Butir 47: Lebih memilih Koleksi daripada Aliran sebagai tipe kembalian (Lebih Memilih Koleksi daripada aliran sebagai tipe kembalian)
- Butir 48: Berhati-hatilah saat membuat aliran paralel
- Bab 8. Metode
- Bab 8 Pendahuluan
- Butir 49: Periksa validitas parameter
- Butir 50: Buat salinan defensif bila diperlukan
- Butir 51: Merancang tanda tangan metode dengan hati-hati (merancang tanda tangan metode dengan cermat)
- Butir 52: Gunakan kelebihan beban dengan bijaksana
- Butir 53: Gunakan vararg dengan bijaksana
- Butir 54: Mengembalikan koleksi atau array kosong, bukan null (mengembalikan koleksi atau array kosong, bukan null)
- Butir 55: Kembalikan pilihan dengan bijaksana
- Butir 56: Tulis komentar dokumen untuk semua elemen API yang terbuka
- Bab 9. Pemrograman Umum
- Bab 9 Pendahuluan
- Butir 57: Minimalkan cakupan variabel lokal (minimalkan cakupan variabel lokal)
- Butir 58: Lebih memilih perulangan for-each daripada perulangan for tradisional (untuk setiap perulangan lebih baik daripada perulangan for tradisional)
- Butir 59: Mengetahui dan menggunakan perpustakaan
- Butir 60: Hindari float dan double jika diperlukan jawaban yang tepat (tipe float dan double harus dihindari jika diperlukan jawaban yang tepat)
- Butir 61: Lebih memilih tipe primitif daripada primitif kotak (Tipe data dasar lebih baik daripada kelas pembungkus)
- Butir 62: Hindari string yang tipe lainnya lebih sesuai (hindari penggunaan string ketika tipe lain lebih sesuai)
- Butir 63: Waspadai kinerja penggabungan string (waspada terhadap masalah kinerja yang disebabkan oleh penggabungan string)
- Butir 64: Merujuk objek berdasarkan antarmukanya
- Butir 65: Lebih memilih antarmuka daripada refleksi (Antarmuka lebih baik daripada refleksi)
- Butir 66: Gunakan metode asli dengan bijaksana
- Butir 67: Optimalkan dengan bijaksana
- Butir 68: Patuhi konvensi penamaan yang diterima secara umum
- Bab 10. Pengecualian
- Bab 10 Pendahuluan
- Butir 69: Gunakan pengecualian hanya untuk kondisi luar biasa
- Butir 70: Gunakan pengecualian yang dicentang untuk kondisi yang dapat dipulihkan dan pengecualian waktu proses untuk kesalahan pemrograman (gunakan pengecualian yang dicentang untuk kondisi yang dapat dipulihkan dan pengecualian waktu proses untuk kesalahan pemrograman)
- Butir 71: Hindari penggunaan pengecualian yang dicentang secara tidak perlu (Hindari penggunaan pengecualian yang dicentang secara tidak perlu)
- Butir 72: Mendukung penggunaan pengecualian standar (mendorong penggunaan kembali pengecualian standar)
- Butir 73: Melemparkan pengecualian yang sesuai dengan abstraksi (melemparkan pengecualian yang dapat dijelaskan dengan abstraksi)
- Butir 74: Dokumentasikan semua pengecualian yang diberikan oleh setiap metode (catat semua pengecualian yang diberikan oleh setiap metode)
- Butir 75: Sertakan informasi kegagalan pengambilan dalam pesan detail (Pesan detail pengecualian harus menyertakan informasi kegagalan pengambilan)
- Butir 76: Upayakan atomisitas kegagalan (cobalah yang terbaik untuk memastikan atomisitas kegagalan)
- Butir 77: Jangan abaikan pengecualian
- Bab 11. Konkurensi
- Bab 11 Pendahuluan
- Butir 78: Menyinkronkan akses ke data bersama yang dapat diubah
- Butir 79: Hindari sinkronisasi yang berlebihan
- Butir 80: Lebih memilih pelaksana, tugas, dan aliran daripada utas (Pelaksana, tugas, dan aliran lebih baik daripada menggunakan utas secara langsung)
- Butir 81: Lebih memilih utilitas konkurensi untuk menunggu dan memberi tahu (Utilitas konkurensi lebih baik daripada menunggu dan memberi tahu)
- Butir 82: Keamanan thread dokumen (Dokumen harus berisi atribut keamanan thread)
- Butir 83: Gunakan inisialisasi malas dengan bijaksana
- Butir 84: Jangan bergantung pada penjadwal thread (Jangan bergantung pada penjadwal thread)
- Bab 12. Serialisasi
- Bab 12 Pendahuluan
- Butir 85: Memilih alternatif selain serialisasi Java (lebih memilih alternatif selain serialisasi Java)
- Butir 86: Menerapkan Serializable dengan sangat hati-hati
- Butir 87: Pertimbangkan untuk menggunakan formulir serial khusus (Pertimbangkan untuk menggunakan formulir serial khusus)
- Butir 88: Tulis metode readObject secara defensif (tulis metode readObject secara defensif)
- Butir 89: Misalnya kontrol, pilih tipe enum daripada readResolve (Misalnya kontrol, tipe enum lebih baik daripada readResolve)
- Butir 90: Pertimbangkan proksi serialisasi alih-alih instans serial (Pertimbangkan proksi serialisasi alih-alih instans serial)