1、 規格化設計算法
規格化抽象,即將執行的細節抽象爲用戶所需求的行爲(模塊作什麼)。編程
主要做用在於提升工程設計中的可維護性,可讀性,明確功能,使整個編程任務變得清晰有序以減小程序BUG。數據結構
說其發展歷史,彷佛顯得有些牽強,由於「規格化設計」這個標準的概念尚未獲得普遍運用以致於百度上進行查找全都是北航同窗的博客……不過相似的規範化設計仍然在計算機編程中發揮着比較重要的做用,在面向對象中,其主要衍生於數據抽象和過程抽象這樣的初始概念,以後因爲代碼維護的重要性結合面向對象的特色產生了規格化設計的概念,以此使程序井井有條有條不紊。學習
2、做業中規格BUG總結優化
第九次做業 : this
無規格BUG ;spa
第十次做業 : debug
REQUIRES規格bug2個 ; EFFECTS規格bug1個 ;設計
錯誤緣由 : (1)前置條件整型變量未限制範圍大於0 ; (2)前置條件格式不正確(\old的使用) ;對象
(3)後置條件用天然語言描述 ;
第十一次做業:
REQUIRES規格bug2個 ; 一個方法未寫規格 ;
錯誤緣由 : (1)前置條件整型變量未限制範圍 ; (2)前置條件國歌約束之間使用 " ; " 鏈接而不是" && " ;
錯誤緣由總結:
這幾此做業的規格bug出現緣由主要是由於未能覆蓋全部方法的全部約束,以及某些細節的格式錯誤。
3、規格改進實例
一、前置條件實例
(1)實例1
代碼段截圖:
前置條件更正爲:
time>=InitTime ;
(2)實例2
改進前:
更正爲:
p1!=null && p2!=null ;
(3)實例3
改進前:
前置條件改進爲:
command.detail.paidan!=null && command.detail.paidan.way!=null && command.detail.paidan.waytime!=null ;
(4)實例4
改進前代碼:
前置條件改進爲:
time>=0 ;
二、後置條件實例
(1)實例1
改進前:
後置條件改進爲:
(\exist int i; 0 <= i< queue.size;queue[i].from==this.from && queue[i].to==this.to && abs(queue[i].time-this.time)<100)==>\result==true;
(2)實例2
改進前代碼:
後置條件改進爲:
(\all int i; 0 <= i< str.size;(new command(str).IsLegel()==true ==>queue.contains(command)==true)) ;
4、規格撰寫心得體會
最後抒發如下本身這一個月的編程體會……
不得不說這一個月是我大學以來最無聊的編程體驗,由於幾乎全部的時間都圍繞着一個事情:扣分(不論是給別人扣分仍是被別人扣分,如何寫代碼已經把「不被扣分」放在了首要的位置)……
老師可能沒法體會到目前學院的OO課程氛圍是怎樣的,畢竟做爲決策者,中心是培養咱們的能力,至於採起的措施能不能起到效果或者說能不能真正起到利大於弊的效果,目前確實沒法下定論,可是能夠確定的是OO這門課程的學習氛圍確實很是差,最明顯的一點:每次週五十點之後朋友圈滿滿的負能量(這個各位同窗應該是深有體會的)…
我並非單純抱着吐槽的目的寫這些感想,由於我並不否定課程組的初衷,規格化的編程思想在工程設計中確實是很重要的,可是出發點與實際狀況經常會背道而馳,因此我想把真實狀況放映出來,同時表達一下本身對於課程的見解;
規格化設計的目的在於提升可維護性,提升可讀性,明確模塊的目的,經過編寫規格的時間大大減小更多的debug時間和代碼維護的時間,這樣看確實應該起到「事半功倍」的效果,可是因爲目前這種規格化設計的死板性和互測中標準的欠缺,咱們目前的狀況彷佛是「事倍功半」,而且…直接致使了OO互測再也不像是相互學習的途徑,而更像是一場沒有硝煙的戰爭,然而戰爭的結果卻沒法讓人信服(這也是爲何目前OO課的課程氛圍極差,充滿了負能量);
同爲編程爲基礎,我想同另外兩門課做爲對比:
一是大一的數據結構:大做業中同窗們能真正經過對課程知識的理解和實踐去探索挖掘其中的細節奧祕,以此不斷優化本身程序的算法(儘管時間只減小了1毫秒,仍然是貨真價實的提升);
二是大二上的計組:要求及其嚴苛,可是標準統一,評分乾脆,因此儘管艱難可是沒有抱怨過了就是過了沒過就是沒過,心服口服。
固然並非說OO就一無可取,OO也有它的優勢,而且面向對象自己的特性致使了不少時候在標準上就沒法作到徹底統一,可是針對目前OO課程的體系,是否能夠借鑑一下這兩門課的課程思想,尤爲是改善一下學院內的學習氛圍,若是一門課迫使你們一步步地把分數變爲絕對核心,同時這門課帶給你們的不是完成任務之後的興奮和成就感,而是相互「損害」瀰漫的負能量,想一想仍是挺悲哀的…
撇開評價不說,其實仍是須要感謝課程組對於每位同窗的付出,畢竟有時理想與現實總不能作到統一,或許老師和助教也是無奈……
只能但願這門課的體系能愈來愈完善,全部人的努力都會獲得回報,共勉…