Rumah  >  Artikel  >  Java  >  Antara Muka dengan Medan Statik: Adakah Ia Bau Kod?

Antara Muka dengan Medan Statik: Adakah Ia Bau Kod?

Patricia Arquette
Patricia Arquetteasal
2024-10-31 09:17:01607semak imbas

 Interfaces with Static Fields: Are They a Code Smell?

Antaramuka dengan Medan Statik: Perangkap untuk Yang Tidak Berwaspada

Pemaju Java sering menghadapi antara muka dengan banyak medan statik yang digunakan sebagai "pemalar." Walaupun teknik ini nampaknya mudah, teknik ini secara amnya dianggap sebagai amalan buruk.

Isu utama dengan pendekatan ini ialah percambahan pemalar di seluruh kod. Melaksanakan kelas menjadikan semua medan statik sebahagian daripada antara muka awam mereka, walaupun ia hanya digunakan secara dalaman. Sebagai contoh, antara muka SwingConstants dilaksanakan oleh banyak kelas, secara sembarangan mendedahkan senarai pemalarnya yang luas kepada semua.

Arkitek perisian Josh Bloch juga memberi amaran terhadap corak ini:

"Melaksanakan antara muka yang berterusan menyebabkan [butiran pelaksanaan] untuk bocor ke dalam API yang dieksport kelas," katanya. "Ia mewakili komitmen: jika pada keluaran masa hadapan kelas diubah suai supaya ia tidak lagi perlu menggunakan pemalar, ia masih mesti melaksanakan antara muka untuk memastikan keserasian binari."

Alternatif kepada corak ini termasuk menggunakan enums atau mentakrifkan pemalar sebagai medan statik awam dalam kelas tidak boleh segera. Kaedah ini membenarkan kelas lain mengakses pemalar tanpa mengacaukan API mereka sendiri atau melanggar Prinsip Pengekapan.

Kesimpulannya, sementara antara muka dengan medan statik mungkin kelihatan menawarkan beberapa utiliti, ia memperkenalkan kerumitan yang tidak perlu dan isu penyelenggaraan yang berpotensi. Apabila bekerja dengan pemalar, pertimbangkan untuk menggunakan enum atau kelas tidak boleh segera sebagai pilihan yang lebih sesuai dan boleh diselenggara.

Atas ialah kandungan terperinci Antara Muka dengan Medan Statik: Adakah Ia Bau Kod?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn