Saya menggunakan final
semua waktu untuk atribut objek.
Kata final
kunci memiliki semantik visibilitas ketika digunakan pada atribut objek. Pada dasarnya, pengaturan nilai atribut objek akhir terjadi sebelum konstruktor kembali. Ini berarti bahwa selama Anda tidak membiarkan this
referensi keluar dari konstruktor dan Anda gunakan final
untuk semua atribut Anda, objek Anda (di bawah Java 5 semantik) dijamin akan dibangun dengan benar, dan karena itu juga tidak dapat diubah maka dapat dipublikasikan dengan aman ke utas lainnya.
Objek yang tidak bisa diubah bukan hanya tentang keamanan benang. Mereka juga membuatnya jauh lebih mudah untuk beralasan tentang transisi negara dalam program Anda, karena ruang dari apa yang dapat diubah adalah sengaja dan, jika digunakan secara konsisten, sepenuhnya terbatas hanya pada hal-hal yang harus diubah.
Terkadang saya juga membuat metode final, tetapi tidak sesering itu. Saya jarang membuat kelas final. Saya biasanya melakukan ini karena saya tidak perlu banyak. Saya biasanya tidak menggunakan banyak warisan. Saya lebih suka menggunakan antarmuka dan komposisi objek sebagai gantinya - ini juga cocok untuk desain yang saya temukan sering lebih mudah untuk diuji. Ketika Anda kode ke antarmuka bukan kelas konkret, maka Anda tidak perlu menggunakan warisan saat Anda menguji, karena, dengan kerangka kerja seperti jMock, jauh lebih mudah untuk membuat objek tiruan dengan antarmuka daripada dengan kelas beton.
Saya kira saya harus membuat sebagian besar kelas saya final, tetapi saya belum masuk ke habbit.