Saya seorang pengembang lama (saya 49) tetapi agak baru untuk pengembangan berorientasi objek. Saya telah membaca tentang OO sejak Bertrand Meyer Eiffel, tetapi telah melakukan sedikit pemrograman OO.
Intinya adalah setiap buku tentang desain OO dimulai dengan contoh perahu, mobil atau benda umum apa pun yang sering kita gunakan, dan mereka mulai menambahkan atribut dan metode, dan menjelaskan bagaimana mereka memodelkan keadaan objek dan apa yang dapat dilakukan dengan saya t.
Jadi mereka biasanya melakukan sesuatu seperti "semakin baik model semakin baik itu mewakili objek dalam aplikasi dan semakin baik semuanya keluar".
Sejauh ini sangat baik, tetapi, di sisi lain, saya telah menemukan beberapa penulis yang memberikan resep seperti "kelas harus sesuai hanya dalam satu halaman" (saya akan menambahkan "pada ukuran monitor apa?" Sekarang kami mencoba untuk tidak untuk mencetak kode!).
Ambil contoh sebuah PurchaseOrder
kelas, yang memiliki mesin keadaan terbatas yang mengendalikan perilakunya dan kumpulan PurchaseOrderItem
, salah satu argumen di sini di tempat kerja adalah bahwa kita harus menggunakan PurchaseOrder
kelas sederhana, dengan beberapa metode (sedikit lebih dari kelas data), dan memiliki sebuah PurchaseOrderFSM
“kelas ahli” yang menangani mesin negara yang terbatas untuk PurchaseOrder
.
Saya akan mengatakan bahwa jatuh dalam klasifikasi "Cemburu Fitur" atau "Keintiman Tidak Pantas" klasifikasi Jeff Atwood's Kode Bau posting di Coding Horror. Saya hanya menyebutnya akal sehat. Jika saya dapat mengeluarkan, menyetujui atau membatalkan pesanan pembelian saya yang sebenarnya, maka PurchaseOrder
kelas tersebut harus memiliki issuePO
, approvePO
dan cancelPO
metode.
Bukankah itu sesuai dengan prinsip-prinsip lama “maksimalkan kohesi” dan “perkecil kopling” yang saya pahami sebagai landasan OO?
Selain itu, tidakkah hal itu membantu mempertahankan kelas?
PurchaseOrder
, Anda hanya bisa nama metode Andaissue
,approve
dancancel
. ThePO
akhiran menambahkan hanya nilai negatif.