• <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ǔ)言 程序猿
            摘要:本文主要討論如何書寫權(quán)威的庫(kù)頭文件-c or cplusplus.
            如何書寫權(quán)威的頭文件?
            這是個(gè)問題
            如果看得代碼多了,經(jīng)驗(yàn)多了是不是可以得出權(quán)威的頭文件應(yīng)該滿足這個(gè)樣子?
            1.必要的版權(quán)格式或者文檔說明
            2.作者,日期,地點(diǎn),版本等信息
            3.如果有必要盡可能不要使用中文,這些寫出來的文件看上去很牛逼
            4.關(guān)于注釋:使用統(tǒng)一的注釋風(fēng)格 這樣弄出來的文件看上去很有美感
            5.盡可能使用統(tǒng)一的文件編輯器,免得影響在其他編輯器出來的效果
            6.使用宏防止重復(fù)包含頭文件
                比如 #ifndef ..
            7.考慮庫(kù)是不是平臺(tái)相關(guān)的
            如果必要加上判斷平臺(tái)的宏 這樣讀者會(huì)感覺專業(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都是定義過的
            為了體現(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
            那如何寫呢?
            可以這樣
            XX_setValue 在這里XX代表庫(kù)的縮寫
            比如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)出鏈接
            如果這樣寫只能說明你是初級(jí)水準(zhǔn)
            GAPI void G_CALL gTerminate();
            那如何寫你?
            做法就是再定義一個(gè)后
            比如
            #define G_EXPORT(para) GAPI para G_CALL
            然后這樣使用
            G_EXPORT(void) gTerminate();
            如果這樣弄不想權(quán)威也不行
            18.總結(jié):
            權(quán)威就是要讓別人不能置否,要讓讀者知道這樣就是對(duì)的。

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



            posted on 2011-03-17 16:39 ccsdu2009 閱讀(2393) 評(píng)論(11)  編輯 收藏 引用 所屬分類: 軟件工程
            Comments
            • # re: 如何書寫權(quán)威的程序庫(kù)頭文件
              Kevin Lynx
              Posted @ 2011-03-17 18:11
              - -| 別人那樣寫是有原因的。尤其是跨平臺(tái)代碼(導(dǎo)致各種宏)、開源代碼(導(dǎo)致各種版權(quán)注釋)、避免名字沖突的庫(kù)代碼(導(dǎo)致符號(hào)前綴)。。。  回復(fù)  更多評(píng)論   
            • # re: 如何書寫權(quán)威的程序庫(kù)頭文件
              ccsdu2009
              Posted @ 2011-03-17 18:26
              @Kevin Lynx
              我這樣寫也有原因 呵呵  回復(fù)  更多評(píng)論   
            • # re: 如何書寫權(quán)威的程序庫(kù)頭文件
              linux23
              Posted @ 2011-03-18 00:17
              只能說明你還處于一個(gè)很膚淺的總是沾沾自喜秀代碼的階段  回復(fù)  更多評(píng)論   
            • # re: 如何書寫權(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: 如何書寫權(quán)威的程序庫(kù)頭文件
              溪流
              Posted @ 2011-03-18 09:29
              哈哈  回復(fù)  更多評(píng)論   
            • # re: 如何書寫權(quán)威的程序庫(kù)頭文件
              pass by
              Posted @ 2011-03-18 09:52
              如果必要重新定義基本類型
              比如typedef unsigned int uint.----為了打造權(quán)威 我們一定要這樣做

              自己的代碼,實(shí)在是不想搞這么復(fù)雜,我說真的  回復(fù)  更多評(píng)論   
            • # re: 如何書寫權(quán)威的程序庫(kù)頭文件
              ccsdu2009
              Posted @ 2011-03-18 11:10
              @linux23
              呵呵  回復(fù)  更多評(píng)論   
            • # re: 如何書寫權(quán)威的程序庫(kù)頭文件
              zwp
              Posted @ 2011-03-18 12:39
              一半搞笑,一半有用。  回復(fù)  更多評(píng)論   
            • # re: 如何書寫權(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: 如何書寫權(quán)威的程序庫(kù)頭文件
              cpp偽專家
              Posted @ 2011-03-18 14:22
              不知道樓主是真膚淺還是說反話。  回復(fù)  更多評(píng)論   
            • # re: 如何書寫權(quán)威的程序庫(kù)頭文件
              ccsdu2009
              Posted @ 2011-03-18 18:33
              @zwp
              如何覺得搞笑 你可以看看很多c++庫(kù)都是如何寫的  回復(fù)  更多評(píng)論   
             
            深夜久久AAAAA级毛片免费看| 国产精品gz久久久| 久久亚洲国产精品123区| 国内精品久久人妻互换| 久久亚洲日韩看片无码| 精品欧美一区二区三区久久久| 99久久精品国产麻豆| 亚洲级αV无码毛片久久精品| 色99久久久久高潮综合影院| 97久久精品人人澡人人爽| 日本免费久久久久久久网站| 国产精品九九九久久九九| 国产亚洲精久久久久久无码| 伊人久久无码中文字幕| 国产69精品久久久久久人妻精品| 一本色综合久久| 久久无码中文字幕东京热| 久久无码AV中文出轨人妻| 中文字幕热久久久久久久| 亚洲乱码精品久久久久..| 无码人妻久久一区二区三区免费丨| 中文成人久久久久影院免费观看| 久久久久久一区国产精品| 精品久久久久久久国产潘金莲| 亚洲精品无码久久久| 久久丫忘忧草产品| 精品久久久久久成人AV| 99精品伊人久久久大香线蕉 | 久久久噜噜噜久久| 亚洲国产天堂久久综合| 99精品国产免费久久久久久下载| 国产A三级久久精品| 99re这里只有精品热久久| 久久996热精品xxxx| 久久亚洲AV无码精品色午夜| 日日躁夜夜躁狠狠久久AV| 秋霞久久国产精品电影院| 久久精品中文字幕一区| 久久AV高潮AV无码AV| 成人a毛片久久免费播放| 亚洲另类欧美综合久久图片区|