Beberapa waktu yang lalu saya telah membaca sebuah artikel (saya percaya sebuah entri blog) yang menempatkan saya di jalur yang "benar" pada objek penamaan: Menjadi sangat sangat teliti tentang penamaan hal-hal dalam program Anda.
Misalnya jika aplikasi saya (sebagai aplikasi bisnis biasa) menangani pengguna, perusahaan, dan alamat, saya akan memiliki User
, Company
dan Address
kelas domain - dan mungkin di suatu tempat UserManager
, CompanyManager
dan AddressManager
akan muncul yang menangani hal-hal itu.
Jadi bisakah Anda tahu apa itu UserManager
, CompanyManager
dan AddressManager
lakukan? Tidak, karena Manajer adalah istilah yang sangat umum yang cocok untuk apa pun yang dapat Anda lakukan dengan objek domain Anda.
Artikel yang saya baca direkomendasikan menggunakan nama yang sangat spesifik. Jika itu adalah aplikasi C ++ dan UserManager
pekerjaan itu mengalokasikan dan membebaskan pengguna dari tumpukan itu tidak akan mengatur pengguna tetapi menjaga kelahiran dan kematian mereka. Hmm, mungkin kita bisa menyebutnya a UserShepherd
.
Atau mungkin UserManager
tugasnya adalah untuk memeriksa data setiap objek Pengguna dan menandatangani data secara kriptografis. Maka kita akan punya UserRecordsClerk
.
Sekarang ide ini macet dengan saya, saya mencoba menerapkannya. Dan menemukan ide sederhana ini sangat sulit.
Saya dapat menjelaskan apa yang dikerjakan oleh kelas dan (selama saya tidak masuk ke pengkodean cepat & kotor), kelas yang saya tulis melakukan satu hal. Apa yang saya rindukan dari deskripsi ke nama adalah semacam katalog nama, kosa kata yang memetakan konsep ke nama.
Pada akhirnya saya ingin memiliki sesuatu seperti katalog pola dalam pikiran saya (seringkali pola desain dengan mudah memberikan nama objek, misalnya pabrik )
- Pabrik - Membuat objek lain (penamaan diambil dari pola desain)
- Shepherd - Seorang gembala menangani masa objek, penciptaan dan penutupannya
- Sinkronisasi - Menyalin data antara dua objek atau lebih (atau hierarki objek)
Pengasuh - Membantu benda mencapai keadaan "dapat digunakan" setelah penciptaan - misalnya dengan menghubungkan kabel ke objek lain
dll.
Jadi, bagaimana Anda menangani masalah itu? Apakah Anda memiliki perbendaharaan kata yang tetap, apakah Anda menemukan nama baru dengan cepat atau apakah Anda menganggap penamaan hal-hal yang tidak begitu penting atau salah?
PS: Saya juga tertarik dengan tautan ke artikel dan blog yang membahas masalah ini. Sebagai permulaan, inilah artikel asli yang membuat saya berpikir tentang hal ini: Memberi Penamaan Kelas Java tanpa 'Manajer'
Pembaruan: Ringkasan jawaban
Inilah sedikit ringkasan dari apa yang saya pelajari dari pertanyaan ini sementara itu.
- Cobalah untuk tidak membuat metafora baru (Nanny)
- Lihatlah apa yang dilakukan kerangka kerja lainnya
Artikel / buku lebih lanjut tentang topik ini:
- Apa nama yang Anda temukan sendiri / tambahkan ke kelas secara teratur?
- Apa pendekatan terbaik untuk penamaan kelas?
- Buku: Pola Desain: Elemen-elemen Perangkat Lunak Berorientasi Objek yang Dapat Digunakan Kembali (Hardcover)
- Buku: Pola Arsitektur Aplikasi Perusahaan (Hardcover)
- Buku: Pola Implementasi (Paperback)
Dan daftar awalan nama / sufiks yang saya kumpulkan (secara subyektif!) Dari jawaban:
- Koordinator
- Pembangun
- Penulis
- Pembaca
- Handler
- Wadah
- Protokol
- Target
- Konverter
- Pengendali
- Melihat
- Pabrik
- Kesatuan
- Ember
Dan tip yang bagus untuk jalan:
Jangan lumpuh penamaan. Ya, nama itu sangat penting tetapi itu tidak cukup penting untuk menghabiskan banyak waktu. Jika Anda tidak dapat menemukan nama baik dalam 10 menit, lanjutkan.