国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

在未來時態下開發C++程序

2019-11-17 05:47:23
字體:
來源:轉載
供稿:網友
在未來時態下開發C++程序(圖一)  在未來時態下開發C++程序(圖二)
  數據結構學習講座(C++版)

  好的軟件能夠適應變化。它提供新的特性,適應到新的平臺,滿足新的需求,處理新的輸入。   新的函數將被加入到函數庫中,新的重載將發生,于是要注重那些含糊的函數調用行為的結果;新的類將會加入繼續層次,現在的派生類將會是以后的基類,并已為此作好預備;將會編制新的應用軟件,函數將在新的運行環境下被調用,它們應該被寫得在新平臺上運行正確;程序的維護人員通常不是原來編寫它們的人,因此應該被設計得易于被別人理解、維護和擴充。  這么做的一種方法是:用C++語言自己來表達設計上的約束條件,而不是用注釋或文檔。例如,假如一個類被設計得不會被繼續,不要只是在其頭文件中加個注釋,用C++的方法來阻止繼續。  假如一個類需要其實例全部創建在堆中,不要只是對用戶說了這么一句,用以前介紹過的方法來強迫這一點。  假如拷貝構造和賦值對一個類是沒有意義的,通過申明它們為私有來阻止這些操作。  應該判定一個函數的含意,以及它被派生類重定義的話是否有意義。假如是有意義的,申明它為虛,即使沒有人立即重定義它。假如不是的話,申明它為非虛,并且不要在以后為了便于某人而更改;確保更改是對整個類的運行環境和類所表示的抽象是有意義的。  處理每個類的賦值和拷貝構造函數,即使“從沒人這樣做過”。他們現在沒有這么做并不意味著他們以后不這么做。假如這些函數是難以實現的,那么申明它們為私有。這樣,不會有人誤調編譯器提供的默認版本而做錯事(這在默認賦值和拷貝構造函數上經常發生)。  基于最小驚奇法則:努力提供這樣的類,它們的操作和函數有自然的語法和直觀的語義。和內建數據類型的行為保持一致:拿不定主意時,仿照int來做。  要承認:只要是能被人做的,就有人這么做(WQ:莫菲法則)。他們會拋異常;會用自己給自己賦值;在沒有賦初值前就使用對象;給對象賦了值而沒有使用;會賦過大的值、過小的值或空值。一般而言,只要能編譯通過,就有人會這么做。所以,要使得自己的類易于被正確使用而難以誤用。要承認用戶可能犯錯誤,所以要將你的類設計得可以防止、檢測或修正這些錯誤。  努力于可移植的代碼。寫可移植的代碼并不比不可移植的代碼難太多,只有在性能極其重要時采用不可移植的結構才是可取的。即使是為特定的硬件設計的程序也經常被移植,因為這些平臺在幾年內就會有一個數量級的性能提升。可移植的代碼使得你在更換平臺是比較輕易,擴大你的用戶基礎,吹噓支持開放平臺。這也使得你賭錯了操作系統時比較輕易補救。 將你的代碼設計得當需要變化時,影響是局部的。盡可能地封裝;將實現細節申明為私有。只要可能,使用無名的命名空間和文件內的靜態對象或函數。避免導致虛基類的設計,因為這種類需要每個派生類都直接初始化它--即使是那些間接派生類。避免需要RTTI的設計,它需要if...then...else型的瀑布結構。每次,類的繼續層次變了,每組if...then...else語句都需要更新,假如你忘掉了一個,你不會從編譯器得到任何告警。  未來時態的考慮只是簡單地增加了一些額外約束:  ·提供完備的類,即使某些部分現在還沒有被使用。假如有了新的需求,你不用回過頭去改它們。  ·將你的接口設計得便于常見操作并防止常見錯誤。使得類輕易正確使用而不易用錯。例如,阻止拷貝構造和賦值操作,假如它們對這個類沒有意義的話。防止部分賦值。  ·假如沒有限制你不能通用化你的代碼,那么通用化它。例如,假如在寫樹的遍歷算法,考慮將它通用得可以處理任何有向不循環圖。  未來時態的考慮增加了你的代碼的可重用性、可維護性、健壯性,已及在環境發生改變時易于修改。它必須與進行時態的約束條件進行取舍。太多的程序員們只關注于現在的需要,然而這么做犧牲了其軟件的長期生存能力。是與眾不同的,是離經叛道的,在未來時態下開發程序。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 土默特左旗| 景谷| 建湖县| 梧州市| 抚宁县| 寿宁县| 抚顺县| 惠来县| 平乡县| 呼和浩特市| 镇坪县| 乌审旗| 甘谷县| 聂荣县| 浦县| 尉犁县| 万源市| 祁连县| 新闻| 扶绥县| 龙岩市| 泾源县| 上犹县| 蓬安县| 宁河县| 乌审旗| 江阴市| 鹰潭市| 登封市| 原阳县| 常德市| 肇东市| 平泉县| 高陵县| 百色市| 天气| 榆林市| 通道| 开化县| 太湖县| 榆林市|