CMake 是一個開源的跨平臺自動化建構(gòu)系統(tǒng),是目前最主流的 C/C++語言構(gòu)建工具飞崖。CMake3.0 之后引入很多新的特性烂叔,有效提升了編寫構(gòu)建腳本的效率,稱為 Modern...
上世紀(jì)60年代后固歪,由于“軟件危機(jī)”的推動蒜鸡,人們開始借助工程化的方式解決軟件開發(fā)中質(zhì)量胯努、成本和工期不可控的問題,形成了軟件工程學(xué)逢防。 軟件工程學(xué)從其他人類工程學(xué)(如建筑學(xué)和硬件開...
互聯(lián)網(wǎng)產(chǎn)品業(yè)務(wù)的不斷發(fā)展,對數(shù)據(jù)庫提出了各式各樣新式的需求忘朝,于是涌現(xiàn)出了眾多的數(shù)據(jù)庫產(chǎn)品去迎合這些需求灰署,導(dǎo)致軟件開發(fā)者面對這么多選擇時無從下手。 有些開發(fā)者在開發(fā)初期喜歡選擇...
正交設(shè)計(jì)溉箕,是普遍的設(shè)計(jì)原則,與粒度無關(guān)悦昵,與編程范式無關(guān)肴茄,更與具體的實(shí)現(xiàn)語言無關(guān)。(雖然確實(shí)在不同的編程范式下但指,或使用不同的編程語言時寡痰,具體的解決方法或難易程度不同,這也正是為...
寫的真好贪婉,今天突然想再理一些DCi,竟然在百度上搜到你的文章
DCI in C++DCI[https://en.wikipedia.org/wiki/Data,_context_and_interaction]是一種面向?qū)ο筌浖軜?gòu)模式卢肃,它可以讓面向?qū)ο蟾?..
領(lǐng)域驅(qū)動設(shè)計(jì)(DDD)旨在軟件設(shè)計(jì)過程中提煉領(lǐng)域模型莫湘,以領(lǐng)域模型為核心改善業(yè)務(wù)專家和軟件開發(fā)者的溝通方式尤蒿,對企業(yè)級軟件開發(fā)起到了巨大的推動作用。遺憾的是市面上關(guān)于領(lǐng)域驅(qū)動設(shè)計(jì)...
前言 模板的基礎(chǔ)知識模板的類型參數(shù)模板的默認(rèn)參數(shù)模板的模板參數(shù)模板的特化模板的非類型參數(shù)模板的編譯期計(jì)算數(shù)值計(jì)算類型計(jì)算模板遞歸 C++模板元編程元函數(shù)高階函數(shù)柯理函數(shù)(cu...
說文解字選擇抽象分享領(lǐng)悟成長之路消除重復(fù)提煉知識成為習(xí)慣更新知識重構(gòu)自我專攻術(shù)業(yè) 說文解字 讀書有三到幅垮,謂心到腰池,眼到,口到忙芒。- 朱熹《訓(xùn)學(xué)齋規(guī)》 我出生時示弓,父親為我取名「劉光...
Design is there to enable you to keep changing the software easily in the long term. -...
混入機(jī)制還是很好用的呀
混入日志本文通過應(yīng)用中天天都見得到的日志打印談起,聊聊封裝隱藏呵萨,性能優(yōu)化奏属,惰性求值,消除重復(fù)的技術(shù)實(shí)踐潮峦。 延遲評估 Eliminate Effects Between Unrelat...
如果我要用Scala,我覺得就沒有必要使用operator這個參數(shù)了齿兔。當(dāng)然橱脸,也可能是這個案例不太適合,命名就是一個函數(shù)抽象的事情(Int, Int) => Int愧驱,卻被搞得復(fù)雜了慰技。(當(dāng)然椭盏,考慮類型的擴(kuò)展组砚,而不只是支持Int,還需要用到泛型)掏颊。換言之糟红,這個Calculator,就是接收一個函數(shù)乌叶,這完全是OCP的盆偿。如果想要簡化客戶端調(diào)用,可以將add准浴、minus等函數(shù)以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
}
迭代1:快速實(shí)現(xiàn) 需求1:實(shí)現(xiàn)一個計(jì)算器乐横,完成加減乘除運(yùn)算 這是一個很糟糕的設(shè)計(jì)求橄,存在很多的壞味道。 類型不安全 一般地葡公,用戶按照規(guī)則傳遞正確的op常量罐农。 但不排除用戶傳遞錯...