• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            Cpper
            C/C++高級(jí)工程師 Android高級(jí)軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語(yǔ)言 程序猿
            摘要:本文主要討論如何書(shū)寫(xiě)權(quán)威的庫(kù)頭文件-c or cplusplus.
            如何書(shū)寫(xiě)權(quán)威的頭文件?
            這是個(gè)問(wèn)題
            如果看得代碼多了,經(jīng)驗(yàn)多了是不是可以得出權(quán)威的頭文件應(yīng)該滿足這個(gè)樣子?
            1.必要的版權(quán)格式或者文檔說(shuō)明
            2.作者,日期,地點(diǎn),版本等信息
            3.如果有必要盡可能不要使用中文,這些寫(xiě)出來(lái)的文件看上去很牛逼
            4.關(guān)于注釋:使用統(tǒng)一的注釋風(fēng)格 這樣弄出來(lái)的文件看上去很有美感
            5.盡可能使用統(tǒng)一的文件編輯器,免得影響在其他編輯器出來(lái)的效果
            6.使用宏防止重復(fù)包含頭文件
                比如 #ifndef ..
            7.考慮庫(kù)是不是平臺(tái)相關(guān)的
            如果必要加上判斷平臺(tái)的宏 這樣讀者會(huì)感覺(jué)專業(yè)很多    
            8.如果必要重新定義基本類型
            比如typedef unsigned int uint.----為了打造權(quán)威 我們一定要這樣做
            9.為了進(jìn)一步鞏固我們的權(quán)威形象-我們可以根據(jù)平臺(tái)加入需要的頭文件
            比如:
            #if defined(__FreeBSD__) && (__FreeBSD__ >= 2)
            /* Needed for __FreeBSD_version symbol definition */

            #else

            #endif
            10.盡可能的多使用宏
            比如一般情況下TRUE都是定義過(guò)的
            為了體現(xiàn)庫(kù)的權(quán)威性 我們這樣弄
            #ifndef TRUE
            #define TRUE 1
            #endif
            11.如果是c接口的庫(kù)
            頭文件還需要加上
            #ifdef  __cplusplus
            extern "C" {
            #endif
            12.對(duì)于命名格式 在保持統(tǒng)一的情況下我們最好不采用一般的命名格式
            不要使用通用的setValue也不采用SetValue或者set_value
            那如何寫(xiě)呢?
            可以這樣
            XX_setValue 在這里XX代表庫(kù)的縮寫(xiě)
            比如Python 就是Py
            專家就是要和別人不一樣
            13.如果是cplusplus庫(kù)接口,那么庫(kù)的頭文件中盡可能的使用抽象基類,甚至使用虛析構(gòu)函數(shù)。
            如果需要或者對(duì)象指針我們可以增加一個(gè)接口比如GetObject
            14.頭文件盡可能的不要包含不相關(guān)的內(nèi)容-原則讓用戶知道她想知道的隱藏她不需要的
            15.對(duì)于句柄類的我們一定要使用pimpl技法
            比如lua中的lua_State句柄就是typedef struct lua_State lua_State;
            16.如果需要命名空間,一般情況下我們會(huì)這樣比如:
            namespace core
            {
            ..
            }
            考慮到第10個(gè)原則這樣弄吧
            還是使用宏
            #define BEGIN_CORE_NAMESPACE namespace {
            #define END_CORE_NAMGESPACE }
            比如QT中就是這樣弄得
            BEGIN_QT_NAMESPACE
                 
            class QLabel;
                 
            class QSpinBox;
                 
            class QSlider;
                 
            class QAction;
            END_QT_NAMESPACE 
            freetype中類似的是FT_BEGIN_HEADER
            17.如果需要導(dǎo)出鏈接
            如果這樣寫(xiě)只能說(shuō)明你是初級(jí)水準(zhǔn)
            GAPI void G_CALL gTerminate();
            那如何寫(xiě)你?
            做法就是再定義一個(gè)后
            比如
            #define G_EXPORT(para) GAPI para G_CALL
            然后這樣使用
            G_EXPORT(void) gTerminate();
            如果這樣弄不想權(quán)威也不行
            18.總結(jié):
            權(quán)威就是要讓別人不能置否,要讓讀者知道這樣就是對(duì)的。

            PS:如果堅(jiān)持這樣,過(guò)不了多久,你肯定就是權(quán)威
            附注:雖然一切都是神馬



            posted on 2011-03-17 16:39 ccsdu2009 閱讀(2392) 評(píng)論(11)  編輯 收藏 引用 所屬分類: 軟件工程
            Comments
            • # re: 如何書(shū)寫(xiě)權(quán)威的程序庫(kù)頭文件
              Kevin Lynx
              Posted @ 2011-03-17 18:11
              - -| 別人那樣寫(xiě)是有原因的。尤其是跨平臺(tái)代碼(導(dǎo)致各種宏)、開(kāi)源代碼(導(dǎo)致各種版權(quán)注釋)、避免名字沖突的庫(kù)代碼(導(dǎo)致符號(hào)前綴)。。。  回復(fù)  更多評(píng)論   
            • # re: 如何書(shū)寫(xiě)權(quán)威的程序庫(kù)頭文件
              ccsdu2009
              Posted @ 2011-03-17 18:26
              @Kevin Lynx
              我這樣寫(xiě)也有原因 呵呵  回復(fù)  更多評(píng)論   
            • # re: 如何書(shū)寫(xiě)權(quán)威的程序庫(kù)頭文件
              linux23
              Posted @ 2011-03-18 00:17
              只能說(shuō)明你還處于一個(gè)很膚淺的總是沾沾自喜秀代碼的階段  回復(fù)  更多評(píng)論   
            • # re: 如何書(shū)寫(xiě)權(quán)威的程序庫(kù)頭文件
              zuhd
              Posted @ 2011-03-18 09:27
              #define BEGIN_CORE_NAMESPACE namespace {
              #define END_CORE_NAMGESPACE }

              對(duì)于這樣的宏 我實(shí)在是不敢茍同啊 和宏的初衷有點(diǎn)背離不是嗎?
              至少閱讀代碼時(shí)我要跟蹤下definition 裝B成分太多  回復(fù)  更多評(píng)論   
            • # re: 如何書(shū)寫(xiě)權(quán)威的程序庫(kù)頭文件
              溪流
              Posted @ 2011-03-18 09:29
              哈哈  回復(fù)  更多評(píng)論   
            • # re: 如何書(shū)寫(xiě)權(quán)威的程序庫(kù)頭文件
              pass by
              Posted @ 2011-03-18 09:52
              如果必要重新定義基本類型
              比如typedef unsigned int uint.----為了打造權(quán)威 我們一定要這樣做

              自己的代碼,實(shí)在是不想搞這么復(fù)雜,我說(shuō)真的  回復(fù)  更多評(píng)論   
            • # re: 如何書(shū)寫(xiě)權(quán)威的程序庫(kù)頭文件
              ccsdu2009
              Posted @ 2011-03-18 11:10
              @linux23
              呵呵  回復(fù)  更多評(píng)論   
            • # re: 如何書(shū)寫(xiě)權(quán)威的程序庫(kù)頭文件
              zwp
              Posted @ 2011-03-18 12:39
              一半搞笑,一半有用。  回復(fù)  更多評(píng)論   
            • # re: 如何書(shū)寫(xiě)權(quán)威的程序庫(kù)頭文件
              空明流轉(zhuǎn)
              Posted @ 2011-03-18 14:22
              @zuhd
              這個(gè)是為了避免namespace在大多數(shù)IDE的自動(dòng)格式化中導(dǎo)致縮進(jìn)。  回復(fù)  更多評(píng)論   
            • # re: 如何書(shū)寫(xiě)權(quán)威的程序庫(kù)頭文件
              cpp偽專家
              Posted @ 2011-03-18 14:22
              不知道樓主是真膚淺還是說(shuō)反話。  回復(fù)  更多評(píng)論   
            • # re: 如何書(shū)寫(xiě)權(quán)威的程序庫(kù)頭文件
              ccsdu2009
              Posted @ 2011-03-18 18:33
              @zwp
              如何覺(jué)得搞笑 你可以看看很多c++庫(kù)都是如何寫(xiě)的  回復(fù)  更多評(píng)論   
             
            亚洲国产精品婷婷久久| 99久久精品国产一区二区 | 国产精品久久久久9999高清| 91精品国产91久久久久久| 久久天天躁狠狠躁夜夜2020老熟妇| 99久久做夜夜爱天天做精品| 99久久免费只有精品国产| 国产精品久久久久久搜索| 国产精品久久久久久影院| 国内精品久久久久久99| 久久A级毛片免费观看| 精品多毛少妇人妻AV免费久久| 久久久久久久久久免免费精品| 色综合久久88色综合天天| 色综合合久久天天综合绕视看| 91精品观看91久久久久久| 狠狠人妻久久久久久综合| 激情五月综合综合久久69| 久久激情五月丁香伊人| 亚洲精品无码久久久久AV麻豆| 亚洲精品国产综合久久一线| 伊人久久五月天| 欧美一区二区三区久久综| 2022年国产精品久久久久| 久久A级毛片免费观看| 国产精品成人99久久久久 | 久久精品这里只有精99品| 久久精品国产一区二区| 亚洲日本久久久午夜精品| 午夜精品久久久久久99热| 久久天天躁狠狠躁夜夜网站| 久久99国产精品99久久| 久久精品国产色蜜蜜麻豆| 久久福利资源国产精品999| 久久精品国产亚洲AV无码麻豆 | 久久精品国产亚洲AV香蕉| 久久久国产乱子伦精品作者| 国产精品美女久久久久AV福利| 亚洲人AV永久一区二区三区久久 | 97久久精品午夜一区二区| 久久青青国产|