精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

有關C語言模塊化實現的探討

開發 架構 后端
怎樣才是好的設計?模塊化是我們經常談論的一個方向,它將復雜的問題分解成小問題,實現高內聚,低耦合。不過,模塊之間的聯系需要遵循的原則,堅持起來是很難的。本文探討了C語言實現模塊化的一些問題。

本文節選自云風的博客上近日的兩篇文章:《好的設計》和《C 語言對模塊化支持的欠缺》。

由于最近幾年用的主要開發語言是 C 和 lua 。那么也打算以此為基礎寫。假定讀者至少有不錯的 C 語言基礎了。我真正想談的是,如何把一個軟件很好的構建起來。到底需要做些什么。(從實現層面看)怎樣才是好的軟件。

那么有一個重點問題,也是老問題,怎樣才是好的設計。

好的設計,必然是容易實現的。它可以很精巧,但不能難以理解。

太陽底下無新鮮事。軟件行業已經發展了這么多年,你想到的東西,肯定有人都想到過了。

每個軟件也都有它的生命期,我們只要在它的生命期內完成它的使命就行了。軟件往往需要盡快的投入使用,然后在使用中演化。這個演化最大可能并不依靠你一個人的力量去推動。隨著參與的人增加,人和人(指開發人員)的共性就會減少。每個人都看得懂可以充分接受,軟件才不容易向壞的方面演化。

我們常常談模塊化,談高內聚,低耦合。

本質上,就是如何管理復雜度。如何把一件很難的事情(開發一個軟件),分解成小問題,分而治之。

這些小問題之間的千絲萬縷的聯系,是設計人員面臨的最大難題。

有些原則聽起來不錯,但是堅持起來很難。

比如,讓模塊的輸入輸出沒有副作用。你能讓你的模塊每個輸入對對應著唯一輸出嗎?

又比如,讓模塊層次化。如果 A 模塊依賴 B 模塊,B 模塊依賴 C 模塊。一旦出現這個狀態,你能保證 A 模塊絕對和 C 模塊隔絕嗎?更有甚者,讓三個模塊循環依賴這種更糟糕的事情也并不鮮見。

抽象是個好東西。但借助不斷的抽象,問題不斷的包起來,演化成新的巨無霸,顯然會讓事情更糟。雖然最終可能真的能像搭積木一樣去組裝軟件了。或是雇傭更多的程序員填表單一樣的工作,相互不需要對方在做什么。但是,軟件性能卻下降到了不可以忍受的地步。bug 也隱藏的更久,更不可收拾。

好的設計,必須對問題有足夠清晰的理解。有如庖丁解牛一般,把整個問題劃開,在最薄弱的地方分離。其實,做到這點,也就夠了。

解決這些問題,其實跟語言無關。語言之爭是沒有多大意義的。如開頭所說,把設計做好,模塊之間的關系,用足夠簡單的方式就能描述清楚了,大部分流行的開發語言都能做到。

用 C 來實作,而沒有用它的近親 C++ ,也是為了避免狹隘的爭議:我們該用這個特性嗎?該用那個特性嗎?這個形式做是不是好點?那樣會不會有更好的性能?

所謂開發效率,對于個人來說,語言之不同,是會有很大差異。但是那是實現層面的差異。對于完成設計,這個過程,效率和所用語言無關。

實現的階段,程序員可不可以開心的放心的去完成那些接口,這就是衡量設計好不好的指標了。這個時候,一個高開發效率的語言有優勢(更少的代碼量),一個容易掌握的語言也有優勢(可以讓更多的人參于而少犯錯誤)。

#t#對于我的團隊,我會更樂于采用一種讓實現人員更輕松的方式。不用理會太多的語言細節,不用在投入開發前學習更多的概念(尤其是這個項目獨有的),不用特別嚴格的 code review 也可以允許大家提交新的代碼,切不至于輕易的引入 bug 。

我相信,軟件做到后面,設計人員不需要親自寫太多代碼。雖然我現在每天還是大量的寫,也并不覺得枯燥。

事必恭親是不好,但并不是說,你給實現人員足夠信任就可以放手的。真正讓你放手的只能是,你做出了好的設計,無論是誰,他也寫不壞它。這時,是你樂意自己寫,還是多找幾個同學幫忙寫,已經不重要了。

#p#

那么我們來討論一下怎樣構建一個(稍具規模的)軟件。我選擇用 C 為實現工具來做這件事情。就不得不談語言還沒有提供給我們的東西。

模塊化是最高原則之一(在 《Unix 編程藝術》一書中, Unix 哲學第一條即:模塊原則),我們就當考慮如何簡潔明快的使用 C 語言實現模塊化。

除開 C/C++ ,在其它現在流行的開發語言中,缺少標準化的模塊管理機制是很難想象的。但這也是 C 語言本身的設計哲學決定的:把盡可能多的可能性留給程序員。根據實際的系統,實際的需要去定制自己需要的東西。

對于巨型的系統(比如 Windows 這樣的操作系統),一般會考慮使用一種二進制級的模塊化方案。由模塊自己提供元信息,或是使用統一的管理方案(比如注冊表)。稍小一點的系統(我們通常開發接觸到的),則會考慮輕量一些的源碼級方案。

首先要考慮的往往是模塊的依賴關系和初始化過程。

依賴關系可以放由鏈接器或加載器來解決。尤其在使用 C 語言時,簡單的靜態庫或動態庫,都不太會引起大的麻煩。

C++ 則不然,C++ 的某些特性(比如模板類靜態成員的構造)必須對早期只供 C 語言使用的鏈接器做一些增強。即使是精心編寫的 C++ 庫,也有可能出現一些意外的 bug 。這些 bug 往往需要對編譯,鏈接,加載過程很深刻的理解,才能查出來。注:我并不想以此來反對使用 C++ 做開發。

我們需要著重管理的,是模塊的初始化過程。

對于打包在一起的一個庫(例如 glibc ,或是 msvcrt ),會在加載時有初始化入口,以及卸載時有結束代碼。我想說的不是這個,而是我們自己內部拆分的更小的模塊的相互依賴關系。

誰先初始化,誰后初始化,這是一個問題。

在 C++ 的語言級解決方案中,使用的是單件模塊。要么由鏈接器決定以怎樣的次序來生成初始化代碼,這,通常會因為依賴關系和實際構造次序不同而導致 bug (注:我在某幾本 C++ 書中都見過,待核實。自己好久不寫 C++ 也沒有實際的錯誤例子);要么使用惰性初始化方案。這個惰性初始化也不是萬能的,并且有些額外的開銷。(多線程環境中尤其需要注意)

我使用 C 語言做初期設計的時候,采用的是一種足夠簡單的方法。就是,以編碼規范來規定,每個模塊必須存在一個初始化函數,有規范的名字。比如 foo 模塊的初始化入口叫

  1. int foo_init()  
  2.  

#t#規定:凡使用特定模塊,必須調用模塊初始化函數。

為了避免模塊重復初始化,初始化函數并不直接調用,而是間接的。類似這樣: mod_using(foo_init);

mod_using 負責調用初始化函數,并保證不重復調用,也可以檢查循環依賴。

在這里,我們還約定了初始化成功于否的返回值。(在我們的系統中,返回 0 表示正確,1 表示失?。┤缓蠖x了一個宏來做這個使用。

  1. #define USING(m) if (mod_using(m##_init,#m)) { return 1; }  
  2.  

注:我個人反對濫用宏。也盡可能的避免它。這里使用宏,經過了慎重的考慮。我希望可以有一個代碼掃描器去判斷我是否漏掉了模塊初始化(可能我使用了一個模塊,但忘記初始化它)。宏可以幫助代碼掃描分析器更容易實現。而且,使用宏更像是對語言做的輕微且必要的擴展。

這樣,我的系統中模塊模塊的實現代碼最后,都有一個 init 函數,里面只是簡單的調用了 USING 來引用別的模塊。例如:

  1. #include "module.h"  
  2.  
  3. /*  
  4.   我個人偏愛把 module.h 的引入放在源文件最后,初始化入口之前。  
  5.   它里面之定義了 USING 宏,以及相關管理函數。  
  6.   這樣做是為了避免在代碼的其它地方去引入別的模塊。  
  7. */ 
  8.  
  9. int 
  10. foo_init()  
  11. {  
  12.   USING(memory);  // 引用內存管理模塊  
  13.   USING(log);  // 引用 log 模塊  
  14.  
  15.   return 0;  
  16. }  
  17.  

至于模塊的卸載,大部分需求下是不需要的。今天在這里就不論證這一點了。

責任編輯:yangsai 來源: 云風的Blog
相關推薦

2011-05-13 15:54:50

C模塊化

2011-05-13 15:46:49

C模塊化

2024-07-01 12:48:00

C++內部類開發

2022-09-21 11:51:26

模塊化應用

2016-12-14 14:50:26

CSS預處理語言模塊化實踐

2019-08-28 16:18:39

JavaScriptJS前端

2020-09-17 10:30:21

前端模塊化組件

2020-09-18 09:02:32

前端模塊化

2010-01-21 09:27:30

模塊化的優點NetBeans

2009-08-17 10:11:12

C# Windows

2021-04-06 10:19:36

Go語言基礎技術

2010-03-11 17:24:27

Python編程語言

2022-09-05 09:01:13

前端模塊化

2016-10-09 11:03:41

Javascript模塊化Web

2023-12-25 22:24:36

C++模塊Module

2017-05-18 10:23:55

模塊化開發RequireJsJavascript

2013-08-20 15:31:18

前端模塊化

2022-03-11 13:01:27

前端模塊

2015-10-10 11:29:45

Java模塊化系統初探

2021-07-14 09:26:51

UPS電源模塊化
點贊
收藏

51CTO技術棧公眾號

欧美国产高清| 最新精品在线| 亚洲图片激情小说| 99九九视频| 欧美激情黑白配| 久久国产成人精品| 日韩视频在线你懂得| 黄色免费观看视频网站| 日本在线免费| jizz一区二区| 国产精品视频网| 中文在线观看免费网站| 欧美另类69xxxxx| 欧美一级片在线| 已婚少妇美妙人妻系列| 丝袜综合欧美| 国产欧美久久久精品影院| 91一区二区三区| 国产99久久久| 欧美日韩免费观看一区=区三区| 国产丝袜精品第一页| 国产农村妇女精品久久| 欧洲一级精品| 午夜视频在线观看一区二区 | 大奶在线精品| 欧美日韩一级片网站| 成年人视频观看| 在线观看男女av免费网址| 国产亚洲欧美日韩日本| 好看的日韩精品| 国产ts人妖调教重口男| 免费在线观看视频一区| 97激碰免费视频| 天天色天天综合| 欧美精品系列| 亚洲精品在线91| 捆绑裸体绳奴bdsm亚洲| 久久的色偷偷| 69堂成人精品免费视频| 一区二区xxx| 全亚洲第一av番号网站| 亚洲成人av福利| 日本福利视频在线观看| 黄页视频在线播放| 一色屋精品亚洲香蕉网站| 欧美一区二区三区在线播放 | 精品99久久久久成人网站免费| 精品盗摄女厕tp美女嘘嘘| 亚洲精品按摩视频| 在线观看免费视频黄| 日韩欧美中文在线观看| 91精品视频网| 久久精品视频在线观看免费| 91在线亚洲| 欧美日韩一区二区在线视频| 无码日韩人妻精品久久蜜桃| av有声小说一区二区三区| 色综合久久综合中文综合网| 97xxxxx| 天堂网在线最新版www中文网| 亚洲r级在线视频| 日韩xxxx视频| 英国三级经典在线观看| 欧美性猛xxx| 免费日韩中文字幕| 成人免费一区| 91精品国产欧美一区二区18| 九九九久久久久久久| 一区二区三区四区视频免费观看| 欧美一区二区在线看| 91精产国品一二三| 精品欧美午夜寂寞影院| 精品视频在线导航| 色屁屁草草影院ccyy.com| 日韩av自拍| 久久九九有精品国产23| 麻豆亚洲av熟女国产一区二| 99成人精品| 奇米四色中文综合久久| 午夜视频网站在线观看| 狠狠v欧美v日韩v亚洲ⅴ| 91免费在线观看网站| 午夜激情在线视频| 久久久不卡网国产精品二区| 在线免费一区| 第一中文字幕在线| 日韩欧美国产一区二区| gai在线观看免费高清| 欧美午夜在线播放| 日韩精品中文字| 三级黄色片在线观看| 亚洲夜间福利| 国产成人亚洲精品| 99精品国产99久久久久久97| av一本久道久久综合久久鬼色| 欧美大陆一区二区| 免费在线毛片网站| 精品久久中文字幕| av亚洲天堂网| 欧美巨大xxxx| 久久精品国产精品| 国产做受高潮漫动| 久久99精品网久久| 久久综合九色99| 久操视频在线免费播放| 红桃视频成人在线观看| 午夜天堂在线视频| 最近国产精品视频| 欧美激情图片区| 国产天堂第一区| 波多野结衣一区二区三区| 亚洲成人自拍| 丝袜老师在线| 日韩免费看网站| 亚洲最大成人综合网| 亚洲国产影院| 91亚洲精华国产精华| 国模精品一区二区| 午夜精品爽啪视频| 熟妇无码乱子成人精品| 青青草国产成人a∨下载安卓| 韩剧1988在线观看免费完整版| 国产精品爽爽久久| 中文字幕精品三区| 成人一级片网站| 精品深夜福利视频| 欧美激情手机在线视频| 国产口爆吞精一区二区| 中文字幕不卡的av| 日av中文字幕| 日韩欧美黄色| 国模私拍一区二区三区| 国产不卡av在线播放| 国产精品女人毛片| 美女黄色片视频| 亚洲三级网址| 欧美一区二区影院| 香蕉视频黄在线观看| 亚洲国产欧美在线人成| 粗大的内捧猛烈进出视频| 日韩国产专区| 国产精品久久久久久久久久久久 | 国产成人自拍在线| 日本免费在线视频观看| 国产一区影院| 日韩中文字幕精品视频| 中文字幕一区二区人妻| 亚洲国产成人一区二区三区| 精品日韩久久久| 欧美日韩国产高清电影| 国产成人精品免高潮在线观看| 三级在线观看| 色婷婷久久一区二区三区麻豆| 国产传媒第一页| 先锋亚洲精品| 麻豆视频成人| 色成人免费网站| 国产一区二区三区直播精品电影| 高潮毛片又色又爽免费 | 欧美一区二区三区视频| 成人免费视频国产免费观看| 国产成人亚洲综合色影视| 国产情侣第一页| 红杏一区二区三区| 136fldh精品导航福利| 日韩a在线看| 在线观看成人免费视频| 国产一区二区三区视频播放| 极品销魂美女一区二区三区| 中文字幕乱码免费| 精品视频在线你懂得| 日韩免费观看av| 91福利在线视频| 制服视频三区第一页精品| 久久中文字幕无码| 91老师片黄在线观看| 男女爽爽爽视频| 综合国产精品| 国产精品露出视频| 日韩欧美看国产| 日韩三级影视基地| 天天综合天天色| 欧美手机在线视频| 久久av高潮av无码av喷吹| 91丨九色丨国产丨porny| 蜜桃免费在线视频| 欧美三级网页| 日本免费一区二区三区| 国产精品视频一区视频二区| 91精品国产高清久久久久久久久 | h视频久久久| 国产成人黄色av| 成人免费看片| 亚洲情综合五月天| 成人av免费播放| 在线中文字幕不卡| 久操免费在线视频| 日本一区二区三区国色天香| 女教师高潮黄又色视频| 乱码第一页成人| 粉嫩av一区二区三区天美传媒 | a级黄色片免费看| 久久在线免费观看| 天堂在线精品视频| 久久99伊人| 特级西西人体www高清大胆| 久久99性xxx老妇胖精品| 亚洲自拍偷拍福利| 亚洲电影有码| 韩国一区二区电影| av超碰免费在线| 一区二区三欧美| 日本xxxx人| 欧美老女人第四色| 成年人视频免费| 欧美日韩国产专区| 激情综合网五月天| 亚洲人吸女人奶水| 欧洲性xxxx| www激情久久| 深夜视频在线观看| 国产一区二区三区在线观看免费| 成人午夜激情av| 午夜亚洲精品| 国产av天堂无码一区二区三区| 自拍欧美日韩| 在线播放 亚洲| 欧美一级精品| 青青草成人激情在线| 欧美日韩一区二区三区在线电影| 5566中文字幕一区二区| 日韩毛片免费看| 国产精品欧美久久久| 中文字幕在线视频久| 91精品91久久久久久| 黄污视频在线观看| 欧美另类精品xxxx孕妇| 国产原创精品视频| xvideos成人免费中文版| 思思99re6国产在线播放| 国产一区二区三区丝袜| 国产精品影院在线| 国产一区二区美女视频| 国产视频福利在线| 亚洲色图欧美制服丝袜另类第一页| 天堂av电影在线观看| 日韩高清有码在线| 日韩私人影院| 亚洲人a成www在线影院| 国产精品久久久久久久龚玥菲| 亚洲欧美在线x视频| 裸体xxxx视频在线| 国产亚洲a∨片在线观看| 电影在线高清| 日韩中文视频免费在线观看| 成人看av片| 久久久综合av| 成人午夜视屏| 国产精品欧美日韩久久| 91丨精品丨国产| 亚洲伊人久久综合| 国产精品99久久免费观看| 国产尤物91| 国产精品一线天粉嫩av| 亚洲精品一区二区三区av| 婷婷亚洲综合| www.九色.com| 久久国产88| 五月天av在线播放| 国产一区二区h| 中文字幕第3页| 久久综合狠狠综合久久激情 | 欧美成人国产va精品日本一级| av在线下载| 91精品国产色综合| 国产乱子精品一区二区在线观看| 国产日韩中文字幕在线| 美女精品久久| 免费久久久一本精品久久区| 日韩欧美在线中字| 国产成人永久免费视频| 亚洲一区国产| 国产成人在线综合| 波多野结衣一区二区三区| 亚洲av毛片基地| 亚洲另类色综合网站| 国产美女激情视频| 欧美久久一区二区| 天天影院图片亚洲| 久久精彩免费视频| 日本黄色免费在线| 成人免费网视频| 麻豆一区一区三区四区| 亚洲精品电影在线一区| 精品99视频| 黄色永久免费网站| 91捆绑美女网站| 亚洲不卡在线播放| 欧美性猛交xxxxx水多| 国产视频在线观看免费| 亚洲人成免费电影| av影视在线看| 成人黄色av网站| 九九视频免费观看视频精品| 国产av第一区| 日韩高清不卡一区二区三区| 一级黄色大片免费看| 国产欧美中文在线| 国产精品久久久免费视频| 欧美日韩国产高清一区二区三区| 天天色天天操天天射| 久久精品夜夜夜夜夜久久| 日韩av福利| 国产在线精品一区| 欧美成人中文| 亚洲免费黄色网| 国产欧美日韩视频在线观看| 日韩手机在线观看| 欧美一级搡bbbb搡bbbb| 成人亚洲综合天堂| 欧美在线视频观看| 哺乳挤奶一区二区三区免费看| 爱爱爱视频网站| 日韩福利视频导航| 国产伦精品一区二区三区妓女| 亚洲伦理在线精品| 国产免费www| 精品一区二区电影| heyzo高清在线| aa日韩免费精品视频一| 欧美成人一品| 99久久综合网| 亚洲日本在线天堂| 一区二区三区免费在线| 中文字幕亚洲色图| 免费视频观看成人| 亚洲在线欧美| 欧美aaa在线| 黄大色黄女片18免费| 欧美综合欧美视频| 国产精品麻豆一区二区三区 | av在线免费观看国产| 国产在线精品一区二区夜色| 在线观看亚洲网站| 这里只有精品电影| a级网站在线播放| 亚洲a一级视频| 欧美日韩免费| 在线xxxxx| 精品久久久久人成| 毛片免费在线播放| 国产精品自拍视频| 99久久婷婷| 波多野结衣免费观看| 一区二区三区四区精品在线视频 | 日韩在线免费| 日韩在线第一区| 麻豆精品精品国产自在97香蕉| 亚洲a∨无码无在线观看| 欧美乱妇15p| 中文字幕伦理免费在线视频| 国产高清一区视频| 99精品免费| 亚洲精品乱码久久久久久久久久久久 | 麻豆成人久久精品二区三区红| 国产在线综合视频| 欧美丰满少妇xxxxx高潮对白 | 亚洲色图另类专区| 国产jzjzjz丝袜老师水多| 国内精久久久久久久久久人| 亚洲欧美日本伦理| 色悠悠久久综合网| 亚洲欧美另类久久久精品2019| 亚洲黄色在线免费观看| 97精品一区二区视频在线观看| 国产区精品区| 国产福利在线免费| 亚洲国产成人av| 国产免费av在线| 51成人做爰www免费看网站| 亚洲一区国产| 国语对白在线播放| 亚洲精品成人久久| 欧美性生活一级| 人人妻人人澡人人爽欧美一区| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 66m—66摸成人免费视频| 国产亚洲一卡2卡3卡4卡新区 | 国产精品自拍第一页| 久久影视免费观看| 日韩欧美中文字幕电影| 亚洲免费av一区| 亚洲成人7777| 久久综合之合合综合久久| 国产在线欧美日韩| 国产在线视视频有精品| 综合激情网五月| 久久99热精品| 欧美裸体在线版观看完整版| 亚洲视频 中文字幕|