Sebagai proyek menyenangkan yang cepat, saya mencoba menulis permainan solitaire. Tetapi ketika mulai menulis sistem aturan, saya merasa kotor , karena kode saya merasa benar-benar tidak terstruktur dan tidak dapat dipertahankan , terutama karena logika permainan saya adalah kode spaghetti yang lengkap.
Saya pernah mengalami masalah ini sebelumnya, dan selalu merasa canggung ketika menulis bagian dari program saya ini, jadi saya bertanya-tanya, apakah ada praktik terbaik yang telah dicoba dan diuji dalam hal mendefinisikan aturan dalam permainan ?
design-patterns
Dasuraga
sumber
sumber
Jawaban:
Saya tidak berpikir ada solusi unik karena banyak cosiderations berasal dari masalah khusus.
Anda dapat menggunakan pola Pengendali Tampilan Model: ini memindahkan (membatasi) masalah Anda ke "cara menerapkan perilaku pada pengontrol", sebuah beahaviour yang selalu mengikuti aturan.
Kecuali jika kita berbicara tentang aturan yang sangat sederhana, cara Anda mengaturnya menimbulkan masalah ekspresi . Anda selalu menghadapi tuntutan yang saling bertentangan yaitu sederhana (terstruktur) dan ekspresif (menulis aturan yang menyenangkan).
Menggunakan MVC menyederhanakan pekerjaan Anda karena model memformalkan keadaan yaitu konteks di mana aturan ditegakkan.
Mengatakan bahwa, Anda mungkin menemukan manfaatnya untuk mengimplementasikan Pengendali menggunakan pola Strategi dan / atau pola Negara untuk menyusun perilaku yang kompleks dalam hal perilaku yang dapat dipindahkan yang lebih sederhana. Pola Rantai-of-resposibilitas dapat membantu Anda untuk mengekspresikan aturan sementara mesin State harus digunakan dengan hati-hati karena "negara" -nya sebagian tumpang tindih makna model "negara".
Menggunakan pola Command di dalam Controller mungkin berguna untuk mengurangi tanggung jawab Controller (Command tahu bagaimana menangani model) dan membuatnya mudah untuk menambahkan fungsi undo / redo di Controller.
Bagaimanapun, Anda harus mencoba menggunakan pola desain sebagai pedoman: mereka berguna untuk menghindari menciptakan kembali roda, terutama roda persegi, tetapi tidak setiap solusi masalah terdiri dari sekelompok (putaran) roda disatukan.
sumber
Saya tidak yakin tentang menjadi yang terbaik atau bahkan baik, tetapi saya biasanya menggunakan pola Pengamat . Itu bekerja cukup baik untuk saya.
sumber
Kecuali Anda sudah melakukan pekerjaan berkali-kali sebelumnya, Anda akan selalu berakhir dengan kode spaghetti. Sebenarnya, pada titik ini, Anda baru saja memulai: apa yang Anda miliki adalah konsep kasar dari spesifikasi awal. Lihatlah beberapa saran lain di sini dan lakukan penulisan ulang yang serius. Dan kemudian beberapa penulisan ulang, dan kemudian .... Secara pribadi, saya tidak pernah yakin apakah saya mendapatkan kode saya ke dalam bentuk yang sangat bagus atau hanya bosan menulis ulang, tetapi saya tampaknya benar pada akhirnya.
Atasi masalah dari dua ujung. Cobalah untuk mendapatkan desain keseluruhan yang masuk akal dan pilih bagian-bagian kecil yang menangani tugas-tugas sederhana dan membuatnya benar. Kemudian cobalah untuk bekerja dengan cara Anda dari kedua ujung ke tengah. Dan kemudian bekerja dari belakang tengah ke kedua ujungnya. Lalu dari atas ke bawah, lalu dari bawah ke atas. Kemudian ulangi seluruh proses.
Pada dasarnya, apa yang Anda miliki adalah kumpulan kelas. Pertimbangkan kelas A. Jika kelas A dibangun dengan baik, kelas-kelas yang menggunakannya akan otomatis bekerja lebih baik, betapapun buruknya mereka. Jika kelas A menggunakan kelas dengan baik, kelas yang digunakan akan melakukan lebih banyak, baik atau buruknya mereka . Jadi, atur kelas Anda sebaik mungkin, lalu pastikan masing-masing kelas terbaik yang bisa dicapai.
Sangat penting untuk mendapatkannya semaksimal mungkin. Kode yang buruk akan menghantui Anda sampai hari Anda membuangnya. Dengan perangkat lunak, sedikit pemolesan ekstra selalu terbayar. (Kecuali tidak ada yang akhirnya menggunakan kode ....)
Singkatnya: periksa saran aktual yang diberikan dalam jawaban lain, lalu tulis ulang kode Anda sampai Anda mendapatkan sesuatu yang Anda sukai.
sumber