freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

高質(zhì)量cc編程指南(編輯修改稿)

2025-05-03 05:59 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 軟件產(chǎn)品,我內(nèi)心得意表面謙虛地向一位真正的軟件高手請(qǐng)教。他雖然從未涉足過(guò) 3D 圖形領(lǐng)域,卻在幾十分鐘內(nèi)指出該軟件多處重大設(shè)計(jì)錯(cuò)誤。讓人感覺(jué)那套軟件是用紙糊的華麗衣服,扯一下掉一塊,戳一下破個(gè)洞。我目瞪口呆地意識(shí)到這套軟件毫無(wú)實(shí)用價(jià)值,一年的心血白化了,并且害死了自己的軟件公司。人的頓悟通常發(fā)生在最心痛的時(shí)刻,在沮喪和心痛之后,我作了深刻反省, “面壁”半年,重新溫習(xí)軟件設(shè)計(jì)的基礎(chǔ)知識(shí)。補(bǔ)修“內(nèi)功”之后,又覺(jué)得腰板硬了起來(lái)。博士畢業(yè)前半年,我曾到微軟中國(guó)研究院找工作,接受微軟公司一位資深軟件工程師的面試。他讓我寫(xiě)函數(shù) strcpy 的代碼。太容易了吧?錯(cuò)!這么一個(gè)小不點(diǎn)的函數(shù),他從三個(gè)方面考查:(1)編程風(fēng)格;(2)出錯(cuò)處理;(3)算法復(fù)雜度分析(用于提高性能) 。在大學(xué)里從來(lái)沒(méi)有人如此嚴(yán)格地考查過(guò)我的程序。我化了半個(gè)小時(shí),修改了數(shù)次,他還不盡滿意,讓我回家好好琢磨。我精神抖擻地進(jìn)“考場(chǎng)” ,大汗淋漓地出“考場(chǎng)” 。這“高手”當(dāng)?shù)靡蔡C囊了。我又好好地反省了一次。我把反省后的心得體會(huì)寫(xiě)成文章放在網(wǎng)上傳閱,引起了不少軟件開(kāi)發(fā)人員的共鳴。我因此有幸和國(guó)產(chǎn)大型 IT 企業(yè)如華為、上海貝爾、中興等公司的同志們廣泛交流。大家認(rèn)為提高質(zhì)量與生產(chǎn)率是軟件工程要解決的核心問(wèn)題。高質(zhì)量程序設(shè)計(jì)是非常重要的環(huán)節(jié),畢竟軟件是靠編程來(lái)實(shí)現(xiàn)的。我們心目中的老手們和高手們能否編寫(xiě)出高質(zhì)量的程序來(lái)?不見(jiàn)得都能!就我的經(jīng)歷與閱歷來(lái)看,國(guó)內(nèi)大學(xué)的計(jì)算機(jī)教育壓根就沒(méi)有灌輸高質(zhì)量程序設(shè)計(jì)的觀念,教師們和學(xué)生們也很少自覺(jué)關(guān)心軟件的質(zhì)量。勤奮好學(xué)的程序員長(zhǎng)期在低質(zhì)量的程序堆中滾爬,吃盡苦頭之后才有一些心得體會(huì),長(zhǎng)進(jìn)極慢,我就是一例?,F(xiàn)在國(guó)內(nèi) IT 企業(yè)擁有學(xué)士、碩士、博士文憑的軟件開(kāi)發(fā)人員比比皆是,但他們?cè)诮邮艽髮W(xué)教育時(shí)就“先天不足” ,豈能一到企業(yè)就突然實(shí)現(xiàn)質(zhì)的飛躍。試問(wèn)有多少軟件開(kāi)發(fā)人員對(duì)正確性、健壯性、可靠性、效率、易用性、可讀性(可理解性) 、可擴(kuò)展性、可復(fù)用性、兼容性、可移植性等質(zhì)量屬性了如指掌?并且能在實(shí)踐中運(yùn)用自如?。 “高質(zhì)量”可不是干活小心點(diǎn)就能實(shí)現(xiàn)的!8 / 101我們有充分的理由疑慮:(1)編程老手可能會(huì)長(zhǎng)期用隱含錯(cuò)誤的方式編程(習(xí)慣成自然) ,發(fā)現(xiàn)毛病后都不愿相信那是真的!(2)編程高手可以在某一領(lǐng)域?qū)懗鰳O有水平的代碼,但未必能從全局把握軟件質(zhì)量的方方面面。事實(shí)證明如此。我到上海貝爾工作一年來(lái),陸續(xù)面試或測(cè)試過(guò)近百名“新” “老”程序員的編程技能,質(zhì)量合格率大約是 10%。很少有人能夠?qū)懗鐾耆腺|(zhì)量要求的 if 語(yǔ)句,很多程序員對(duì)指針、內(nèi)存管理一知半解,……。領(lǐng)導(dǎo)們不敢相信這是真的。我做過(guò)現(xiàn)場(chǎng)試驗(yàn):有一次部門(mén)新進(jìn) 14 名碩士生,在開(kāi)歡迎會(huì)之前對(duì)他們進(jìn)行“C++/C 編程技能”摸底考試。我問(wèn)大家試題難不難?所有的人都回答不難。結(jié)果沒(méi)有一個(gè)人及格,有半數(shù)人得零分。競(jìng)爭(zhēng)對(duì)手公司的朋友們也做過(guò)試驗(yàn),同樣一敗涂地。真的不是我“心狠手辣”或者要求過(guò)高,而是很多軟件開(kāi)發(fā)人員對(duì)自己的要求不夠高。要知道華為、上海貝爾、中興等公司的員工素質(zhì)在國(guó)內(nèi) IT 企業(yè)中是比較前列的,倘若他們的編程質(zhì)量都如此差的話,我們?cè)趺锤移谕行」灸贸龈哔|(zhì)量的軟件呢?連程序都編不好,還談什么振興民族軟件產(chǎn)業(yè),豈不胡扯。我打算定義編程老手和編程高手,請(qǐng)您別見(jiàn)笑。定義 1:能長(zhǎng)期穩(wěn)定地編寫(xiě)出高質(zhì)量程序的程序員稱為編程老手。定義 2:能長(zhǎng)期穩(wěn)定地編寫(xiě)出高難度、高質(zhì)量程序的程序員稱為編程高手。根據(jù)上述定義,馬上得到第一推論:我既不是高手也算不上是老手。在寫(xiě)此書(shū)前,我閱讀了不少程序設(shè)計(jì)方面的英文著作,越看越羞慚。因?yàn)榘l(fā)現(xiàn)自己連編程基本技能都未能全面掌握,頂多算是二流水平,還好意思談什么老手和高手。希望和我一樣在國(guó)內(nèi)土生土長(zhǎng)的程序員朋友們能夠做到:(1)知錯(cuò)就改;(2)經(jīng)常溫故而知新;(3)堅(jiān)持學(xué)習(xí),天天向上。9 / 101二、本書(shū)導(dǎo)讀首先請(qǐng)做附錄 B 的 C++/C 試題(不要看答案) ,考查自己的編程質(zhì)量究竟如何。然后參照答案嚴(yán)格打分。(1)如果你只得了幾十分,請(qǐng)不要聲張,也不要太難過(guò)。編程質(zhì)量差往往是由于不良習(xí)慣造成的,與人的智力、能力沒(méi)有多大關(guān)系,還是有藥可救的。成績(jī)?cè)讲?,可以進(jìn)步的空間就越大,中國(guó)不就是在落后中趕超發(fā)達(dá)資本主義國(guó)家嗎?只要你能下決心改掉不良的編程習(xí)慣,第二次考試就能及格了。(2)如果你考及格了,表明你的技術(shù)基礎(chǔ)不錯(cuò),希望你能虛心學(xué)習(xí)、不斷進(jìn)步。如果你還沒(méi)有找到合適的工作單位,不妨到上海貝爾試一試。(3)如果你考出 85 分以上的好成績(jī),你有義務(wù)和資格為你所在的團(tuán)隊(duì)作“C++/C 編程”培訓(xùn)。希望你能和我們多多交流、相互促進(jìn)。半年前我曾經(jīng)發(fā)現(xiàn)一顆好苗子,就把他挖到我們小組來(lái)。(4)如果你在沒(méi)有任何提示的情況下考了滿分,希望你能收我做你的徒弟。編程考試結(jié)束后,請(qǐng)閱讀本書(shū)的正文。本書(shū)第一章至第六章主要論述 C++/C 編程風(fēng)格。難度不高,但是細(xì)節(jié)比較多。別小看了,提高質(zhì)量就是要從這些點(diǎn)點(diǎn)滴滴做起。世上不存在最好的編程風(fēng)格,一切因需求而定。團(tuán)隊(duì)開(kāi)發(fā)講究風(fēng)格一致,如果制定了大家認(rèn)可的編程風(fēng)格,那么所有組員都要遵守。如果讀者覺(jué)得本書(shū)的編程風(fēng)格比較合你的工作,那么就采用它,不要只看不做。人在小時(shí)候說(shuō)話發(fā)音不準(zhǔn),寫(xiě)字潦草,如果不改正,總有后悔的時(shí)候。編程也是同樣道理。第七章至第十一章是專題論述,技術(shù)難度比較高,看書(shū)時(shí)要積極思考。特別是第七章“內(nèi)存管理” ,讀了并不表示懂了,懂了并不表示就能正確使用。有一位同事看了第七章后覺(jué)得“野指針”寫(xiě)得不錯(cuò),與我切磋了一把??墒沁^(guò)了兩周,他告訴我,他忙了兩天追查出一個(gè) Bug,想不到又是“野指針”出問(wèn)題,只好重讀第七章。光看本書(shū)對(duì)提高編程質(zhì)量是有限的,建議大家閱讀本書(shū)的參考文獻(xiàn),那些都是經(jīng)典名著。如果你的編程質(zhì)量已經(jīng)過(guò)關(guān)了,不要就此滿足。如果你想成為優(yōu)秀的軟件開(kāi)發(fā)人員,建議你閱讀并按照 CMMI 規(guī)范做事,讓自己的綜合水平上升一個(gè)臺(tái)階。上海貝爾的員工可以向網(wǎng)絡(luò)應(yīng)用事業(yè)部軟件工程研究小組索取 CMMI 有關(guān)資料,最好能參加培訓(xùn)。10 / 101三、版權(quán)聲明本書(shū)的大部分內(nèi)容取材于作者一年前的書(shū)籍手稿(尚未出版) ,現(xiàn)整理匯編成為上海貝爾網(wǎng)絡(luò)應(yīng)用事業(yè)部的一個(gè)規(guī)范化文件,同時(shí)作為培訓(xùn)教材。由于 C++/C 編程是眾所周知的技術(shù),沒(méi)有秘密可言。編程的好經(jīng)驗(yàn)應(yīng)該大家共享,我們自己也是這么學(xué)來(lái)的。作者愿意公開(kāi)本書(shū)的電子文檔。版權(quán)聲明如下:(1)讀者可以任意拷貝、修改本書(shū)的內(nèi)容,但不可以篡改作者及所屬單位。(2)未經(jīng)作者許可,不得出版或大量印發(fā)本書(shū)。(3)如果競(jìng)爭(zhēng)對(duì)手公司的員工得到本書(shū),請(qǐng)勿公開(kāi)使用,以免發(fā)生糾紛。預(yù)計(jì)到 2022 年 7 月,我們將建立切合中國(guó)國(guó)情的 CMMI 3 級(jí)解決方案。屆時(shí),包括本書(shū)在內(nèi)的約 1000 頁(yè)規(guī)范將嚴(yán)格受控。歡迎讀者對(duì)本書(shū)提出批評(píng)建議。林銳,2022 年 7 月11 / 101第 1 章 文件結(jié)構(gòu)每個(gè) C++/C 程序通常分為兩個(gè)文件。一個(gè)文件用于保存程序的聲明(declaration ) ,稱為頭文件。另一個(gè)文件用于保存程序的實(shí)現(xiàn)(implementation) ,稱為定義(definition)文件。C++/C 程序的頭文件以“.h”為后綴,C 程序的定義文件以 “.c”為后綴,C++ 程序的定義文件通常以“.cpp”為后綴(也有一些系統(tǒng)以“.cc”或 “.cxx”為后綴) 。 版權(quán)和版本的聲明版權(quán)和版本的聲明位于頭文件和定義文件的開(kāi)頭(參見(jiàn)示例 11) ,主要內(nèi)容有:(1)版權(quán)信息。(2)文件名稱,標(biāo)識(shí)符,摘要。(3)當(dāng)前版本號(hào),作者/修改者,完成日期。(4)版本歷史信息。/** Copyright (c) 2022,上海貝爾有限公司網(wǎng)絡(luò)應(yīng)用事業(yè)部* All rights reserved.* * 文件名稱: * 文件標(biāo)識(shí): 見(jiàn)配置管理計(jì)劃書(shū)* 摘 要: 簡(jiǎn)要描述本文件的內(nèi)容* * 當(dāng)前版本: * 作 者: 輸入作者(或修改者)名字* 完成日期: 2022年 7月 20日** 取代版本: * 原作者 : 輸入原作者(或修改者)名字* 完成日期: 2022年 5月 10日*/示例11 版權(quán)和版本的聲明 頭文件的結(jié)構(gòu)頭文件由三部分內(nèi)容組成:12 / 101(1)頭文件開(kāi)頭處的版權(quán)和版本聲明(參見(jiàn)示例 11) 。(2)預(yù)處理塊。(3)函數(shù)和類結(jié)構(gòu)聲明等。假設(shè)頭文件名稱為 ,頭文件的結(jié)構(gòu)參見(jiàn)示例 12。? 【規(guī)則 121】為了防止頭文件被重復(fù)引用,應(yīng)當(dāng)用 ifndef/define/endif 結(jié)構(gòu)產(chǎn)生預(yù)處理塊。? 【規(guī)則 122】用 include 格式來(lái)引用標(biāo)準(zhǔn)庫(kù)的頭文件(編譯器將從標(biāo)準(zhǔn)庫(kù)目錄開(kāi)始搜索) 。? 【規(guī)則 123】用 include “” 格式來(lái)引用非標(biāo)準(zhǔn)庫(kù)的頭文件(編譯器將從用戶的工作目錄開(kāi)始搜索) 。? 【建議 121】頭文件中只存放“聲明”而不存放“ 定義”在 C++ 語(yǔ)法中,類的成員函數(shù)可以在聲明的同時(shí)被定義,并且自動(dòng)成為內(nèi)聯(lián)函數(shù)。這雖然會(huì)帶來(lái)書(shū)寫(xiě)上的方便,但卻造成了風(fēng)格不一致,弊大于利。建議將成員函數(shù)的定義與聲明分開(kāi),不論該函數(shù)體有多么小。? 【建議 122】不提倡使用全局變量,盡量不要在頭文件中出現(xiàn)象 extern int value 這類聲明。// 版權(quán)和版本聲明見(jiàn)示例 11,此處省略。ifndef GRAPHICS_H // 防止 被重復(fù)引用define GRAPHICS_Hinclude // 引用標(biāo)準(zhǔn)庫(kù)的頭文件…include “” // 引用非標(biāo)準(zhǔn)庫(kù)的頭文件…void Function1(…)。 // 全局函數(shù)聲明…class Box // 類結(jié)構(gòu)聲明{…}。endif示例 12 C++/C 頭文件的結(jié)構(gòu)13 / 101 定義文件的結(jié)構(gòu)定義文件有三部分內(nèi)容:(1) 定義文件開(kāi)頭處的版權(quán)和版本聲明(參見(jiàn)示例 11) 。(2) 對(duì)一些頭文件的引用。(3) 程序的實(shí)現(xiàn)體(包括數(shù)據(jù)和代碼) 。假設(shè)定義文件的名稱為 ,定義文件的結(jié)構(gòu)參見(jiàn)示例 13。// 版權(quán)和版本聲明見(jiàn)示例 11,此處省略。include “” // 引用頭文件…// 全局函數(shù)的實(shí)現(xiàn)體void Function1(…){…}// 類成員函數(shù)的實(shí)現(xiàn)體void Box::Draw(…){…}示例 13 C++/C 定義文件的結(jié)構(gòu) 頭文件的作用早期的編程語(yǔ)言如 Basic、Fortran 沒(méi)有頭文件的概念,C++/C 語(yǔ)言的初學(xué)者雖然會(huì)用使用頭文件,但常常不明其理。這里對(duì)頭文件的作用略作解釋:(1)通過(guò)頭文件來(lái)調(diào)用庫(kù)功能。在很多場(chǎng)合,源代碼不便(或不準(zhǔn))向用戶公布,只要向用戶提供頭文件和二進(jìn)制的庫(kù)即可。用戶只需要按照頭文件中的接口聲明來(lái)調(diào)用庫(kù)功能,而不必關(guān)心接口怎么實(shí)現(xiàn)的。編譯器會(huì)從庫(kù)中提取相應(yīng)的代碼。(2)頭文件能加強(qiáng)類型安全檢查。如果某個(gè)接口被實(shí)現(xiàn)或被使用時(shí),其方式與頭文件中的聲明不一致,編譯器就會(huì)指出錯(cuò)誤,這一簡(jiǎn)單的規(guī)則能大大減輕程序員調(diào)試、改錯(cuò)的負(fù)擔(dān)。14 / 101 目錄結(jié)構(gòu)如果一個(gè)軟件的頭文件數(shù)目比較多(如超過(guò)十個(gè)) ,通常應(yīng)將頭文件和定義文件分別保存于不同的目錄,以便于維護(hù)。例如可將頭文件保存于 include 目錄,將定義文件保存于 source 目錄(可以是多級(jí)目錄) 。如果某些頭文件是私有的,它不會(huì)被用戶的程序直接引用,則沒(méi)有必要公開(kāi)其“聲明” 。為了加強(qiáng)信息隱藏,這些私有的頭文件可以和定義文件存放于同一個(gè)目錄。15 / 101第 2 章 程序的版式版式雖然不會(huì)影響程序的功能,但會(huì)影響可讀性。程序的版式追求清晰、美觀,是程序風(fēng)格的重要構(gòu)成因素??梢园殉绦虻陌媸奖扔鳛椤皶?shū)法” 。好的“書(shū)法”可讓人對(duì)程序一目了然,看得興致勃勃。差的程序“書(shū)法”如螃蟹爬行,讓人看得索然無(wú)味,更令維護(hù)者煩惱有加。請(qǐng)程序員們學(xué)習(xí)程序的“書(shū)法” ,彌補(bǔ)大學(xué)計(jì)算機(jī)教育的漏洞,實(shí)在很有必要。 空行空行起著分隔程序段落的作用??招械皿w(不過(guò)多也不過(guò)少)將使程序的布局更加清晰??招胁粫?huì)浪費(fèi)內(nèi)存,雖然打印含有空行的程序是會(huì)多消耗一些紙張,但是值得。所以不要舍不得用空行。? 【規(guī)則 211】在每個(gè)類聲明之后、每個(gè)函數(shù)定義結(jié)束之后都要加空行。參見(jiàn)示例 21(a)? 【規(guī)則 212】在一個(gè)函數(shù)體內(nèi),邏揖上密切相關(guān)的語(yǔ)句之間不加空行,其它地方應(yīng)加空行分隔。參見(jiàn)示例 21(b )// 空行void Function1(…){ …}// 空行void Function2(…){ …}// 空行void Function3(…){ …}// 空行while (condition){statement1。// 空行if (condition) {statement2。}else{statement3。}// 空行statement4。} 示例 21(a) 函數(shù)之間的空行 示例 21(b) 函數(shù)內(nèi)部的空行16 / 101 代碼行? 【規(guī)則 221】一行代碼只做一件事情,如只定義一個(gè)變量,或只寫(xiě)一條語(yǔ)句。這樣的代碼容易閱讀,并且方便于寫(xiě)注釋。? 【規(guī)則 222】if、for 、while、do 等語(yǔ)句自占一行,執(zhí)行語(yǔ)句不得緊跟其后。不論執(zhí)行語(yǔ)句有多少都要加{}。這樣可以防止書(shū)寫(xiě)失誤。示例 22(a)為風(fēng)
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1