TypeScript 中的決策表:一種被低估的簡潔程式碼模式
在構建複雜的軟體系統時,開發人員經常訴諸冗長的 if-else 或 switch 語句來處理決策邏輯。 雖然這些方法可行,但隨著情況數量的增加,它們很快就會變得難以管理。這就是決策表發揮作用的地方。一種強大但未充分利用的模式,以乾淨、可維護的方式簡化複雜的決策。在本文中,我們將探討什麼是決策表、為什麼應該使用它們,以及如何在 typescript 中實現它們以輕鬆處理複雜的邏輯。 什麼是決策表?決策表是一種將輸入條件的各種組合對映到相應的操作或結果的結構化方法。將其視為一個表,其中每行代表輸入變數的唯一組合,相應的列定義輸出或操作。這使您可以在一個地方視覺化所有可能的場景,從而更易於管理和理解。例如,假設您正在構建一個電子商務平臺,需要根據使用者的客戶狀態、購買歷史記錄、可用促銷和首選語言向使用者傳送不同的電子郵件模板。使用 3 個布林變數(isgoldcustomer、isfirstpurchase、ispromoavailable)和一個列舉變數(emaillanguage),可以處理 24 種可能的組合。但是決策表提供了一個更清晰的解決方案,而不是編寫 24 個 if-else 或 switch case。 為什麼使用決策表?與傳統條件邏輯相比,決策表具有多種優勢:提高可讀性:單個表格捕獲所有可能的組合,使其更容易一目瞭然。更容易維護:修改邏輯變得像更新表中的單行一樣簡單,而不是梳理巢狀條件行。可擴充套件性:決策表可以處理更復雜的決策場景,而不會變得難以管理。讓我們深入瞭解如何在 typescript 中實現決策表。 如何在 typescript 中實現決策表在 typescript 中實現決策表的最簡單方法是使用物件陣列。每個物件代表決策表中的一行。然後就可以使用陣列的find方法來查詢與輸入變數匹配的行並返回相應的輸出值。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;};登入後複製在此示例中,我們有一個名為 decision_table 的物件陣列,它表示決策表。每個物件都有 4 個表示輸入變數的屬性和 1 個表示輸出值的屬性。gettemplate 函式將輸入變數作為引數,並使用 find 方法在決策表中查詢與輸入變數匹配的行。如果沒有找到行,函式會丟擲錯誤。就是這樣!您現在擁有一種乾淨、可維護的方式來處理依賴於多個輸入變數的複雜邏輯。 其他注意事項規則優先順序:如果多個規則匹配輸入條件,您可能需要定義優先順序機制來確定正確的輸出。預設值:考慮提供預設輸出,以防找不到匹配規則。資料驗證:實施驗證以確保輸入值有效且在預期範圍內。 結論決策表提供了一種強大而有效的方法來管理 typescript 中的複雜決策邏輯。透過提供清晰且結構化的規則表示,它們增強了程式碼的可讀性、可維護性和可擴充套件性。透過在專案中採用決策表,您可以提高程式碼庫的整體質量和效率。因此,下次您發現自己編寫了一堆 if-else 語句或 switch 語句來處理複雜邏輯時,請考慮使用決策表。編碼愉快! 以上就是TypeScript 中的決策表:一種被低估的簡潔程式碼模式的詳細內容,更多請關注我的其它相關文章!
相關文章
- Typescript 程式碼整潔之道TypeScript
- 決策表模式: 一種業務規則引擎實現方式模式
- drools決策表的簡單使用
- 在 Laravel 中編寫簡潔的程式碼的策略Laravel
- 如何編寫簡潔的程式碼?
- 程式碼簡潔的十條建議
- JavaScript程式碼簡潔之道JavaScript
- JavaScript 程式碼簡潔之道JavaScript
- 被低估的AVG遊戲遊戲
- 在typescript專案中解決cycle依賴的一種方案TypeScript
- async/await 是如何讓程式碼更加簡潔的?AI
- Filament 被低估的5個特性
- RSS 一種簡潔優雅的資料訂閱方式
- JS程式碼簡潔之道--函式JS函式
- Clean Code PHP 程式碼簡潔之道PHP
- 最被低估的Vscode外掛列表VSCode
- 英雄互娛,一家被低估的遊戲公司遊戲
- 程式碼簡潔之道:編寫乾淨的 React Components & JSXReactJS
- JDK新特性——Stream程式碼簡潔之道的詳細用法JDK
- PHP程式碼簡潔之道——函式部分PHP函式
- PHP程式碼簡潔之道——變數部分PHP變數
- JAVA基礎之程式碼簡潔之道Java
- 分享常用的CSS函式,助你寫出更簡潔的程式碼CSS函式
- 被低估的騰訊雲資料庫資料庫
- 三大最被低估的安全技術使用者數量決定一切
- 一個簡潔、乾淨的中後臺管理模板
- 整潔的 Table View 程式碼View
- Spring Boot 整合 Lombok 讓程式碼更簡潔Spring BootLombok
- 你應該知道的 5 種 TypeScript設計模式TypeScript設計模式
- (譯)保持你的程式碼整潔
- 如何寫出整潔的程式碼
- 設計模式在 TypeScript 中的應用 – 策略模式設計模式TypeScript
- 五個簡單的原則,帶你寫出整潔程式碼
- 使用 Macro 讓你的程式碼更簡潔,更具有可讀性Mac
- 26歲的Insomniac,和被低估的《瑞奇與叮噹》
- ASML還是被低估了?ASM
- { [key: string]: any } 是 TypeScript 中的一種型別註解TypeScript型別
- 一個簡潔的個人部落格