<SaaS Series: Clean Architecture>
這個系列是研究 SaaS 實作的技術系列部落格,我們會從設計一路到實作走一遍。
Index Clean Architecture Entities Use Cases Interface Adapters Frameworks and Drivers Clean Architecture 說到 SaaS 業界目前的首選絕對是 Uncle Bob 的 Clean Architecture,我主要會參考這個概念當作出發點。
簡單描述一下 Clean Architecture 有什麼樣的特性。
Independent of Frameworks: 獨立於框架之外,你可以使用框架,但是不能夠被框架給綁住。 Testable: 可以測試,這邊指的是能夠完全獨立測試商業邏輯,就算拔除 UI/Database…等外部元件。 Independent of UI/Database/External agency: 簡單來說希望所有抽象的核心邏輯完全脫離外部的元件。 為了達到以上的目標,我們用下圖進行說明。 為了達到獨立性,外圍的程式碼只能依賴內圈的程式碼,當我們修改外部程式碼的時候,內部邏輯不能夠被影響。接著我們介紹一下這些同心圓代表的意義…
Entities 最核心的業務邏輯部分,可以是 object/method/data structures/functions,這是整個系統最穩穩定的部分,我們不會希望業務以外的更動去影響到這層。
Use Cases 這層是介於 Entities 和外圍元件的中間層,這層會依賴 Entities,但是又不會希望更動 Database/UI 會影響到這層。
Interface Adapters 這層是轉換層,我們希望把所有外部的資料結構全部轉換成內部 Use Cases/Entities 看得懂的資料結構。舉例來說,這裡進去你不應該看到任何 SQL 之類的語句,這些全部都會轉換成 Use Cases/Entities。
Frameworks and Drivers 最外圍的部分,基本上我們不會自己寫什麼 code,此處多半是處理細節,避免影響到內部的部分就好。…
Read more ⟶<信仰的容器>
人是一種信仰的容器,我們只能裝下信仰,我們的腦中有很多的信仰,在無數中信仰中最強烈的信仰便會變成真實,如此而已。
舉例來說,如果我相信我會變成一個廚師,我就會練習刀工、研究食譜。如果我今天發現我做的很難吃,我可以說我會繼續練習直到我成為廚師,或是我可以直接說我不相信我能成為廚師然後放棄,讓腦中其他的信仰變成新的真實。
對我們自己來說,現實從來就不是讓我們快樂或是痛苦或是成就的根本原因,根本原因是信仰問題,要嘛就 放棄信仰用其他的信仰替換、要嘛就是 強化自己的固有信仰,無關對錯、無關善惡,只是選擇而已。
知識和信仰本身是互補的,就用廚師的例子來說,如果你想 學習到 “我沒有當廚師的天分” 這件事情,你就要同時放棄你 相信 “你能成為廚師這間事情”,反之也是。
科學只能證明某些東西是錯的,但是並不能說明某些東西是對的。舉例來說,古人認為世界是由水、火、土、氣四大元素所構成,但是就是有人不相信,所以想辦法證明這件事情是錯的,如此推動人類文明的演進。今天是對的道理,明天不一定是對的,其中就是信仰和科學的精神在其中運作。
我認為能不能完成某些事情其實是假議題,因為你可以永遠說自己還在完成的路上,不爽做就說自己沒能力完成。
所以真正的問題其實是 你的信仰是什麼?還有現在的狀態是什麼?
前者不需要任何理由,信仰只能藉由內觀的方式感知。但是信仰本身帶有不穩定性,會因為環境的擾動而動搖,所以需要用科學精神推進當前的狀態。人不應該考慮道德的形式,而是要考慮要怎麼樣才能做到,真正的智慧和愛會在這個過程中隨行。…
Read more ⟶<維根斯坦 哲學研究> 思想筆記
Index 反駁自己的先前的<邏輯哲學論> 語言的意義在於使用 語言遊戲 不同的語言,並沒有相同的 本質,之間的聯繫是用 “家族相似性” 語言遊戲需要語法,語法會根據不同的語言語法而有不同的意義 語法就像是規則,規則有穩定的一面,但也有不穩定的一面,規則是公共的而不是私人的 私人語言不存在,語言的意義就是要被別人理解 哲學本身不能解釋什麼,世界本身就在我們面前,我們不需要解釋什麼,存在本身就具有神秘性,哲學的目的就是以更清晰的方式展現在我們面前 哲學的目標就是治療 反駁自己的先前的<邏輯哲學論> 否定只有理想化的人工語言,語言不是用邏輯構造的,而是在使用之中創造出來的 <圖像論> 是錯的,語言不能表述全部世界,語言只是認識世界的工具。 語言的意義在於使用 語言的意義在於使用的情境,要考慮語境本身的問題,個體存在的意義在於環境。
語言遊戲 使用語言就像在玩遊戲,不同的遊戲不能互通。
不同的語言,並沒有相同的 本質,之間的聯繫是用 “家族相似性” 語言遊戲需要語法,語法會根據不同的語言語法而有不同的意義 語法就像是規則,規則有穩定的一面,但也有不穩定的一面,規則是公共的而不是私人的 私人語言不存在,語言的意義就是要被別人理解 比如說 “我很痛苦”,雖然不能真的表達我的痛苦,但是這句話能夠有意義,就代表有能夠被理解的部分
哲學本身不能解釋什麼,世界本身就在我們面前,我們不需要解釋什麼,存在本身就具有神秘性,哲學的目的就是以更清晰的方式展現在我們面前 哲學的目標就是治療 …
Read more ⟶