成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

高級學者講述C++語言編程技巧

開發 后端
C++語言是面向過程的。C++和C#、Java這3種語言都使用了類似C風格的語法,但它們都是面向對象(OOP)的,在這里拿出來和大家分享一下。

C++語言積累了龐大的代碼基,這個代碼基不是一朝一夕能夠推翻的。D從語言角度來說的確優于C++語言但最關鍵的就是還沒有深入工業界,希望本文能教會你更多東西。

對于編寫的函數,除了明確的指定契約外,在函數開始處應該對傳入的參數進行檢查,確保非法參數傳入時立即報告錯誤信息。例如:

  1. BOOL GetPathItem ( int i , LPTSTR szItem , int iLen )  
  2. {  
  3. ASSERT ( i > 0 ) ;  
  4. ASSERT ( NULL != szItem ) ;  
  5. ASSERT ( ( iLen > 0 ) && ( iLen < MAX_PATH ) ) ;  
  6. ASSERT ( FALSE == IsBadWriteStringPtr ( szItem , iLen ) ) ;  
  7. }  
  8. 對指針的檢查尤其要注意,通常程序員會這樣進行檢查:  
  9. // An example of checking only a part of the error condition  
  10. BOOL EnumerateListItems ( PFNELCALLBACK pfnCallback )  
  11. {  
  12. ASSERT ( NULL != pfnCallback ) ;  

在上面的例子中,switch語句僅僅處理了GK_ENTITY_POINT和GK_ENTITY_PLINE兩種情況,應該是系統中當時只需要處理這兩種情況,但是如果后期系統需要處理更多的情況,而此時上面這部分代碼又沒有及時更新,或者是因為開發人員一時疏忽遺漏了。一個可能導致系統錯誤或者崩潰的bug就出現了,而使用ASSERT可以及時地提醒開發人員他的疏忽,盡可能快的消滅這個bug。

還有一些情況,在開發人員編寫代碼時,如果能夠確信在某一點出現情況A就是錯誤的,那么就可以在該處加上ASSERT,排除情況A。綜上所述,恰當、靈活的使用ASSERT進行主動調試,能夠極大提高程序的穩定性和安全性,減少調試時間,提高工作效率。

一些好的代碼風格也能夠幫助你避免一些幼稚的、低級的錯誤,而這種錯誤又是很難檢測到的。由于C++語言簡潔靈活的特性,有時候敲錯一個字符。或者漏敲一個字符,都有可能造成極大的災難,而這種錯誤并不是隨著你的編程水平和經驗的提高就能逐步避免的,誰都會敲錯字符,對吧。

比如程序員經常將等于邏輯判斷符==誤敲成賦值運算符=,對于我來說就不太可能程序運行出錯后才發現,因為我的習慣是,對于邏輯判斷,將常量置于==的左邊,如果我誤輸入了=,那么編譯的時候編譯器就會報錯。

法),無異于因噎廢食。”在所有可用C和C++的領域,C++都是比C更好的語言。當我說“更好的”時候,我說的是C++擁有比C更安全的類型檢查、更好的抽象機制、更優秀的庫。當然,凡事都有例外,如果你做的項目1)不大。

編碼中用不到什么抽象機制,甚至ADT(抽象數據類型,例如std::complex這種不含多態和繼承的)也用不到,RAII也用不到,異常也用不到。你連基礎庫(如,簡化資源管理的智能指針、智能容器)都用不著。那么也許你用C的確沒問題;所以如果你的情況如此,不用和我爭論,因為我無法反駁你。我們這里說的領域大致是Bjarne在“C++應用列表”里面列出來的那些地方。 #t#

底線是:如果把C++中的諸多不必要的復雜性去掉,留下那些本質的,重要的語言特性,簡化語言模型,消除歷史包袱。即便是C++的反對者也許也很難找到理由說“我還是不用C++”。在我看來,一個真正從實踐意義上理性反對使用C++語言的人只有一個理由:C++的復雜性帶來的混亂抵消乃至超過了C++的抽象機制和庫(在他的特定項目中)帶來的好處。

值得注意的是,這里需要避免一個陷阱,就是一旦人們認定了“C++語言不好”,那么這個理由就會“長出自己的腳來”,即,就算我們拿掉C++的復雜性,他們可能也會堅持還是不用C++,并為之找一堆理由。我假定你不是這樣的人。

不過,也許最可能的是他會說:“問題是我們今天用的C++并非如此(簡潔),你的假設不成立。”是的,我的假設不成立。但雖然我們無法消除復雜性,我們實際上是可以容易地避開復雜性,避短揚長的。這也是本文的要點,容我后面再詳述。

當然,到現在你可能還是會說。我還是不用C++語言因為我可以用D;或者如果你本來做的項目就不需要C++,你則可能會說,我用Python。首先,如果你的項目能用Java/Python乃至Ruby做,那么用C++是自討苦吃。

因為能用那些語言代表你的項目在效率上本身要求就不高,那么用一門效率上討不到太大好處,復雜性上卻綽綽有余的語言,有什么價值呢?其次,如果你的項目效率是很重要的,你可能會說可以用D。

責任編輯:chenqingxiang 來源: 天極
相關推薦

2010-01-12 10:40:22

C++程序員

2010-01-12 10:11:36

學習C++語言

2010-01-11 13:31:03

C++語言

2010-01-19 15:36:02

C++語言

2011-05-30 15:29:32

C++

2010-01-13 15:51:44

C++編程語言

2010-01-26 17:11:13

C++編程

2010-01-11 10:28:51

C++編程

2011-07-10 15:26:54

C++

2010-01-13 16:08:31

C++語言

2011-07-13 16:36:11

C++

2010-01-14 17:18:17

C++語言

2010-01-13 10:31:35

C++代碼

2010-01-11 15:55:51

C++語言

2010-01-13 14:17:53

C++編譯語言

2010-01-21 13:33:44

C++基類

2010-01-11 15:36:08

C++代碼

2010-01-11 10:41:05

C++編程

2010-02-06 09:53:26

C++ void

2023-11-21 22:36:12

C++
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 九九热视频这里只有精品 | 九九精品在线 | 国产98色在线 | 欧美日韩国产精品一区 | 亚洲乱码一区二区 | 国产精品无 | 中日字幕大片在线播放 | 国产精品一区三区 | 人干人人| 一本久久a久久精品亚洲 | 极品一区| 久久精品二区 | 久草视频观看 | 国产精品视频一二三区 | 国产欧美精品区一区二区三区 | 成人精品福利 | 国产一级片| 久久艹免费视频 | 国产伦一区二区三区四区 | 日日综合 | 久久久精品一区二区 | 国产96在线 | 欧美日韩精品影院 | 国产成人jvid在线播放 | 欧美一级全黄 | 成人美女免费网站视频 | 中文区中文字幕免费看 | 欧美a级成人淫片免费看 | 国产乱码精品一区二区三区中文 | 亚洲欧美视频 | 亚洲精品三级 | 91视频精选 | 色在线视频网站 | 日韩欧美国产一区二区 | 爱爱小视频| 亚洲精品欧美精品 | a在线视频观看 | 一区二区免费在线观看 | 国产成人一区二区三区精 | 国产精品成人久久久久 | 午夜爱爱网 |