自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

漫談在Visual C++環(huán)境下進(jìn)行編程

開發(fā) 后端
本部分教程主要介紹了良好的C++代碼風(fēng)格、如何書寫安全的代碼以及在Visual C++環(huán)境下的程序調(diào)試技術(shù),這些內(nèi)容對(duì)于新員工從學(xué)生成長(zhǎng)為真正的程序員,逐步參與實(shí)際項(xiàng)目的開發(fā)工作。

Visual C++環(huán)境是基于C++語(yǔ)言發(fā)展起來的一種新的程序設(shè)計(jì)語(yǔ)言。C++語(yǔ)言誕生于20世紀(jì)70年代,是一種應(yīng)用相當(dāng)廣泛的程序設(shè)計(jì)語(yǔ)言(尤其是在系統(tǒng)程序設(shè)計(jì)領(lǐng)域),C++已經(jīng)成為最流行的程序設(shè)計(jì)語(yǔ)言之一。

規(guī)范易懂的代碼

現(xiàn)階段軟件開發(fā),都要依靠團(tuán)隊(duì)的合作。程序員不再是個(gè)人英雄主義的代名詞,程序員一方面要依賴大量其他程序員完成的代碼,一方面又提供大量代碼給其他人使用,代碼實(shí)際上具備了兩個(gè)要素:首先是可靠的提供某種功能,其次是清楚地表達(dá)作者的思想。#t#

任何交流都必須有一定的規(guī)范才能進(jìn)行,體現(xiàn)在代碼中就是規(guī)范易懂。另外,規(guī)范易懂的代碼才是可重復(fù)使用的,規(guī)范的代碼具有更長(zhǎng)的壽命,具有更好的可維護(hù)性,也更方便后期的擴(kuò)展。

好代碼的幾個(gè)特征

怎么樣的代碼才算規(guī)范易懂,體現(xiàn)在細(xì)節(jié)上會(huì)有無數(shù)的爭(zhēng)論,實(shí)際上無論風(fēng)格和習(xí)慣如何,好的代碼具有幾個(gè)共同的特征:
1. 良好的命名:好的變量名和函數(shù)名,讓閱讀代碼的人馬上就知道該變量或者函數(shù)的作用,很容易就能理解程序的大概結(jié)構(gòu)和功能。程序員有必要理解匈牙利命名法。
2. 一致性:一致性帶來更好的程序,一致的代碼縮進(jìn)風(fēng)格能夠顯示出代碼的結(jié)構(gòu),采用何種縮進(jìn)風(fēng)格并不重要,實(shí)際上,特定的代碼風(fēng)格遠(yuǎn)沒有一致的使用它們重要。
3. 注釋:注釋是幫助程序讀者的一種手段,程序作者也是未來的程序讀者之一。最好的注釋是簡(jiǎn)潔地點(diǎn)明程序的突出特征,或是提供一種概觀,幫助別人理解程序;但如果注釋只是說明代碼已經(jīng)講明的事情,或者與代碼矛盾,或者以精心編排的形式迷惑干擾讀者,那就是幫了倒忙。
養(yǎng)成好習(xí)慣

前面已經(jīng)提過,特定的代碼風(fēng)格遠(yuǎn)沒有一致的使用他們重要,所以,把過多的精力放到A or B的選擇上是浪費(fèi)時(shí)間,你要做的是堅(jiān)持。如何書寫規(guī)范易懂的代碼,如何養(yǎng)成良好的習(xí)慣,下面是一些提示。

1. 按照匈牙利命名法給變量和函數(shù)命名。
2. 遵循國(guó)際流行的代碼風(fēng)格。
3. 寫代碼的同時(shí)就遵循你的命名規(guī)范和書寫風(fēng)格,千萬(wàn)不能事后補(bǔ)救。
4. 利用工具(Parasoft C++ Test)檢查你的代碼,評(píng)估一下自己形成良好的習(xí)慣沒有。
5. 堅(jiān)持不懈直到養(yǎng)成習(xí)慣。

編寫安全可靠的代碼

在大型應(yīng)用軟件系統(tǒng)中,各個(gè)代碼片段共同構(gòu)成完整的系統(tǒng),代碼間的交互非常頻繁,程序崩潰往往并不在錯(cuò)誤發(fā)生的時(shí)候就發(fā)生,而是延遲了一段時(shí)間,經(jīng)過數(shù)個(gè)函數(shù)之間的中轉(zhuǎn)后才發(fā)生,此時(shí)定位和查找錯(cuò)誤非常費(fèi)時(shí)費(fèi)力,如何才能及時(shí)反映程序中的錯(cuò)誤,如何在代碼中避免一些幼稚的語(yǔ)義錯(cuò)誤呢?一個(gè)函數(shù)往往會(huì)被其他程序員拿來使用,但是他怎么能夠正確的使用其他人編寫的函數(shù)呢?這部分內(nèi)容能夠(部分)幫助解決這些問題。

契約編程
契約編程(Design by Contract)的思想在C++圣經(jīng)級(jí)的著作,Visual C++環(huán)境之父Bjarne Stroustrup的《C++程序設(shè)計(jì)語(yǔ)言》中略微提到過,OO領(lǐng)域的圣經(jīng)級(jí)著作《面向?qū)ο筌浖?gòu)造》以大篇幅闡釋了契約編程,現(xiàn)在越來越多的軟件開發(fā)人員認(rèn)識(shí)到契約編程的重要性,并逐步地在實(shí)際工作中采用契約編程。

對(duì)契約編程簡(jiǎn)單的解釋是:對(duì)實(shí)現(xiàn)的代碼塊(函數(shù)、類)通過規(guī)定調(diào)用條件(約束)和輸出結(jié)果,在功能的實(shí)現(xiàn)者和調(diào)用者之間定義契約。具體到我們的工作,開發(fā)人員應(yīng)該對(duì)完成的每個(gè)函數(shù)和類,定義契約。契約編程看似平淡無奇,對(duì)程序開發(fā)沒有什么具體的幫助,實(shí)際上,契約編程在開發(fā)階段就能夠最大程度的保證軟件的可靠性和安全性。

在實(shí)際工作中,每當(dāng)你需要使用其他程序員提供的模塊,你并不知道如何調(diào)用,也不知道你傳入的參數(shù)是否合法,有時(shí)候?qū)τ诠δ苣K的處理結(jié)果也不敢相信。這些本來應(yīng)該很明顯的信息因?yàn)槟K提供者沒有顯式的提供。

造成了調(diào)用者只能忐忑不安的摸著石頭過河,浪費(fèi)了大量時(shí)間,而且為了讓自己的代碼更安全可靠,在代碼中做了大量的判斷和假設(shè),造成代碼結(jié)構(gòu)的破壞和執(zhí)行效率的損失。

最后,調(diào)用者依舊不能確保自己的調(diào)用是正確的。而契約編程通過嚴(yán)格規(guī)定函數(shù)(或類)的行為,在功能提供者和調(diào)用者之間明確了相互的權(quán)利和義務(wù),避免了上述情況的發(fā)生,保證了代碼質(zhì)量和軟件質(zhì)量。

主動(dòng)調(diào)試
主動(dòng)調(diào)試指在寫代碼的時(shí)候,通過加入適量的調(diào)試代碼,幫助我們?cè)谲浖e(cuò)誤發(fā)生的時(shí)候迅速?gòu)棾鱿⒖?,告知開發(fā)人員錯(cuò)誤發(fā)生地點(diǎn),并中止程序。這些調(diào)試代碼只在Debug版中有效,當(dāng)經(jīng)過充分測(cè)試,發(fā)布Release版程序的時(shí)候,這些調(diào)試代碼自動(dòng)失效。

主動(dòng)調(diào)試和契約編程相輔相成,共同保證軟件開發(fā)的質(zhì)量。契約編程相當(dāng)于經(jīng)濟(jì)生活中簽訂的各種合同,而主動(dòng)調(diào)試相當(dāng)于某方不遵守合同時(shí)采取的法律懲罰措施。各種開發(fā)語(yǔ)言和開發(fā)工具都提供這些調(diào)試語(yǔ)句。Visual C++環(huán)境提供了assert函數(shù),MFC提供了ASSERT調(diào)試宏幫助我們進(jìn)行主動(dòng)調(diào)試,在實(shí)際工作中,建議統(tǒng)一使用MFC的ASSERT調(diào)試宏。

責(zé)任編輯:chenqingxiang 來源: 機(jī)械工業(yè)出版社
相關(guān)推薦

2010-01-20 10:49:29

Visual C++界

2010-01-11 09:28:34

C++編程

2010-01-11 10:28:51

C++編程

2012-04-05 09:33:18

Visual Stud

2010-01-12 10:50:59

學(xué)習(xí)C++

2011-03-30 14:49:00

Visual C++CPU

2010-01-18 15:19:41

Visual C++開

2010-01-11 11:02:59

Visual C++

2010-01-13 11:02:50

C++環(huán)境

2010-01-18 16:56:30

C++函數(shù)

2010-01-14 14:40:21

C++代碼

2021-06-02 08:13:28

VscodeVisual stduC++

2010-01-08 17:13:46

Visual C++環(huán)

2009-06-05 14:54:09

EclipseC++環(huán)境搭建

2023-01-12 23:21:15

編程GCC 標(biāo)志Linux

2010-01-12 09:59:08

Visual C++

2010-01-12 14:22:26

Visual C++

2010-01-20 13:29:40

C++環(huán)境

2010-01-12 18:00:30

Visual C++

2012-04-28 15:28:21

JNI混合編程Java
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)