Pertanyaan ini adalah tentang apakah membuat kelas bersarang di Jawa menjadi kelas bersarang statis atau kelas bersarang dalam. Saya mencari di sekitar sini dan di Stack Overflow, tetapi tidak bisa menemukan pertanyaan mengenai implikasi desain dari keputusan ini.
Pertanyaan yang saya temukan menanyakan tentang perbedaan antara kelas bersarang statis dan batin, yang jelas bagi saya. Namun, saya belum menemukan alasan yang meyakinkan untuk pernah menggunakan kelas bersarang statis di Jawa - dengan pengecualian kelas anonim, yang saya tidak mempertimbangkan untuk pertanyaan ini.
Inilah pemahaman saya tentang efek menggunakan kelas bersarang statis:
- Kurang kopling: Kami umumnya mendapatkan lebih sedikit kopling, karena kelas tidak dapat langsung mengakses atribut kelas luarnya. Kurang kopling umumnya berarti kualitas kode yang lebih baik, pengujian lebih mudah, refactoring, dll.
- Tunggal
Class
: Pemuat kelas tidak perlu mengurus kelas baru setiap kali, kami membuat objek dari kelas luar. Kami hanya mendapatkan objek baru untuk kelas yang sama berulang kali.
Untuk kelas dalam, saya biasanya menemukan bahwa orang menganggap akses ke atribut kelas luar sebagai pro. Saya mohon untuk berbeda dalam hal ini dari sudut pandang desain, karena akses langsung ini berarti kita memiliki sambungan tinggi dan jika kita ingin mengekstraksi kelas bersarang ke dalam kelas tingkat atas yang terpisah, kita hanya dapat melakukannya setelah mengubah itu menjadi kelas bersarang statis.
Jadi pertanyaan saya sampai pada ini: Apakah saya salah dalam mengasumsikan bahwa akses atribut yang tersedia untuk kelas dalam non-statis mengarah ke kopling tinggi, maka untuk kualitas kode yang lebih rendah, dan bahwa saya menyimpulkan dari ini bahwa kelas bersarang (non-anonim) harus umumnya statis?
Atau dengan kata lain: Apakah ada alasan yang meyakinkan mengapa seseorang lebih memilih kelas batin yang bersarang?