金慶的專欄
C++博客
::
首頁
::
新隨筆
::
聯(lián)系
::
聚合
::
管理
::
423 隨筆 :: 0 文章 :: 454 評論 :: 0 Trackbacks
公告
我的隨筆
我的評論
我參與的隨筆
留言簿
(12)
給我留言
查看公開留言
查看私人留言
隨筆分類
(502)
1. C/C++(166)
(rss)
2. 網(wǎng)游開發(fā)(108)
(rss)
3. Golang(20)
(rss)
4. Linux/Unix(30)
(rss)
5. 軟工與管理(44)
(rss)
6. Python(23)
(rss)
7. Erlang(18)
(rss)
8. Rust(16)
(rss)
9. 其它(77)
(rss)
隨筆檔案
(423)
2023年1月 (1)
2022年11月 (1)
2022年10月 (2)
2022年9月 (1)
2022年4月 (6)
2022年1月 (2)
2021年12月 (4)
2021年11月 (6)
2021年10月 (2)
2021年9月 (2)
2021年8月 (7)
2021年7月 (2)
2021年5月 (2)
2021年3月 (1)
2021年2月 (2)
2021年1月 (1)
2020年12月 (1)
2020年10月 (1)
2020年9月 (5)
2020年8月 (1)
2020年7月 (1)
2020年6月 (1)
2020年4月 (2)
2020年3月 (3)
2020年2月 (3)
2020年1月 (1)
2019年12月 (1)
2019年9月 (2)
2019年4月 (2)
2019年1月 (1)
2018年12月 (1)
2018年11月 (3)
2018年10月 (1)
2018年9月 (3)
2018年8月 (3)
2018年7月 (2)
2018年6月 (4)
2018年5月 (4)
2018年4月 (4)
2018年3月 (1)
2018年1月 (2)
2017年12月 (2)
2017年11月 (3)
2017年10月 (3)
2017年8月 (7)
2017年7月 (1)
2017年6月 (1)
2017年5月 (3)
2017年4月 (3)
2017年3月 (3)
2017年2月 (2)
2017年1月 (2)
2016年12月 (5)
2016年11月 (2)
2016年10月 (2)
2016年9月 (1)
2016年8月 (6)
2016年7月 (3)
2016年6月 (2)
2016年5月 (4)
2016年4月 (2)
2016年3月 (2)
2016年1月 (3)
2015年12月 (2)
2015年11月 (2)
2015年10月 (1)
2015年8月 (2)
2015年7月 (1)
2015年6月 (1)
2015年5月 (4)
2015年4月 (3)
2015年3月 (4)
2015年2月 (5)
2015年1月 (4)
2014年12月 (3)
2014年11月 (3)
2014年10月 (2)
2014年9月 (3)
2014年8月 (1)
2014年4月 (4)
2014年3月 (1)
2014年2月 (4)
2014年1月 (5)
2013年12月 (5)
2013年11月 (5)
2013年9月 (2)
2013年8月 (2)
2013年7月 (2)
2013年6月 (2)
2013年5月 (1)
2013年1月 (2)
2012年12月 (1)
2012年11月 (1)
2012年9月 (1)
2012年8月 (3)
2012年7月 (2)
2012年6月 (1)
2012年4月 (3)
2012年3月 (2)
2012年2月 (3)
2012年1月 (2)
2011年11月 (2)
2011年10月 (3)
2011年9月 (2)
2011年8月 (2)
2011年7月 (3)
2011年6月 (2)
2011年5月 (3)
2011年1月 (2)
2010年12月 (1)
2010年11月 (2)
2010年10月 (2)
2010年9月 (3)
2010年8月 (2)
2010年7月 (3)
2010年6月 (1)
2010年5月 (3)
2010年4月 (3)
2010年3月 (5)
2010年2月 (4)
2010年1月 (4)
2009年12月 (2)
2009年11月 (3)
2009年10月 (4)
2009年9月 (3)
2009年8月 (2)
2009年7月 (4)
2009年6月 (1)
2009年5月 (3)
2009年4月 (4)
2009年3月 (2)
2009年2月 (5)
2009年1月 (1)
2008年12月 (7)
2008年11月 (4)
2008年10月 (1)
2008年9月 (3)
2008年8月 (4)
2008年7月 (3)
2008年6月 (4)
2008年5月 (6)
2008年4月 (7)
2008年3月 (6)
2008年1月 (5)
2007年12月 (7)
2007年11月 (4)
2007年10月 (5)
2007年9月 (6)
2007年8月 (8)
2007年7月 (5)
相冊
公告照片
搜索
積分與排名
積分 - 656592
排名 - 25
最新評論
1.?re: boost::asio::spawn 將一統(tǒng)C++網(wǎng)絡(luò)庫
asio 成為C++首選網(wǎng)絡(luò)庫
--linda
2.?re: log4cxx中文輸出錯誤補丁
評論內(nèi)容較長,點擊標(biāo)題查看
--金慶
3.?re: mingw編譯OrzNet
能發(fā)送一個mingw編譯好的OrzNet庫給我嗎? liuweiqcxy@163.com
謝謝!
--劉威
4.?re: log4cxx中文輸出錯誤補丁
評論內(nèi)容較長,點擊標(biāo)題查看
--bigbad
5.?re: log4cxx中文輸出錯誤補丁
評論內(nèi)容較長,點擊標(biāo)題查看
--bigbad
閱讀排行榜
1.?"multiple definition of" 錯誤(11032)
2.?SVN中邪惡的replace(10955)
3.?VS2005編譯libevent(10413)
4.?混音算法的學(xué)習(xí)與研究(10203)
5.?C調(diào)用lua腳本的效率測試(9007)
評論排行榜
1.?VC6正在被拋棄(35)
2.?VS2005編譯libevent(21)
3.?"multiple definition of" 錯誤(18)
4.?C++引用優(yōu)于指針(17)
5.?ACE與ASIO之間關(guān)于Socket編程的比較(16)
命名
# 命名
摘自:[警惕軟件復(fù)雜度困局][1]
軟件中的API、方法、變量的命名,對于理解代碼的邏輯、范圍非常重要,也是設(shè)計者清晰傳達(dá)意圖的關(guān)鍵。
然而,在很多的項目里我們沒有給Naming /命名足夠的重視。
我們的代碼一般會和一些項目關(guān)聯(lián),但是需要注意的是項目是抽象的,而代碼是具體的。
項目或者產(chǎn)品可以隨意一些命名,如阿里云喜歡用中國古代神話(飛天、伏羲、女媧)命名系統(tǒng),
K8s也是來自于希臘神話,這些都沒有問題。
而代碼中的API、變量、方法不能這樣命名。
一個不好的例子是前一段我們的Cluster API 被命名為Trident API(三叉戟),
設(shè)想一下代碼中的對象叫Trident時,我們?nèi)绾卫斫庠谶@個對象應(yīng)該具備的行為?
再對比一下K8s中的資源:Pod, ReplicaSet, Service, ClusterIP,
我們會注意到都是清晰、簡單、直接符合其對象特征的命名。名實相符可以很大程度上降低理解該對象的成本。
有人說“Naming is the most difficult part of software engineering”,
或許也不完全是個玩笑話:Naming的難度在于對于模型的深入思考和抽象,而這往往確實是很難的。
需要注意的是:
(a)Intention vs what it is
需要避免用“是什么”來命名,要用“for what / intention”。“是什么”來命名是會很容易將實現(xiàn)細(xì)節(jié)。
比如我們用 LeakedBarrel做rate limiting,這個類最好叫 RateLimiter,而不是LeakedBarrel:
前者定義了意圖(做什么的),后者 描述了具體實現(xiàn),而具體實現(xiàn)可能會變化。
再比如 Cache vs FixedSizeHashMap,前者也是更好的命名。
(b)命名需要符合當(dāng)前抽象的層級
首先我們軟件需要始終有清晰的抽象和分層。
事實上我們Naming時遇到困難,很多就是因為軟件已經(jīng)缺乏明確的抽象和分層帶來的表象而已。
[1]https://mp.weixin.qq.com/s?__biz=MzIzOTU0NTQ0MA==&mid=2247498895&idx=1&sn=35b1d00e367c18c3d4ed7d4b15b38996&chksm=e92ac180de5d4896fd5d789ffbe8c963986717b634f2dac09821c2b3ab2270a42f4a1c006ff5&scene=21#wechat_redirect
posted on 2020-12-31 09:45
金慶
閱讀(348)
評論(0)
編輯
收藏
引用
所屬分類:
5. 軟工與管理
只有注冊用戶
登錄
后才能發(fā)表評論。
【推薦】100%開源!大型工業(yè)跨平臺軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
TortoiseGit is OK but GitExtensions fails
命名
SVN重命名時不要更改內(nèi)容
刪除隱性的git submodule
用docker stack開啟redis集群
Lua區(qū)分公有私有接口
Lua53 premake
ejabberd開發(fā)和部署
Windows運行GitStats
CMake搜索Boost1.57失敗及解決
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 金慶
少妇久久久久久被弄高潮
|
国产精品久久久久9999
|
青青青青久久精品国产h久久精品五福影院1421
|
天天爽天天爽天天片a久久网
|
国产精品久久久久久久久久免费
|
狠狠色丁香婷婷久久综合不卡
|
亚洲精品综合久久
|
国产精品久久波多野结衣
|
无码精品久久久久久人妻中字
|
亚洲一区精品伊人久久伊人
|
精品久久久久久无码专区
|
久久精品视频一
|
青草久久久国产线免观
|
亚洲天堂久久精品
|
久久AV高潮AV无码AV
|
嫩草伊人久久精品少妇AV
|
精品国产乱码久久久久久人妻
|
久久久久国产精品三级网
|
久久青草国产精品一区
|
青青热久久综合网伊人
|
精品综合久久久久久97超人
|
91精品国产9l久久久久
|
国产伊人久久
|
天天综合久久一二三区
|
无码国内精品久久人妻
|
日韩欧美亚洲综合久久影院d3
|
香蕉久久永久视频
|
一本大道久久香蕉成人网
|
久久精品国产WWW456C0M
|
一本色道久久88—综合亚洲精品
|
青青草原精品99久久精品66
|
亚洲精品综合久久
|
久久91精品综合国产首页
|
品成人欧美大片久久国产欧美...
|
亚洲国产成人久久综合碰
|
久久久久国产精品麻豆AR影院
|
无码8090精品久久一区
|
久久精品人人做人人妻人人玩
|
色婷婷久久久SWAG精品
|
亚洲国产精品无码久久SM
|
久久精品国产亚洲av影院
|