CMake 是一個開源的跨平臺自動化建構系統(tǒng),是目前最主流的 C/C++語言構建工具。CMake3.0 之后引入很多新的特性,有效提升了編寫構建腳本的效率,稱為 Modern...
上世紀60年代后,由于“軟件危機”的推動,人們開始借助工程化的方式解決軟件開發(fā)中質量、成本和工期不可控的問題,形成了軟件工程學。 軟件工程學從其他人類工程學(如建筑學和硬件開...
互聯(lián)網產品業(yè)務的不斷發(fā)展,對數據庫提出了各式各樣新式的需求,于是涌現(xiàn)出了眾多的數據庫產品去迎合這些需求,導致軟件開發(fā)者面對這么多選擇時無從下手。 有些開發(fā)者在開發(fā)初期喜歡選擇...
正交設計,是普遍的設計原則,與粒度無關,與編程范式無關,更與具體的實現(xiàn)語言無關。(雖然確實在不同的編程范式下,或使用不同的編程語言時,具體的解決方法或難易程度不同,這也正是為...
寫的真好,今天突然想再理一些DCi,竟然在百度上搜到你的文章
DCI in C++DCI[https://en.wikipedia.org/wiki/Data,_context_and_interaction]是一種面向對象軟件架構模式,它可以讓面向對象更...
領域驅動設計(DDD)旨在軟件設計過程中提煉領域模型,以領域模型為核心改善業(yè)務專家和軟件開發(fā)者的溝通方式,對企業(yè)級軟件開發(fā)起到了巨大的推動作用。遺憾的是市面上關于領域驅動設計...
前言 模板的基礎知識模板的類型參數模板的默認參數模板的模板參數模板的特化模板的非類型參數模板的編譯期計算數值計算類型計算模板遞歸 C++模板元編程元函數高階函數柯理函數(cu...
Design is there to enable you to keep changing the software easily in the long term. -...
如果我要用Scala,我覺得就沒有必要使用operator這個參數了。當然,也可能是這個案例不太適合,命名就是一個函數抽象的事情(Int, Int) => Int,卻被搞得復雜了。(當然,考慮類型的擴展,而不只是支持Int,還需要用到泛型)。換言之,這個Calculator,就是接收一個函數,這完全是OCP的。如果想要簡化客戶端調用,可以將add、minus等函數以val的形式定義在一個Object里面,讓用戶去選擇使用即可。API類似這樣:
Calculator.apply(x, y)(Opertion.add)
定義如下:
object Calculator {
def apply(x: Int, y: Int)(f: (Int, Int) => Int) { f(x, y) }
}
object Operator {
val add = (x, y) => x + y
val minus = (x,y) => x - y
}