圖片來源 相信身為軟體工程師的朋友們應該常常聽到宣告式及命令式兩種不同的名詞吧! 想當初剛入行的阿Han,對於這兩個名詞根本就是覺得文字天書,怎麼也看不懂,但在業界混了幾年之後終於有了一些領悟,也希望透過簡單說明的方式讓大家理解共同學習。 指令式程式設計(Imperative Programming) 圖片來源 這種方式是我們早期所使用的設計模式,先把需要的素材準備好,然後一步一腳印的打造出處理流程,最終產生成果的一種模式,這種模式很詳細沒錯,但是太多雜訊了,對於未來進入維護的新人來說會造成不易閱讀的門檻,以一個簡單的例子如下: --------------------------------------------------------------------------------- function imperative(elements: number[], threshold: number): number[] { // 準備素材 let results: number[] = []; // 一步一腳印的處理過程 for (let i = 0; i < elements.length; i++) { if (elements[i] >= threshold) { results.push(elements[i]); } } // 最終產生成果 return results; } --------------------------------------------------------------------------------- 宣告式程式設計(Declarative Programming) 圖片來源 這種方式屬於先設計在實作,以終為始,腦袋中先醞釀最終期望的成果,過程中逐步使用已封裝完成的功能,並告知每一個功能我所期望的結果,產生出最終結果,以一個簡單的例子說明如下: --------------------------------------------------------------------------------- function declarati