亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C語言項目開發-項目架構和編程命名規范

2019-11-06 09:40:51
字體:
來源:轉載
供稿:網友
一個項目的流程:

1、公司市場人員與客戶交流,了解客戶、引導客戶使用公司最優資源并產出一份市場需求文檔

2、公司需求人員(BA)與客戶交流,了解客戶需求并產出一個軟件需求文檔

3、項目經理、開發小組成員、需求人員(BA)一起開一個需求評審會議,對不合理的地方,

   打回給BA,再由BA與客戶溝通

4、程序員接到和充分了解軟件需求文檔后產生軟件設計文檔(包括概要設計文檔和詳細設計文檔,

   涉及到數據庫的還需要進行數據庫的設計)

5、程序員根據設計文檔進行編碼、調試、打包發布。如果編寫的函數庫,還可能編寫一份接口使用文檔,

   如果程序是直接運行的軟件,還需要編寫一份用戶使用手冊,包括各種操作步驟和配置參數說明

6、軟件發布后,客戶可能進行一段時間的測試、或者將其投入運營。這期間會發現一些問題,還需要

   程序員進行修復,這已經進行維護階段了,這個階段的周期很長,可能5年,也可能10年,或者更長

 

之所以寫了軟件項目的流程,只是想強調,軟件最花費時間的是維護階段。這個階段,維護人員可能是

原來的開發人員,但更可能是非原開發人員來維護的。在中國,IT從業人員流動性太大,一個項目的維護

更可能是之前沒接觸過這個項目的程序員。如果這個時候,文檔不齊全,將是一件很蛋疼的事情。

對一個程序員來說,這還不是一個最悲劇的事情。程序員要維護項目,最終還是要閱讀項目源代碼,

此時如果項目架構設計得很糟糕和代碼寫得亂七八糟的,想必維護人員在修改項目代碼時肯定會咒罵

原來的架構師和開發人員,正因為架構師的低水平設計,業務代碼、數據庫代碼、控制代碼深深耦合在

一起,改動一處總害得別人擔驚受怕,這因為開發人員沒有添加該有的注釋,命名的變量不能讓人見命思意,

編寫的代碼過渡冗余,重復的代碼多處使用,讓維護程序員改了這個地方卻不知道還有一個地方有相同的代碼

沒有修改,此時難保證維護程序員不砸了他的電腦。

 

每個公司都有自己的一套項目流程,自己的編程命名規范,

漸漸的,慢慢也形成了自己的編碼風格和命名風格。在此總結一下。這里主要總結C語言的,

因為java在這方面較C、C++做得相對夠好,就不啰嗦了,不過都有參考價值。

1、盡量不用全局變量

  全局很容易破壞軟件的結構,增加代碼的耦合度,將模糊業務代碼、數據庫代碼、控制代碼的界限,

  害得維護人員在閱讀代碼時,第一要務就是要追蹤全局變量在哪里,由于設計得不好,基本項目的

  所有源代碼文件都涉及修改了全局變量,這一追蹤下來,不是一天半會能夠摸索清楚你要了解的某個

  功能,盡管這個功能很小,你還是要看完這整個項目,太浪費時間了,不值得啊。

2、少用全局變量

  有些項目由于硬件資源的限制,比如嵌入式開發,你不得不使用全局變量。在這種不可避免的情況下,

  我們只能盡量減少使用全局變量。

3、別忘記加上static

   如果你使用到的全局變量僅僅是某個源文件(模塊)使用到,別忘記給這個全局變量加上static。

4、別忘記加上const

  如果你設計的接口(函數)有入參,而你不想修改這個入參,別忘記加上const。

5、明確哪些結構體、枚舉、聯合體、宏、常量需要全局使用,哪些需要全局使用

  如果有的結構體、枚舉、聯合體、宏、常量僅僅是某個模塊需要使用,就沒必要放置在公共的頭文件中

  如果結構體、枚舉、聯合體是需要公用的,就要考慮是否需要僅僅在公用頭文件中聲明,在某個源文件中

  實現,這樣可以避免某些類型重復定義的錯誤。

6、讓C代碼帶上面向對象的思想

  不像C++這樣即面向過程又面向對象的語言,更不像Java、C#這樣完全面向對象的語言,C語言僅僅是面向

  過程的,但是我們可以為C語言設計的項目插上面向對象的翅膀。

  1、面向對象的命名

               如我們在開發一個GUI庫,設計到GUI的初始化、加載字體、設置背景色、設置前景色等等操作,

    如果是沒有代碼面向對象的命名,可以這樣:

    Init、LoadFont、SetBgColor、SetFgColor

    如果是帶上面向對象的命名,則可以這樣:

    Gui_init、Gui_LoadFont、Gui_SetBgColor、Gui_SetFgColor

    這樣命名有個很好的好處,便于程序員記憶,我們在想到需要用到GUI的接口時,只需要打上Gui,

    好的集成開發環境就能快速提示所有的GUI庫函數,這無論對新接觸GUI這個庫,還是熟悉GUI庫的

    老牛們大大的提高效率。

  2、為僅在一個模塊內使用的全局變量加上static

    配合【1】的命名、Gui_Init、Gui_LoadFont、Gui_SetBgColor、Gui_SetFgColor等函數操作這個模塊內的全局變量,

    這個時候,GUI猶如一個類,模塊內的全局變量猶如C++、Java、C#等面向對象語言的GUI類的成員變量,Gui_Init等GUI庫函數

    猶如GUI類的成員函數。

  3、設計純潔的接口

    如代碼:

    void func(int *iResult)

         {

              *iResult = g_Val*10000 + 1000; // 使用了全局變量參數復雜運行的代碼

        }

    以上的代碼就需要以來g_Val這個全局變量,這種寫法已經污染了這個接口

   如果是純潔的接口,應當

       void func(int *iResult, const int iVal)

         {

              *iResult = iVal*10000 + 1000;

    }

    調用時:

    int iResult,g_val;

    func(&iResult, g_Val);

    這樣這個函數就不至于嚴重以來全局變量,你可以傳全局變量進來,也可以傳局部變量進來,

    純潔的接口并不關心這個。

7、命名規范

   1、全局變量加前綴g_,如定義一個全局變量int g_iVal;

   2、static變量加前綴s_,如定義一個模塊全局變量static int s_iVal;

   3、結構體變量加前綴st_,如COMM_PARA是一個已經定義好的結構體,則COMM_PARA stCommPara;

   4、枚舉變量加前綴e,如ENUM_SEX是一個已經定義好的枚舉,則ENUM_SEX eSex;

   5、int類型變量加前綴i,如int iRet;

   6、unsinged int類型加前綴ui,如unsigned int uiRetCode;

   7、float類型變量加前綴f,如float fVal;

      其實有了double類型,可以不用float,就盡量使用double。

   8、unsinged float類型變量加前綴uf,如unsinged float ufVal;

   9、double類型變量加前綴d,如double dVal;

   10、unsinged double類型變量加前綴ud,如unsinged double udVal;

   11、short int類型變量加前綴si,如short siVal;

   12、unsinged short類型變量加前綴usi,如unsinged short usiVal;

   13、如果定義一個bool類型的變量加前綴b,如int bFlag;char bFlag;

   14、如果定義的是一個字符串類型char[],

      如果字符串是需要以0結束符的字符串,則char szCountry[11+1];

      這種情況下的字符數組的大小寫法是字符個數+1的

      如果字符串不需要以0結束符的,則char sCountry[11];

   15、如果定義的是一個字符串類型char *,

      如果字符串是需要以0結束符的字符串,則char pszCountry[11+1];

      這種情況下的字符數組的大小寫法是字符個數+1的

      如果字符串不需要以0結束符的,則char psCountry[11];

   16、如果是一個指針類型,

      如果指針變量是通過malloc動態獲取內存的,則int * piValPtx;

      Ptx代表這個變量是需要動態釋放內存

      如果指針變來那個不是動態獲取內存的,則int piValPtr;

      如果帶上了Ptr或者Ptx的后綴,則前綴的p可省略

   17、項目的命名

      在公司內唯一

   18、文件的命名

      如果某些文件是項目唯一使用的,文件名稱加上“項目名稱簡寫”+ “_“作為前綴

   19、接口函數命名

      如果寫的是庫,則庫接口則應該是庫名稱加上“項目名稱簡寫”+ “_“作為前綴

   20、防止頭文件重復使用宏命名

      項目名稱簡寫”+ “_“ + “文件名" + “_“ + “H"

每周更新關注:http://weibo.com/hanjunqiang  新浪微博!手機加iOS開發者交流QQ群: 446310206


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品入口免费视频一| 精品亚洲一区二区| 成人午夜高潮视频| 国产精品99一区| 一本久久综合亚洲鲁鲁| 91干在线观看| 成人免费视频网址| 久久亚洲精品成人| 国产精品视频xxxx| 久久久在线视频| 欧美成人在线免费视频| 久久国产精品99国产精| 91高清视频在线免费观看| 日韩美女在线播放| 色偷偷9999www| 欧美成年人视频网站| 亚洲成人精品视频在线观看| 久久影视三级福利片| 亚洲国产成人在线播放| 欧美性极品少妇精品网站| 7m精品福利视频导航| 精品视频www| 中文字幕无线精品亚洲乱码一区| 欧洲亚洲在线视频| 国产精品亚洲一区二区三区| 国产一区二区三区精品久久久| 亚洲国产日韩欧美综合久久| 久久成人人人人精品欧| 国产精品扒开腿爽爽爽视频| 精品国偷自产在线视频| 欧美成人激情在线| 成人中心免费视频| 最近中文字幕日韩精品| 国产99久久精品一区二区 夜夜躁日日躁| 97国产成人精品视频| 欧美视频专区一二在线观看| zzjj国产精品一区二区| 米奇精品一区二区三区在线观看| 亚洲视频第一页| 91在线观看欧美日韩| 欧美成人精品h版在线观看| 高跟丝袜一区二区三区| 日本最新高清不卡中文字幕| 亚洲精品白浆高清久久久久久| 在线观看日韩专区| 久久九九热免费视频| 一区二区三区天堂av| 亚洲国产精品系列| 最好看的2019的中文字幕视频| 亚洲黄色av网站| 中文字幕在线看视频国产欧美在线看完整| 日韩网站免费观看高清| 久久国产加勒比精品无码| 国产精品久久久久久久久久三级| 欧美肥老太性生活视频| 国产精品入口夜色视频大尺度| 国产成人精彩在线视频九色| 欧美一级电影免费在线观看| 日韩欧美成人免费视频| 国产亚洲一区二区在线| 亚洲第五色综合网| 欧美日韩国产麻豆| 亚洲视频在线视频| 91麻豆国产精品| 欧美日韩一二三四五区| 精品久久久免费| 亚洲最大的成人网| 国产成人福利夜色影视| 成人激情电影一区二区| 在线精品国产欧美| 国产精品丝袜白浆摸在线| 国产亚洲精品久久久| 日韩欧美视频一区二区三区| 日产日韩在线亚洲欧美| 麻豆一区二区在线观看| 91性高湖久久久久久久久_久久99| 国产欧美在线视频| 正在播放欧美视频| 欧美一级高清免费| 成人福利网站在线观看11| 在线播放精品一区二区三区| 2019中文字幕在线观看| 青青久久av北条麻妃海外网| 最近2019中文字幕第三页视频| 久久激情五月丁香伊人| 亚洲久久久久久久久久久| 久久在线视频在线| 亚洲综合av影视| 久久理论片午夜琪琪电影网| 亚洲精品中文字幕女同| 亚洲国产欧美一区二区三区久久| 亚洲日韩中文字幕在线播放| 中文字幕一区二区精品| 91精品国产色综合久久不卡98口| 日韩中文字幕网址| 欧美激情第99页| 亚洲影院高清在线| 欧美精品在线观看| 国产精品pans私拍| 日本免费一区二区三区视频观看| 自拍偷拍亚洲一区| 欧美大学生性色视频| 91亚洲精品久久久| 激情成人在线视频| 中文国产亚洲喷潮| 欧美小视频在线| 成人免费在线视频网站| 亚洲欧美国产一区二区三区| 欧美激情亚洲综合一区| 国产精品你懂得| 日韩欧美国产黄色| 亚洲美女av黄| 亚洲xxxx视频| 88xx成人精品| 97视频在线观看亚洲| 91高清视频免费观看| 中文字幕av一区| 亚洲国产精品成人一区二区| 欧美精品国产精品日韩精品| 日韩精品久久久久久福利| 亚洲伊人久久综合| 日韩高清免费在线| 精品日韩中文字幕| 精品日本高清在线播放| 国产亚洲a∨片在线观看| 亚洲第一精品久久忘忧草社区| 欧美夫妻性生活xx| 韩国福利视频一区| 日韩黄色高清视频| 国产精品三级久久久久久电影| 精品夜色国产国偷在线| 日韩中文字幕视频| 欧美激情a∨在线视频播放| 日韩经典第一页| 在线日韩中文字幕| 欧美日韩国产一区二区三区| 91人人爽人人爽人人精88v| 国产丝袜一区视频在线观看| 国产99视频在线观看| 日韩国产高清污视频在线观看| 97久久精品人搡人人玩| 97视频在线播放| 亚洲色图激情小说| 成人免费淫片视频软件| 亚洲国产一区二区三区四区| 国内偷自视频区视频综合| 国产精品成人va在线观看| 成人在线一区二区| 国产日韩视频在线观看| 日韩中文在线中文网三级| 欧美日韩国产丝袜另类| 日韩av综合网| 国产精品久久久久久久久借妻| 欧美一区二区三区图| 亚洲成人在线网| 国产精品精品一区二区三区午夜版| 国产日韩综合一区二区性色av| 九九热精品视频在线播放| 韩国美女主播一区| 午夜精品久久久久久99热| 日韩欧美国产高清91| 欧美精品在线视频观看| 亚洲精品黄网在线观看| 日本一本a高清免费不卡|