• <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++庫都是如何寫的  回復  更多評論   
             
            无码8090精品久久一区| 国产精品无码久久久久久| 丁香五月综合久久激情| 国产精品久久久久乳精品爆| 久久综合伊人77777| 亚洲中文字幕无码久久精品1| 久久夜色精品国产噜噜噜亚洲AV| 97久久精品人妻人人搡人人玩| 国产精品热久久无码av| 国产精品亚洲综合久久| 精品综合久久久久久97超人 | 久久超碰97人人做人人爱| 嫩草影院久久99| 亚洲精品高清国产一线久久| 亚洲午夜久久久精品影院| 热久久视久久精品18| 精品久久久久久无码人妻热| 久久亚洲精品成人AV| 天天影视色香欲综合久久| 999久久久免费精品国产| 一本色道久久综合亚洲精品| 亚洲国产成人久久一区久久| 婷婷伊人久久大香线蕉AV| 伊人久久大香线蕉亚洲五月天| 99久久精品无码一区二区毛片| 亚洲午夜久久久影院伊人| 亚洲午夜精品久久久久久app| 99久久超碰中文字幕伊人| 日产精品久久久久久久| 久久精品国产久精国产一老狼| 久久国产成人| 久久精品中文字幕一区| 99久久国产亚洲高清观看2024 | 青青草原综合久久大伊人导航| 久久99国产精品二区不卡| 香蕉久久av一区二区三区| 久久九九兔免费精品6| 日本WV一本一道久久香蕉| 久久福利资源国产精品999| 99久久综合国产精品免费| 伊人伊成久久人综合网777|