• <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 閱讀(2398) 評論(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++庫都是如何寫的  回復  更多評論   
             
            青青热久久国产久精品| 无码精品久久久天天影视| 国产精品免费看久久久| 狠狠精品久久久无码中文字幕 | 久久精品aⅴ无码中文字字幕不卡| 久久AV高潮AV无码AV| 久久精品人人做人人爽电影| 99久久精品免费观看国产| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 亚洲精品乱码久久久久久自慰| 精品久久香蕉国产线看观看亚洲 | 国产精品久久久天天影视| 国产激情久久久久影院| 亚洲色婷婷综合久久| 久久久久亚洲av毛片大| AV无码久久久久不卡蜜桃| 欧美午夜A∨大片久久| 国产精品久久久久9999高清| 亚洲人成无码www久久久| 国产ww久久久久久久久久| 久久香综合精品久久伊人| 久久久一本精品99久久精品88| 久久亚洲国产精品一区二区| 狠狠色狠狠色综合久久| 94久久国产乱子伦精品免费| 伊人久久国产免费观看视频| 88久久精品无码一区二区毛片| 一本色道久久综合亚洲精品| 久久天天躁狠狠躁夜夜2020老熟妇| 国产一级做a爰片久久毛片| 伊人久久大香线蕉av一区| 污污内射久久一区二区欧美日韩 | 精品一区二区久久| 亚洲色欲久久久综合网东京热| 久久亚洲精品国产亚洲老地址| 国产成人无码精品久久久免费| 精品999久久久久久中文字幕| 久久99国产精品99久久 | 99久久国产综合精品五月天喷水 | 久久久久国产一区二区三区| 77777亚洲午夜久久多人|