Saya biasanya melewati beberapa langkah dengan masalah ini, berhenti ketika tidak tahu bagaimana melangkah lebih jauh.
Pertama, lakukan apa yang telah Anda lakukan. Go hard dengan KERING. Jika Anda tidak berakhir dengan kekacauan besar berbulu, Anda sudah selesai. Jika, seperti dalam kasus Anda, Anda tidak memiliki kode duplikat tetapi setiap boolean memiliki nilainya diperiksa di 20 tempat yang berbeda, lanjutkan ke langkah berikutnya.
Kedua, pisahkan kodenya menjadi blok. Para boolean masing-masing direferensikan hanya sekali (well, mungkin dua kali kadang-kadang) untuk mengarahkan eksekusi ke blok yang tepat. Dengan dua booleans, Anda berakhir dengan empat blok. Setiap blok hampir identik. KERING sudah hilang. Jangan jadikan setiap blok metode terpisah. Itu akan lebih elegan, tetapi menempatkan semua kode dalam satu metode membuatnya lebih mudah, atau bahkan mungkin, bagi siapa pun yang melakukan pemeliharaan untuk melihat bahwa mereka harus membuat setiap perubahan di empat tempat. Dengan kode yang terorganisir dengan baik dan monitor yang tinggi, perbedaan dan kesalahan akan hampir jelas. Anda sekarang memiliki kode yang dapat dipelihara dan akan berjalan lebih cepat daripada kekacauan asli yang kusut.
Ketiga, cobalah untuk mengambil duplikat baris kode dari masing-masing blok Anda dan menjadikannya metode yang bagus dan sederhana. Terkadang kamu tidak bisa melakukan apa-apa. Terkadang kamu tidak bisa berbuat banyak. Tetapi setiap sedikit yang Anda lakukan bergerak Anda kembali ke KERING dan membuat kode sedikit lebih mudah untuk diikuti dan lebih aman untuk dipelihara. Idealnya, metode asli Anda mungkin berakhir tanpa kode duplikat. Pada titik itu, Anda mungkin ingin membaginya menjadi beberapa metode tanpa parameter boolean atau Anda mungkin tidak. Kenyamanan kode panggilan sekarang menjadi perhatian utama.
Saya menambahkan jawaban saya ke sejumlah besar sudah ada di sini karena langkah kedua. Saya benci kode duplikat, tetapi jika itu satu-satunya cara yang dapat dipahami untuk menyelesaikan masalah, lakukanlah sedemikian rupa sehingga siapa pun akan tahu sekilas apa yang Anda lakukan. Gunakan banyak blok dan hanya satu metode. Buat blok seidentik mungkin dalam nama, spasi, keberpihakan, ... semuanya. Perbedaan kemudian harus melompat pada pembaca. Mungkin membuatnya jelas bagaimana menulis ulang dengan cara KERING, dan jika tidak, mempertahankannya akan cukup mudah.
createTrajectory...
semua fungsi publik disebut?