Mendapatkan nama yang bagus dan tepat untuk kelas sangatlah sulit. Jika dilakukan dengan benar, ini membuat kode lebih terdokumentasi sendiri dan memberikan kosakata untuk penalaran tentang kode pada tingkat abstraksi yang lebih tinggi.
Kelas yang menerapkan pola desain tertentu mungkin diberi nama berdasarkan nama pola terkenal (misalnya FooFactory, FooFacade), dan kelas yang secara langsung memodelkan konsep domain dapat mengambil namanya dari domain masalah, tetapi bagaimana dengan kelas lain? Apakah ada tesaurus programmer yang bisa saya gunakan ketika saya kekurangan inspirasi, dan ingin menghindari penggunaan nama kelas umum (seperti FooHandler, FooProcessor, FooUtils, dan FooManager)?
Jawaban:
Saya akan mengutip beberapa bagian dari Pola Implementasi oleh Kent Beck:
Nama Superclass Sederhana
Nama Subclass Berkualifikasi
Antarmuka
Untuk pembahasan lebih detail, beli bukunya! Itu sangat berharga! :)
sumber
Selalu gunakan MyClassA, MyClassB - Ini memungkinkan untuk jenis alfa yang bagus ..
Aku bercanda!
Ini adalah pertanyaan yang bagus, dan sesuatu yang saya alami belum lama ini. Saya sedang mengatur ulang basis kode saya di tempat kerja dan mengalami masalah di mana harus meletakkan apa, dan apa namanya ..
Masalah sebenarnya ?
Aku terlalu banyak mengikuti kelas. Jika Anda mencoba untuk mengikuti prinsip tanggung jawab tunggal itu akan membuat semuanya menjadi jauh lebih baik .. Daripada satu kelas PrintHandler monolitik , Anda dapat memecahnya menjadi PageHandler , PageFormatter (dan seterusnya) dan kemudian memiliki kelas Pencetak master yang mana menyatukan semuanya.
Dalam re-org saya, butuh waktu, tetapi saya akhirnya mengumpulkan banyak kode duplikat, membuat basis kode saya jauh lebih logis dan belajar banyak ketika harus berpikir sebelum melempar metode tambahan di kelas: D
Namun saya tidak akan merekomendasikan untuk memasukkan hal-hal seperti nama pola ke dalam nama kelas. Antarmuka kelas harus membuatnya jelas (seperti menyembunyikan konstruktor untuk singleton). Tidak ada yang salah dengan nama generik, jika kelas melayani tujuan umum.
Semoga berhasil!
sumber
Pembicaraan Josh Bloch yang sangat baik tentang desain API yang baik memiliki beberapa saran bagus:
Jika masalah Anda adalah apa yang harus dinamai kelas internal yang terbuka, mungkin Anda harus menggabungkannya ke dalam kelas yang lebih besar.
Jika masalah Anda adalah menamai kelas yang melakukan banyak hal berbeda, Anda harus mempertimbangkan untuk memecahnya menjadi beberapa kelas.
Jika itu adalah saran yang bagus untuk API publik maka tidak ada salahnya untuk kelas lain.
sumber
Jika Anda terjebak dengan nama, kadang-kadang hanya memberikan setiap nama setengah-masuk akal dengan komitmen untuk merevisi nanti adalah strategi yang baik.
Jangan mengalami kelumpuhan penamaan. Ya, nama itu sangat penting tetapi tidak cukup penting untuk membuang banyak waktu. Jika Anda tidak dapat menemukan nama yang baik dalam 10 menit, lanjutkan.
sumber
Jika nama yang baik tidak muncul dalam pikiran, saya mungkin akan mempertanyakan apakah ada masalah yang lebih dalam - apakah kelas memiliki tujuan yang baik? Jika ya, menamainya harus cukup mudah.
sumber
Jika "FooProcessor" Anda benar-benar memproses foo, jangan segan-segan memberikan nama tersebut hanya karena Anda sudah memiliki BarProcessor, BazProcessor, dll. Jika ragu, jelaslah yang terbaik. Pengembang lain yang harus membaca kode Anda mungkin tidak menggunakan tesaurus yang sama dengan Anda.
Meskipun demikian, lebih spesifik tidak ada salahnya untuk contoh khusus ini. "Proses" adalah kata yang cukup luas. Apakah itu benar-benar sebuah "FooUpdateProcessor" (yang mungkin menjadi "FooUpdater"), misalnya? Anda tidak harus terlalu "kreatif" tentang penamaannya, tetapi jika Anda yang menulis kode, Anda mungkin memiliki gagasan yang cukup baik tentang apa yang dilakukannya dan tidak lakukan.
Terakhir, ingatlah bahwa nama kelas telanjang bukanlah semua yang Anda dan pembaca kode harus teruskan - biasanya ada ruang nama yang juga digunakan. Itu sering kali dapat memberikan konteks yang cukup kepada pembaca untuk melihat dengan jelas untuk apa kelas Anda sebenarnya, meskipun nama kosongnya cukup umum.
sumber