智汇工业-智慧工业、智能制造及工业智能、工业互联门户网站,专业的工业“互联网+”传媒

專家分享:注釋嵌入式軟件的十大技巧

來源:網(wǎng)絡(luò)

點(diǎn)擊:1216

A+ A-

所屬頻道:新聞中心

關(guān)鍵詞: 嵌入式,嵌入式軟件

      作者:JacobBeningo

      在軟件開發(fā)過程中沒有比獲得一個(gè)只有很少甚至沒有說明文檔的代碼庫而又要求進(jìn)行維護(hù)更具挑戰(zhàn)性的事情了。這些文檔不只是告訴工程師某個(gè)特定函數(shù)或變量是做什么的,而且能夠展示和傳達(dá)軟件為何以某個(gè)特定方式實(shí)現(xiàn)。在軟件實(shí)現(xiàn)過程中會(huì)作出成千上萬個(gè)決策,因此維護(hù)工程師甚至未來的你盡可能多地保留這些決策過程至關(guān)重要。

      注釋代碼的問題部分原因來自出貨壓力、不正確的設(shè)計(jì)以及注釋代碼是如何工作的事情沒有開發(fā)來得有趣或興奮這個(gè)事實(shí)!許多工程師(包括我自己)憎恨必須注釋代碼,但這項(xiàng)工作在嵌入式工程師開發(fā)過程中是如此重要,以致于我們絕對(duì)不能省略或三意二意地去做。然而,可以在軟件開發(fā)過程中記住一些技巧,它們有助于確保未來開發(fā)人員維護(hù)好代碼開發(fā)中的任何細(xì)微變動(dòng)。

      技巧1——隨時(shí)而不是過后進(jìn)行注釋

      交付產(chǎn)品的壓力經(jīng)常導(dǎo)致天馬行空般的編碼風(fēng)格,為了完成任務(wù)以便盡早推出產(chǎn)品,代碼是想到哪就編到哪。在瘋狂的代碼編寫過程中,很少想到記錄下代碼要完成的功能。等產(chǎn)品交貨后,設(shè)計(jì)人員才會(huì)回去瀏覽代碼并進(jìn)行“注釋”。這樣做的問題是,這時(shí)已經(jīng)距離寫完代碼幾周甚至幾個(gè)月的時(shí)間了!對(duì)一些工程師來說記起昨天早餐吃的是什么都很難,更不用說兩周前寫的一段代碼了。最終結(jié)果是不準(zhǔn)確的注釋說明,日后往往會(huì)引起誤解和缺陷。

      這里的技巧當(dāng)然是在進(jìn)行決策的同時(shí)隨時(shí)進(jìn)行注釋。形式化的外部文檔注釋過程無疑會(huì)降低開發(fā)人員的進(jìn)度,但向代碼庫中增加注釋真的不會(huì)占用更多時(shí)間。開發(fā)人員能夠做的第一件事是先對(duì)代碼要做什么事寫一些注釋行,然后再寫代碼。如果實(shí)現(xiàn)發(fā)生了變化,開發(fā)人員可以立即更新注釋。在任何情況下,在編寫代碼的同時(shí)寫下注釋只會(huì)節(jié)省時(shí)間和增加條理性,從而更少發(fā)生錯(cuò)誤,產(chǎn)品也能更快的上市。

      技巧2——自動(dòng)生成注釋文檔

      盡管對(duì)代碼做了很詳細(xì)的注釋,但總是有生成外部文檔的要求,以便任何人不看代碼就能明白程序功能。這個(gè)要求經(jīng)常導(dǎo)致雙倍的注釋工作量。幸運(yùn)的是,市場上有現(xiàn)成的工具可以自動(dòng)讀取代碼注釋、然后生成界面和代碼的其它文檔細(xì)節(jié)!幫助工程師避免必須做兩次相同的工作!一個(gè)具有這種功能的免費(fèi)工具例子是Doxygen。當(dāng)開發(fā)人員在編寫他們的代碼時(shí),他們以指定方式格式化他們的注釋,并提供他們想要在外部文檔中展示的細(xì)節(jié)內(nèi)容。然后他們就可以運(yùn)行Doxygen生成真實(shí)反映軟件內(nèi)注釋的html、rtf或pdf文檔。美妙的是如果你更新注釋,外部文檔也會(huì)自動(dòng)更新!

      技巧3——不要寫顯式的注釋

      雖然開發(fā)人員寫了代碼注釋,但如果注釋只是變量或函數(shù)名字的重復(fù),會(huì)特別令人惱火。注釋應(yīng)該是描述性的文字,需要提供顯式意思之外更多的細(xì)節(jié)!提供盡可能多的信息,而且不要忘了提及相關(guān)和關(guān)聯(lián)的變量或函數(shù)。開發(fā)人員應(yīng)該能夠只通過閱讀注釋就了解軟件的行為。圖1給出了一個(gè)注釋簡單映射數(shù)組代碼的例子。

    注釋嵌入式軟件的十大技巧

      圖1:映射數(shù)組。

      技巧4——提供使用例子以便更清楚地了解用途

      函數(shù)或變量注釋中包含如何使用它們的例子是很有用的。說應(yīng)該如何使用是一回事,但展示如何使用會(huì)讓人更清楚其用途。除了能夠減少錯(cuò)誤使用對(duì)象的機(jī)會(huì)外,還能給人一個(gè)更清晰的印象。圖2顯示了一個(gè)如何注釋函數(shù)的例子,它告訴開發(fā)人員應(yīng)該如何使用這個(gè)函數(shù),從而避免了容易出錯(cuò)的猜測過程,使人能夠更清晰地了解其用途。

    注釋嵌入式軟件的十大技巧

      圖2——使用例子。

      技巧5——創(chuàng)建注釋標(biāo)準(zhǔn)

      就像寫代碼一樣,為代碼開發(fā)注釋和文檔也應(yīng)該有個(gè)標(biāo)準(zhǔn)。由于注釋標(biāo)準(zhǔn)中不可能有許多條款,因此特別推薦向編寫代碼標(biāo)準(zhǔn)靠攏。也就是說確保小組中的每個(gè)成員以相同的方式進(jìn)行注釋和歸檔,從而確保開發(fā)的易用性。開發(fā)人員應(yīng)該專注于解決手頭的設(shè)計(jì)問題,而不是費(fèi)勁地去搞懂注釋。

      技巧6——使用文檔模板

      確保注釋遵循標(biāo)準(zhǔn)的最容易的方法是為頭文件、源文件和支持文件創(chuàng)建模板。當(dāng)創(chuàng)建一個(gè)新模塊時(shí),可以從模板入手,然后增加相關(guān)的信息。這將有助于確保文件信息塊、代碼段、函數(shù)和變量都用相同的格式注釋。這種方法的最大優(yōu)勢是能夠節(jié)省大量時(shí)間,并有助于減少將一個(gè)模塊拷貝到另一個(gè)偽模板時(shí)發(fā)生的拷貝粘貼錯(cuò)誤。為了讓生活更加輕松,我特意開發(fā)了可以用于定義頭文件和源文件的模板。

      技巧7——圖表的作用

      在一個(gè)項(xiàng)目的軟件實(shí)現(xiàn)階段開始之前,應(yīng)該有一個(gè)軟件設(shè)計(jì)階段。這個(gè)設(shè)計(jì)階段無疑會(huì)生成許多漂亮的圖(如流程圖和狀態(tài)機(jī)),并被用于實(shí)際實(shí)現(xiàn)。雖然這些文檔作為軟件的開發(fā)路線圖,但在開發(fā)和測試過程中總會(huì)出現(xiàn)偏差!遺憾的是,這些變化很少會(huì)返回到圖表中。結(jié)果是設(shè)計(jì)文檔和軟件的不匹配!在實(shí)現(xiàn)和測試階段將這些圖表放在手邊,以便發(fā)生上述偏差時(shí)這些圖表能及時(shí)得到更新。將這些圖表留到日后更新永遠(yuǎn)不是正確的做法。雖然我們總是有返回去更新或修復(fù)的良好愿望,但這永遠(yuǎn)不是合適的時(shí)機(jī)。

      技巧8——保持注釋框使用的一致性

      就像聽起來一樣奇怪,許多網(wǎng)絡(luò)爭論的內(nèi)容是何時(shí)、哪里使用何種類型的注釋框!不過嚴(yán)肅地講,不管你的信仰是什么,歸根到底是一致性問題。如果一個(gè)團(tuán)隊(duì)決定只使用/*…*/類型的注釋,那么就只使用這種類型。如果決定使用//類型,那就只使用//類型。作者個(gè)人的觀點(diǎn)是傾向于使用/*…*/進(jìn)行函數(shù)和模塊級(jí)說明,使用//進(jìn)行函數(shù)代碼說明。不管選擇是什么,確保每次都按同樣的方式去做,這樣有助于生活更加輕松。

      技巧9——使注釋更容易閱讀(即格式的美化)

      為了確保避免誤解并由此產(chǎn)生代碼缺陷,使代碼保持結(jié)構(gòu)化和容易閱讀很重要。注釋也一樣。偶爾結(jié)構(gòu)化的注釋會(huì)使眼睛很難捕捉注釋,更難捕捉不在合適位置的內(nèi)容。應(yīng)該對(duì)注釋進(jìn)行格式化處理,這樣如果代碼打印出來時(shí)(雖然現(xiàn)在不常打印,但我偶然仍會(huì)打印代碼)注釋就不會(huì)分到好幾頁上去。在大塊注釋(如文件頭或函數(shù)注釋)中,如果你使用塊指示器,千萬不要包含進(jìn)任何拖尾字符(如#或*),要不只會(huì)使文檔更新變得更加困難。

      技巧10——嵌入圖像和圖表

      借助自動(dòng)化工具的使用,在注釋文檔中包含編碼標(biāo)準(zhǔn)、縮寫詞、項(xiàng)目細(xì)節(jié)、要求和大量其它條款就成了可能。甚至能夠包含諸如流程圖等設(shè)計(jì)性圖表!使用這類功能允許代碼庫不僅包含執(zhí)行代碼和邏輯,還包含你想要了解的項(xiàng)目所有內(nèi)容,并且所有信息都放在同一個(gè)地方。

    (審核編輯: 小王子)

    聲明:除特別說明之外,新聞內(nèi)容及圖片均來自網(wǎng)絡(luò)及各大主流媒體。版權(quán)歸原作者所有。如認(rèn)為內(nèi)容侵權(quán),請(qǐng)聯(lián)系我們刪除。

    主站蜘蛛池模板: 自动缠绕机_帝虎包装设备(上海)有限公司_缠绕包装机 | 江苏美鑫食品科技有限公司 | 石牌坊价格_石雕农村门楼图片_石牌楼雕刻制作 _ 长城石雕 | 螺旋叶片_叶片成型机_叶片冷轧机-深州市广兴五金机械制造有限公司 | 制砂生产线,河卵石制砂机,洗砂机-巩义市铭德矿山设备厂 | 送料机-冲床送料机-伺服送料机 - 常州市佳王精密机械有限公司 | 秦皇岛市信恒电子科技有限公司| 前途汇医药科技(北京)有限公司| 轻触开关,拨动开关,德艺隆(DEALON)精密工业股份有限公司 | 上海网站建设公司|上海自适应网站制作|上海仿制网站建设公司-智淇网络 | 上海浩斌信息科技有限公司RFID读写器,IC卡读卡器,手持机,数据采集终端,电力仓库管理软件开发,固定资产软件,纱管标签,试剂管理,RFID试剂柜,档案管理,档案柜,智能货架 | 通信系统-通信人在线 | 展会设计搭建-展厅设计施工公司-展位展台设计搭建-深圳鼎泰展览 展柜设计定制-品牌展柜订做-展柜制作厂家「广州嘉艺展柜」 | 液压升降货梯_导轨式升降机_往复式提升机_济南宇轩机械厂家 | 辽宁正业集团云顶钢结构有限公司_葫芦岛云顶钢结构_葫芦岛轻钢彩板_葫芦岛钢结构工程 | 聚丙烯酰胺,聚合氯化铝,重金属捕捉剂,污泥调理剂,活性氧化铝,生石灰,反渗透阻垢剂,工业葡萄糖,硫酸铝,果壳活性炭,柱状活性炭,蜂窝活性炭,石英砂,锰砂-北京雁归来环保科技有限公司-以真诚为立足之本,以质量为生存之本,愿与海内外同仁共创双赢。雁归来人一路走来,气贯长虹,勇锐盖过怯弱,进取压倒苟安!我们紧扣时代脉搏,专注水处理、继往开来! | 潍坊卓瑞机械有限公司,输送设备,石灰消化设备,餐厨垃圾设备,化机浆设备,污泥脱水 | 石墨热场|PECVD石墨舟|碳碳框|燃料电池双极板|半导体石墨|光纤用石墨模具|石墨电极加工|石墨制品|上海弘竣新能源材料有限公司 | 山西档案架,智能档案密集架,手摇密集架,山西密集架厂家批发/报价 | 耐腐蚀磁力泵,直立式耐酸碱泵,立式耐酸碱泵,自吸式耐酸碱泵-杰凯泵业【官网】 | 武汉不锈钢水箱厂家_武汉不锈钢消防水箱定做批发_武汉不锈钢消防水箱加工厂 | 江西省力速数控机械有限公司丨火花机丨龙门加工中心丨镜面火花机丨卧式加工中心 | 欧洲_西班牙进口_燃木真火壁炉集成服务商_燃木壁炉官方网站.hergom | 黄山市惠康膳食管理服务有限公司 - 官网首页 | 水性漆_水性漆厂家_水性涂料加盟代理_两只璧琥全漆定制官网 | 维启科技-创造科技的无限可能 | 上海维启信息技术有限公司 建筑仿真 BIM 虚拟现实 VR AR 顶岗实习 建筑智能模型 | 宣传片拍摄-宣传片制作-三维动画-企业视频广告报价-北京环宇影音 | 中国工业网_网络工业品牌 资讯创造价值| 呼吸家官网|肺功能检测仪生产厂家|国产肺功能仪知名品牌|肺功能检测仪|肺功能测试仪|婴幼儿肺功能仪|弥散残气肺功能仪|肺功能测试系统|广州红象医疗科技有限公司|便携式肺功能仪|大肺功能仪|呼吸康复一体机|儿童肺功能仪|肺活量计|医用简易肺功能仪|呼吸康复系统|肺功能仪|弥散肺功能仪(大肺)|便携式肺功能检测仪|肺康复|呼吸肌力测定肺功能仪|肺功能测定仪|呼吸神经肌肉刺激仪|便携式肺功能 | 石家庄启恒企业管理咨询有限公司| 深圳专卖店设计,餐饮空间设计,酒店空间策划设计【左右高端人文空间设计公司】 | 河南电梯公司_郑州电梯公司_河南家用别墅电梯厂家-郑州嘉祥机电设备公司 | 无塔供水_无塔供水设备_全自动_石家庄工泉水处理设备有限公司_家用无塔供水器 | 上海瀚广科技(集团)有限公司,上海瀚广,瀚广 | 潍坊卓瑞机械有限公司,输送设备,石灰消化设备,餐厨垃圾设备,化机浆设备,污泥脱水 | 长春互联网运营值选星广传媒,长春短视频运营,长春新媒体运营,长春互联网运营,长春抖音运营,吉林视频号代运营,吉林快手代运营,短视频推广公司,公众号运营,微博运营,新媒体运营 | 宿州电机维修厂家,大型电机维修及二手电机修理到安徽鑫瑞特电机装备有限公司 | 上饶市蚂蚁搬家有限公司,上饶搬家公司,上饶同城搬家,上饶同城搬家电话,上饶搬家哪家好,上饶搬家公司电话 | 西安木包装箱出口托盘定做价格-抽真空实木包装箱免熏蒸木箱多层板木箱哪家好-模压托盘及白松原木-西安宇森木业 | 截止阀,电动,气动,手动,化工截止阀-上海申弘阀门有限公司 | 景德镇星瑞陶瓷有限公司--官网-景德镇星瑞陶瓷有限公司 |