CUB:一個輕量的現(xiàn)代C++基礎(chǔ)類庫

CUB(C++ Unified Base)是一個輕量的現(xiàn)代C++基礎(chǔ)類庫,遵循C++14基礎(chǔ)語言版本辰狡。提供了內(nèi)存锋叨、時間、文件系統(tǒng)搓译、字符串悲柱、多線程、實現(xiàn)模式等基礎(chǔ)類庫實現(xiàn)些己。

初衷

抽取CUB的公共抽象豌鸡,其最大的動機就是為了消除重復(fù),避免在各個實現(xiàn)中充斥重復(fù)邏輯段标,最大可能性地抑制程序員“復(fù)制-粘貼”的惡習(xí)涯冠。其次,CUB實現(xiàn)了標準庫的擴展和補充逼庞,例如包括any, optional, string_view等蛇更,當你的編譯器還沒有升級到C++17時,你便最大限度地從中獲益赛糟。

以日志為例派任,我們當然不希望每個人,每個模塊都寫一個打印日志的類庫璧南,否則會制造大量的重復(fù)代碼掌逛。特殊地,日志特性在C++實現(xiàn)中司倚,常常使用宏定義提供API給用戶使用豆混,重復(fù)實現(xiàn)極大概率造成宏定義的沖突。

解決這類問題动知,唯一的辦法就是提供易于用戶復(fù)用的類庫皿伺,并最大自由地讓用戶獲取到源代碼,而不是讓他再造一個輪子盒粮,或者“復(fù)制-粘貼”你的代碼鸵鸥。

復(fù)用

程序員復(fù)用代碼,無非存在兩大障礙丹皱。

  • 第一妒穴,這個API設(shè)計不夠人性化,復(fù)用成本高种呐。
  • 第二宰翅,庫依賴太復(fù)雜,無法便捷地獲取源代碼爽室。

第一個問題汁讼,關(guān)乎軟件設(shè)計。實際上阔墩,設(shè)計易于復(fù)用的組件嘿架,都需要遵循良好的設(shè)計原則。例如啸箫,用戶僅依賴于打印日志的幾個宏定義耸彪,而迫使用戶依賴了他不想要的代碼,便違背了接口隔離原則忘苛。再如蝉娜,用戶依賴你的接口唱较,他不是根據(jù)場景特殊性擴展實現(xiàn),他復(fù)制了你的代碼做局部修改召川,便違背了開放封閉原則南缓。也就是說,你要從設(shè)計上約束用戶的行為荧呐,使得他復(fù)制代碼相對于復(fù)用代碼成本更高汉形,才有可能吸引用戶大概率復(fù)用既有代碼。讓優(yōu)秀的程序員用起來感覺更爽倍阐,工作更愉悅概疆,同時也不放棄改造和教育普通程序員,是吧峰搪?

第二個問題岔冀,關(guān)乎依賴管理。感謝Google的工程師罢艾,他們創(chuàng)造了Bazel楣颠,使得代碼復(fù)用變得更加便捷。無論你發(fā)布的庫有多大咐蚯,只要用戶依賴的目標足夠小童漩,用戶通過Bazel便能夠方便地復(fù)用之。另外春锋,Bazel使用類Python的語法矫膨,相對于CMake反人類的語法,Bazel的可讀性和顏值簡直爆表(當然期奔,你得喜歡Python的語法)侧馅。此外,Bazel的可擴展性相當優(yōu)異呐萌,充滿著無限的可能性馁痴。例如,在構(gòu)建工程之前自動生成代碼肺孤,在GPU上擴展支持編譯CUDA代碼罗晕,一切都變得極為容易。

源代碼

CUB的源代碼來自于如下地址赠堵,可以使用Git克隆整個庫實現(xiàn)小渊,歡迎小伙伴們?yōu)?code>CUB添磚砌瓦。

$ git clone https://github.com/horance-liu/cub.git
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末茫叭,一起剝皮案震驚了整個濱河市酬屉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖呐萨,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杀饵,死亡現(xiàn)場離奇詭異,居然都是意外死亡垛吗,警方通過查閱死者的電腦和手機凹髓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門烁登,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怯屉,“玉大人,你說我怎么就攤上這事饵沧∠锹纾” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵狼牺,是天一觀的道長羡儿。 經(jīng)常有香客問我,道長是钥,這世上最難降的妖魔是什么掠归? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮悄泥,結(jié)果婚禮上虏冻,老公的妹妹穿的比我還像新娘。我一直安慰自己弹囚,他們只是感情好厨相,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鸥鹉,像睡著了一般蛮穿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上毁渗,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天践磅,我揣著相機與錄音,去河邊找鬼灸异。 笑死府适,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的绎狭。 我是一名探鬼主播细溅,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼儡嘶!你這毒婦竟也來了喇聊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蹦狂,失蹤者是張志新(化名)和其女友劉穎誓篱,沒想到半個月后朋贬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡窜骄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年锦募,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片邻遏。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡糠亩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出准验,到底是詐尸還是另有隱情赎线,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布糊饱,位于F島的核電站垂寥,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏另锋。R本人自食惡果不足惜滞项,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望夭坪。 院中可真熱鬧文判,春花似錦、人聲如沸台舱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽竞惋。三九已至柜去,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拆宛,已是汗流浹背嗓奢。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留浑厚,地道東北人股耽。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像钳幅,于是被迫代替她去往敵國和親物蝙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容