Apabila membina sistem perisian yang kompleks, pembangun sering menggunakan if-else yang panjang atau menukar kenyataan untuk mengendalikan logik membuat keputusan.
Walaupun pendekatan ini boleh berfungsi, pendekatan ini menjadi tidak terurus dengan cepat apabila bilangan keadaan bertambah. Di sinilah jadual keputusan masuk.
Corak berkuasa tetapi kurang digunakan yang memudahkan proses membuat keputusan yang rumit dengan cara yang bersih dan boleh diselenggara.
Dalam artikel ini, kami akan meneroka apakah jadual keputusan, sebab anda perlu menggunakannya dan cara melaksanakannya dalam TypeScript untuk mengendalikan logik yang kompleks dengan mudah.
Jadual keputusan ialah cara berstruktur untuk memetakan pelbagai kombinasi keadaan input kepada tindakan atau hasil yang sepadan. Fikirkannya sebagai jadual di mana setiap baris mewakili gabungan unik pembolehubah input, dan lajur yang sepadan mentakrifkan output atau tindakan. Ini membolehkan anda menggambarkan semua senario yang mungkin di satu tempat, menjadikannya lebih mudah untuk diurus dan difahami.
Sebagai contoh, katakan anda sedang membina platform e-dagang dan perlu menghantar templat e-mel yang berbeza kepada pengguna berdasarkan status pelanggan mereka, sejarah pembelian, promosi yang tersedia dan bahasa pilihan.
Dengan 3 pembolehubah boolean (isGoldCustomer, isFirstPurchase, isPromoAvailable) dan satu pembolehubah enum (emailLanguage), terdapat 24 kemungkinan kombinasi untuk dikendalikan.
Tetapi daripada menulis 24 if-else atau menukar kes, jadual keputusan menyediakan penyelesaian yang lebih bersih.
Jadual keputusan menawarkan beberapa kelebihan berbanding logik bersyarat tradisional:
Mari kita mendalami cara melaksanakan jadual keputusan dalam TypeScript.
Cara paling mudah untuk melaksanakan jadual keputusan dalam TypeScript ialah menggunakan tatasusunan objek. Setiap objek mewakili satu baris dalam jadual keputusan.
Kemudian anda boleh menggunakan kaedah cari tatasusunan untuk mencari baris yang sepadan dengan pembolehubah input dan mengembalikan nilai output yang sepadan.
type TEmailLanguage = 'en' | 'es' | 'fr'; interface IDecisionTableRow { //These are the input values that determine the output value isGoldCustomer: boolean; isFirstPurchase: boolean; isPromoAvailable: boolean; emailLanguage: TEmailLanguage; // The last property is the output value template: string; }; const DECISION_TABLE: IDecisionTableRow[] = [ { isGoldCustomer: true, isFirstPurchase: true, isPromoAvailable: true, emailLanguage: 'en', template: 'welcome_en.html', }, { isGoldCustomer: true, isFirstPurchase: true, isPromoAvailable: true, emailLanguage: 'es', template: 'welcome_es.html', }, { isGoldCustomer: true, isFirstPurchase: true, isPromoAvailable: true, emailLanguage: 'fr', template: 'welcome_fr.html', }, // more rows... ]; const getTemplate = ( isGoldCustomer: boolean, isFirstPurchase: boolean, isPromoAvailable: boolean, emailLanguage: EmailLanguage ): string => { const row = decisionTable.find( (row) => row.emailLanguage === emailLanguage && row.isGoldCustomer === isGoldCustomer && row.isFirstPurchase === isFirstPurchase && row.isPromoAvailable === isPromoAvailable ); if (!row) { throw new Error('No matching row in decision table'); } return row.template; };
Dalam contoh ini, kami mempunyai tatasusunan objek yang dipanggil DECISION_TABLE yang mewakili jadual keputusan.
Setiap objek mempunyai 4 sifat yang mewakili pembolehubah input dan 1 sifat yang mewakili nilai output.
Fungsi getTemplate mengambil pembolehubah input sebagai argumen dan menggunakan kaedah cari untuk mencari baris dalam jadual keputusan yang sepadan dengan pembolehubah input.
Jika tiada baris ditemui, fungsi tersebut menimbulkan ralat.
Dan itu sahaja! Anda kini mempunyai cara yang bersih dan boleh diselenggara untuk mengendalikan logik kompleks yang bergantung pada berbilang pembolehubah input.
Jadual keputusan menawarkan pendekatan yang berkuasa dan berkesan untuk mengurus logik membuat keputusan yang kompleks dalam TypeScript. Dengan menyediakan perwakilan peraturan yang jelas dan berstruktur, ia meningkatkan kebolehbacaan kod, kebolehselenggaraan dan kebolehskalaan. Dengan mengguna pakai jadual keputusan dalam projek anda, anda boleh meningkatkan kualiti dan kecekapan keseluruhan pangkalan kod anda.
Jadi apabila anda mendapati diri anda menulis sekumpulan pernyataan if-else atau menukar pernyataan untuk mengendalikan logik yang kompleks, pertimbangkan untuk menggunakan jadual keputusan.
Selamat pengekodan!
Atas ialah kandungan terperinci Jadual Keputusan dalam TypeScript: Corak Diremehkan untuk Kod Lebih Bersih. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!