基本概念
AirPlay 是一個用來與 Apple TV溝通的協定,可用 iOS 設備或 itunes將資料交給 Apple TV進行播放,其實作使用 Multicast DNS, HTTP, RTSP, RTP or NTP 等協定,並加上些許的修改
基本概念
AirPlay 是一個用來與 Apple TV溝通的協定,可用 iOS 設備或 itunes將資料交給 Apple TV進行播放,其實作使用 Multicast DNS, HTTP, RTSP, RTP or NTP 等協定,並加上些許的修改
筆記:
軟體開發方法論:
Test-driven development (TDD,測試驅動開發)
Behaviour-driven development (BDD,行為驅動開發)
Domain-driven development (DDD,領域驅動開發)
Type-driven development (型別驅動開發)
Property-driven development (特性驅動開發)
封裝
描述物件和呼叫者之間有效互動的一種契約。指出有效性的一種方式是說明什麼是無效的。
Design by Contract
封裝的想法:你應該能夠與一個物件進行互動而不需要對它的實作細節有深入的了解。這目的有 2 個:
1. 它使你能夠改變實作,也就是進行重構。
2. 它允許你以抽象的方式思考一個物體
在設計時要明確指出哪些是有效的輸入,哪些是無效的輸入,以及你能對輸出提供哪些保證
Martin Fowler:如果不關注內部品質,你很快就會失去在合理時間內進行改善的能力。
內部品質差勁的狀況。起初進展很快,但隨著時間的推移,要增加新的功能變得越來越困難。即使是小型的變更,也需要程式設計師去了解大面積的程式碼,而且是很難理解的程式碼。
當他們進行改動時,會出現意想不到的損害,導致測試時間長,還有需要修復缺陷
Page 51
J.B. Rainsberger 的說法:程式碼不是一種資產,而是一種責任。
Page 98
參數化的測試
Page 112
Postel' Law
慎重考慮先決與後置條件:對你發送出去的東西要保守,對你所接受的東西則要寬容。
輸入 null,轉換為空字串
Page 117
試圖用1個無效的人數初始化某個物件,應該要丟出1個例外。+
Page 119
封裝的概念:
並不是禁止直接對外開放類別的欄位:類別的欄位應該被「封裝」在 getXX 和 setXXX。
主要是 1 個物件應該保證它永遠不會處於無效的狀態。這不是呼叫者的責任。物件最清楚「有效」意味者什麼,以及如何做出這種保證。
物件和呼叫者之間的互動應該遵守一個契約。這是一組先決條件和後置條件。
先決條件述述了呼叫者的責任。然後,如果呼叫程式碼履行了那些義務
後置條件就描述了物件所給予的保證。
1. 重構有時候,讓你可以在犯錯時,輕鬆找到 bug 的位置
2. 呆子都寫得出電腦可以了解的程式,但只有優利的程式寫得出人看得懂的程式
3. 決定程式好壞的關鍵在於它有多麼容易被修改。
重構目的:
1. 軟體更容易了解
2. 較快找出 bug
3. 協助提升程式編寫速度 (良好的模組化讓我們只要了解1小部分程式就可以)
設計架構
不是僅僅把功能堆起來及讓系統變得更有彈性。很多時候可以有巧妙的設計,讓效能好、好維護又同時簡化很多複雜的工作。
安卓开发入门到精通!致Android高级工程师的一封信,移动架构师成长路线
Clean Architecture(1):軟體架構的定義與目的
Clean Architecture(2):Port and Adapter Architecture
Clean Architecture(4):架構三原則首部曲—分層原則
Clean Architecture(5):架構三原則二部曲—相依性原則
Clean Architecture(6):架構三原則三部曲—跨層原則
概念:dependency injection, IOC, vs callback
【n8n免費本地端部署】Windows版|程式安裝x指令大補帖 【一鍵安裝 n8n】圖文教學,獲得無限額度自動化工具&限時免費升級企業版功能