• <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++高級工程師 Android高級軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語言 程序猿
            摘要:本文主要討論如何書寫權威的庫頭文件-c or cplusplus.
            如何書寫權威的頭文件?
            這是個問題
            如果看得代碼多了,經驗多了是不是可以得出權威的頭文件應該滿足這個樣子?
            1.必要的版權格式或者文檔說明
            2.作者,日期,地點,版本等信息
            3.如果有必要盡可能不要使用中文,這些寫出來的文件看上去很牛逼
            4.關于注釋:使用統一的注釋風格 這樣弄出來的文件看上去很有美感
            5.盡可能使用統一的文件編輯器,免得影響在其他編輯器出來的效果
            6.使用宏防止重復包含頭文件
                比如 #ifndef ..
            7.考慮庫是不是平臺相關的
            如果必要加上判斷平臺的宏 這樣讀者會感覺專業很多    
            8.如果必要重新定義基本類型
            比如typedef unsigned int uint.----為了打造權威 我們一定要這樣做
            9.為了進一步鞏固我們的權威形象-我們可以根據平臺加入需要的頭文件
            比如:
            #if defined(__FreeBSD__) && (__FreeBSD__ >= 2)
            /* Needed for __FreeBSD_version symbol definition */

            #else

            #endif
            10.盡可能的多使用宏
            比如一般情況下TRUE都是定義過的
            為了體現庫的權威性 我們這樣弄
            #ifndef TRUE
            #define TRUE 1
            #endif
            11.如果是c接口的庫
            頭文件還需要加上
            #ifdef  __cplusplus
            extern "C" {
            #endif
            12.對于命名格式 在保持統一的情況下我們最好不采用一般的命名格式
            不要使用通用的setValue也不采用SetValue或者set_value
            那如何寫呢?
            可以這樣
            XX_setValue 在這里XX代表庫的縮寫
            比如Python 就是Py
            專家就是要和別人不一樣
            13.如果是cplusplus庫接口,那么庫的頭文件中盡可能的使用抽象基類,甚至使用虛析構函數。
            如果需要或者對象指針我們可以增加一個接口比如GetObject
            14.頭文件盡可能的不要包含不相關的內容-原則讓用戶知道她想知道的隱藏她不需要的
            15.對于句柄類的我們一定要使用pimpl技法
            比如lua中的lua_State句柄就是typedef struct lua_State lua_State;
            16.如果需要命名空間,一般情況下我們會這樣比如:
            namespace core
            {
            ..
            }
            考慮到第10個原則這樣弄吧
            還是使用宏
            #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.如果需要導出鏈接
            如果這樣寫只能說明你是初級水準
            GAPI void G_CALL gTerminate();
            那如何寫你?
            做法就是再定義一個后
            比如
            #define G_EXPORT(para) GAPI para G_CALL
            然后這樣使用
            G_EXPORT(void) gTerminate();
            如果這樣弄不想權威也不行
            18.總結:
            權威就是要讓別人不能置否,要讓讀者知道這樣就是對的。

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



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

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

              自己的代碼,實在是不想搞這么復雜,我說真的  回復  更多評論   
            • # re: 如何書寫權威的程序庫頭文件
              ccsdu2009
              Posted @ 2011-03-18 11:10
              @linux23
              呵呵  回復  更多評論   
            • # re: 如何書寫權威的程序庫頭文件
              zwp
              Posted @ 2011-03-18 12:39
              一半搞笑,一半有用。  回復  更多評論   
            • # re: 如何書寫權威的程序庫頭文件
              空明流轉
              Posted @ 2011-03-18 14:22
              @zuhd
              這個是為了避免namespace在大多數IDE的自動格式化中導致縮進。  回復  更多評論   
            • # re: 如何書寫權威的程序庫頭文件
              cpp偽專家
              Posted @ 2011-03-18 14:22
              不知道樓主是真膚淺還是說反話。  回復  更多評論   
            • # re: 如何書寫權威的程序庫頭文件
              ccsdu2009
              Posted @ 2011-03-18 18:33
              @zwp
              如何覺得搞笑 你可以看看很多c++庫都是如何寫的  回復  更多評論   
             
            Xx性欧美肥妇精品久久久久久| 国产69精品久久久久9999APGF| 国产日产久久高清欧美一区| 色综合久久中文综合网| 成人妇女免费播放久久久 | 久久有码中文字幕| 亚洲国产欧洲综合997久久| 久久免费小视频| 久久久噜噜噜久久中文字幕色伊伊 | 久久精品国产国产精品四凭| 99久久精品国产一区二区| 国产高潮久久免费观看| 久久亚洲私人国产精品vA| 日韩十八禁一区二区久久| 91久久香蕉国产熟女线看| 亚洲香蕉网久久综合影视| 久久无码人妻精品一区二区三区 | 色婷婷综合久久久久中文字幕| 久久久久久人妻无码| 国产精品99久久久精品无码| 国产亚洲成人久久| 久久久久久极精品久久久| 国产精品久久自在自线观看| 国内精品综合久久久40p| Xx性欧美肥妇精品久久久久久| 久久久精品2019免费观看| 久久综合久久美利坚合众国| 午夜福利91久久福利| 久久久久18| 日日狠狠久久偷偷色综合免费| 女人香蕉久久**毛片精品| 久久免费精品视频| 99热成人精品免费久久| 精品久久久久久99人妻| 久久精品国产99久久丝袜| 久久久中文字幕日本| 久久人人爽人爽人人爽av| 亚洲va久久久久| 99久久精品免费看国产一区二区三区| 久久久精品久久久久影院| 波多野结衣AV无码久久一区|