Baru-baru ini saya datang di basis kode python cukup besar dengan banyak MyClassAbstractFactory
, MyClassManager
, MyClassProxy
, MyClassAdapter
dll kelas.
Sementara di satu sisi nama-nama menunjuk saya untuk penelitian dan mempelajari pola yang sesuai, mereka tidak sangat deskriptif apa kelas tidak .
Juga, mereka tampaknya jatuh dalam daftar terlarang kata dalam pemrograman: variable
, process_available_information
, data
, amount
, compute
: nama terlalu luas, yang tidak menceritakan apa-apa tentang fungsi bila digunakan sendiri .
Jadi haruskah ada CommunicationManager
atau lebih tepatnya PortListener
? Atau mungkin saya tidak mengerti masalahnya sama sekali ...?
design-patterns
naming
Vorac
sumber
sumber
Fctory
bukanFactory
, atau itu hanya salah ketik?Jawaban:
AbstractFactory
memang pilihan yang buruk untuk sebuah nama. Tidak ada cara untuk mengetahui apa yang dibuat oleh pabrik ini , dan ketika Anda akan mencari entitas yang membuatAnimal
s, Anda tidak akan pernah menemukan pabrik yang sesuai dengan namanya.AnimalAbstractFactory
juga bukan pilihan yang bijak, karena di sebagian besar bahasa, itu akan berlebihan denganabstract
kata kunci dalam tanda tangan.Makhluk ini mengatakan, ada beberapa alasan bagus, disorot oleh komentar, untuk benar-benar dimasukkan
Abstract
dalam nama: tidak hanya ada beberapa konteks di mana Anda tidak memiliki tanda tangan lengkap, tetapi hanya nama, tetapi juga, menjagaAnimalFactory
antarmuka mungkin merupakan pilihan bijak (kecuali, sayangnya, konvensi bahasa / kerangka adalah untuk awalan antarmuka denganI
).AnimalCreationUtility
juga akan menjadi pilihan yang buruk: jika itu adalah pabrik , buat segalanya lebih mudah bagi orang-orang yang akan membaca kode, dan menyebutnya sebuah pabrik .abstract AnimalFactory
tidak apa-apa. Ia tidak memiliki redundansi, dan jelas bahwa itu adalah sebuah abstrak pabrik yang delegasi penciptaan hewan untuk anak-anaknya.Jadi ya, termasuk nama pola desain adalah ide yang bagus, tetapi seharusnya hanya bagian dari nama, dan tidak boleh berlebihan dengan bagian lain dari tanda tangan.
sumber
Tergantung pada contoh spesifik. Pola Builder hampir selalu dilayani dengan menamai kelas Anda * Builder, sementara Singleton biasanya tidak perlu dinamai demikian.
Jika Anda tidak memasukkan nama pola di nama kelas Anda, dan mungkin bahkan jika Anda melakukannya, Anda biasanya harus memberikan komentar di kelas yang menjelaskan bahwa itu menerapkan pola tertentu.
sumber
...Factory
, itu menjadi mental yang cukup untuk menyadari kelas adalah pabrik jika penamaannya melanggar konvensi itu.Inti dari menggunakan nama pola di kelas adalah untuk membuatnya mudah untuk memahami apa yang dikerjakan kelas. Jika Anda menamai kelas AnimalFactory, jelaslah bahwa kelas menciptakan instance Animal. Jika nama kelas Anda menyertakan nama suatu pola dan itu tidak menjelaskan apa yang dilakukannya, Anda telah memilih pola yang salah atau menerapkannya secara tidak benar.
sumber
Saya pikir itu bisa bekerja dengan sangat baik. Sebagai contoh:
sumber