成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

再談C語言的模塊化設(shè)計

開發(fā) 后端
模塊化首先用主程序、子程序、子過程等框架把軟件的主要結(jié)構(gòu)和流程描述出來,并定義和調(diào)試好各個框架之間的輸入、輸出鏈接關(guān)系。一起來看本文作者的觀點。

現(xiàn)代語言為了可以接近玩樂高積木的那樣直接組合現(xiàn)有的模塊,都對模塊化做了語言級別上的支持。我想這一點在軟件工程界也是逐步認識到的。C 語言實在是太老了。而它的晚輩 Go 就提供了 import 和 package 兩個新的關(guān)鍵字。

這也是我最為認可的方式。之前提到的方案只能說是對其拙劣的模擬。確認語言級的支持,恐怕也只能做到這一步了。

在項目實踐中,那個 USING 的方案我用了許多年,還算滿意。之前有過更為復(fù)雜“精巧”的方法,都被淘汰掉了。為什么?因為每每引入新的概念,都增加了新成員的學習成本。因為幾乎每個人都有 C 語言經(jīng)驗,但每個人的項目背景卻不同。接受新東西是有成本的。任何不是語言層面上的“必須”,都有值得商榷的地方。總有細節(jié)遭到質(zhì)疑。為什么不這樣,或許會更好?這是每個程序員說出或埋在心里的問題。

那個 USING 的方案遠不完美,它只是足夠簡潔,可以讓程序員勉強接受而已。但其實還不夠簡潔。因為從邏輯表達上來說,它是多余的。一個模塊使用了另一個模塊,代碼上已經(jīng)是自明的。從 C 語言的慣例上來說,只要 #include 了一個相關(guān)的 .h 文件,就證明它需要使用關(guān)聯(lián)的模塊。

光用宏的技巧很難只依靠一次 #include 就搞定正確的模塊初始化次序。因為 C 語言并沒有明顯的模塊概念。如果將每個子模塊都編譯為動態(tài)庫可能能一定的解決問題(我曾經(jīng)試過這種方案),但卻會引出別的問題。細粒度的動態(tài)庫局限性太大。

這兩天我結(jié)合這半年學習 Go 語言的體驗,又仔細考慮了一下這個問題。想到另一個解決方案。

如果我們能規(guī)范系統(tǒng)中子模塊 API 的命名規(guī)范,或許可以借助編譯器和相關(guān)工具來做一些 meta programming 的工作。

我們可以使用 objdump 來分析編譯好的 .o 文件。比如有一個模塊 foo ,實現(xiàn)在 foo.c 中。objdump -t 可以得到 .o 中引用以及導(dǎo)出的符號。

我們要求所有子模塊中的 C API 都遵守一致的命名規(guī)范,假設(shè)用馱峰命名的話,foo 模塊中的 Api 就看起來像這樣 fooApi 。objdump 的結(jié)果可以輕易的識別出規(guī)范內(nèi)的引用的其它子模塊有哪些。然后生成一個類似之前提到的 USING 方法可以調(diào)用的初始化函數(shù)。自定義的模塊初始化函數(shù)可以統(tǒng)一命名為 fooInit 的形式,當這個初始化函數(shù)存在,則由自動生成的代碼調(diào)用一下即可。

整個過程可能比較繁雜,但很容易用 make 這樣的構(gòu)建工具自動化進行。具體實現(xiàn)我就不列出了。或許不久會新開開源項目實踐一下。

原文鏈接:http://blog.codingnow.com/2011/04/module_initialization.html#more

【編輯推薦】

  1. C 語言對模塊化支持的欠缺
  2. 2.2 模塊化應(yīng)用程序
  3. CSS模塊化編碼 讓開發(fā)事半功倍
  4. 學習筆記 Flex模塊化詳盡解讀
責任編輯:于鐵 來源: 云風的BLOG
相關(guān)推薦

2010-01-20 09:14:49

C語言模塊化

2011-05-13 15:46:49

C模塊化

2013-08-20 15:31:18

前端模塊化

2016-12-21 17:02:35

數(shù)據(jù)中心MDC模塊化

2016-12-14 14:50:26

CSS預(yù)處理語言模塊化實踐

2019-08-28 16:18:39

JavaScriptJS前端

2020-09-17 10:30:21

前端模塊化組件

2019-07-11 14:16:27

數(shù)據(jù)中心設(shè)計系統(tǒng)

2020-09-18 09:02:32

前端模塊化

2009-08-17 10:11:12

C# Windows

2021-04-06 10:19:36

Go語言基礎(chǔ)技術(shù)

2022-09-05 09:01:13

前端模塊化

2010-03-11 17:24:27

Python編程語言

2016-10-09 11:03:41

Javascript模塊化Web

2023-12-25 22:24:36

C++模塊Module

2017-01-10 14:19:37

模塊化數(shù)據(jù)中心MTTR

2022-09-21 11:51:26

模塊化應(yīng)用

2017-05-18 10:23:55

模塊化開發(fā)RequireJsJavascript

2015-10-10 11:29:45

Java模塊化系統(tǒng)初探

2022-03-11 13:01:27

前端模塊
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 成人特级毛片 | 亚洲精品久久久久久宅男 | 国产日产欧产精品精品推荐蛮挑 | av中文字幕在线 | 亚洲成人免费av | 国产色婷婷精品综合在线手机播放 | 国产综合在线视频 | 日韩视频在线观看 | 欧美精品v国产精品v日韩精品 | 成人毛片网 | 婷婷久久综合 | 欧美亚洲另类丝袜综合网动图 | 欧美色综合一区二区三区 | 伊人久久在线 | 亚洲一区二区三区在线 | 黄视频网址 | 免费黄色av网站 | 丝袜毛片 | 在线视频一区二区三区 | 国产精品久久久久久久岛一牛影视 | 99久久精品一区二区成人 | 91大神在线看 | 欧美不卡一区二区 | 成人欧美一区二区三区黑人孕妇 | 欧一区 | 久久毛片 | 欧美在线国产精品 | 久久精品国产一区二区 | 亚洲视频一区二区三区四区 | 国产精品一区一区三区 | 免费视频一区二区三区在线观看 | 国产资源在线视频 | 日韩精品一二三区 | 日韩中文字幕一区 | 欧美456 | 亚洲 自拍 另类 欧美 丝袜 | 亚洲成人免费网址 | 日韩精品在线免费观看 | 精品国产91亚洲一区二区三区www | www精品美女久久久tv | 欧美精品在欧美一区二区 |