天天看點

結對項目部落格

我的隊友是張啟東

(一)照至少一張照片, 展現兩人在一起合作程式設計的情況。說明結對程式設計的優點和缺點。結對的每一個人的優點和缺點在哪裡 (要列出至少三個優點和一個缺點)。

結對項目部落格

結對程式設計的優點:

(1)在開發層次,結對程式設計能提供更好的設計品質和代碼品質,兩人合作能有更強的解決問題的能力。

(2)對開發人員自身來說,結對工作能帶來更多的信心,高品質的産出能帶來更高的滿足感。

(3)在心理上,  當有另一個人在你身邊和你緊密配合, 做同樣一件事情的時候,  你不好意思開小差, 也不好意思糊弄。

(4)在企業管理層次上,結對能更有效地交流,互相學習和傳遞經驗,能更好地處理人員流動。因為一個人的知識已經被其他人共享。

結對程式設計的缺點:

(1)需要2個人,可能浪費勞動力

(2)需要2個人水準相近才能達到最佳效果,否則可能效率下降

我的優點:

(1)喜歡鑽研算法

(2)程式結構清晰

(3)能長時間工作,而且越深入越效率越高

我的缺點

(1)不喜歡寫注釋,對别人來說可能比較難讀懂

隊友的優點:

(1)算法思路巧妙

(2)程式風格好

(3)善于溝通

隊友的缺點:

(1)遇到bug會很煩躁

(二)看教科書和其它資料中關于 Information Hiding, interface design, loose coupling 的章節,說明怎樣利用這些好的設計方法。

Information Hiding:資訊隐藏指的是隐藏函數内部細節,僅對外公布你可以傳給我的參數個數、類型以及我能傳回給你什麼。這種設計方法很好地解決了多人協作程式設計時由于每個人想法不一造成難以合作的難題,每個人的思想都可以在函數内部實作,而通過規範的接口來互相調用。

Interface design:接口泛指實體把自己提供給外界的一種抽象化物(可以為另一實體),用以由内部操作分離出外部溝通方法,使其能被修改内部而不影響外界其他實體與其互動的方式。有了接口,我們就可以在項目開始前規劃好程式的結構,這樣每個人負責的那一部分工作都可以同步進行。而且當把每個人工作綜合起來的時候由于規範的接口存在将變得十分容易。

Loose coupling:一個軟體是由多個子程式組裝而成,而一個程式由多個子產品(方法)構成。 而内聚就是指程式内的各個子產品之間的關系緊密程度,耦合就是各個外部程度(子程式)之間的關系緊密程度。耦合是對某個元素與其他元素之間來凝結、感覺、和依賴的度量,這裡說的元素可以是功能、對象(類),也可以指系統、子系統、子產品。它取決于每個子產品之間的接口的複雜程度,調用子產品的方式——即有哪些資訊通過接口。可以通過:通過應用設計模式實作“低耦合”、合理的職責劃分、使用接口而不是繼承來降低耦合。

(三)看 Design by Contract, Code Contract 的内容,描述這些做法的優缺點, 說明你是如何把它們融入你的作業中的。

契約式程式設計就是在程式設計開始之前,先定下一個虛拟的契約,這個契約規定了類的規格包括前置條件、後置條件以及不變式。

這個做法的優點就是可以讓程式設計變得可靠、可驗證。

(四)通過截屏顯示你是如何用VS 的unit test 來保證你寫的類的品質的。顯示unit test 對你的寫的類(class) 的覆寫率

結對項目部落格
結對項目部落格
結對項目部落格
結對項目部落格
結對項目部落格

(五)畫出UML 圖顯示各個實體之間的關系 (畫一個圖即可)

結對項目部落格

(六)說明你的算法的關鍵 (不必列出源代碼), 以及獨到之處

算法實作:

算法有兩大部分,第一是生成表達式,第二是比對式子與結果,這兩部分都分别封裝成了函數——generate,match。算法中有兩個主要的類,分别是分數類(Fraction)和表達式類(Expression)。

分數類的屬性有分子、分母、運算符(在有些時候,需要把運算符和分數存在一個數組中),方法有加減乘除,化簡,判等,轉化為字元串。

表達式類的屬性有是否有括号、分數數組、運算符數組、運算符數目,方法有随機生成表達式、從字元串讀取表達式、計算表達式、化簡運算符數組、表達式判等、轉化為字元串。

還有四個異常類,分母為零、産生負數、格式錯誤、産生分數。

獨到之處:

計算表達式時候,從中綴表達式轉為字尾表達式,進而計算出結果;

判斷表達式是否相同時,判斷标準為如果所有運算數和所有運算符和結果都相同,就認為是相同的式子,這樣運算量相對小,而準确率很高。

在表達式字元串中,負數的兩邊用括号括起來,而在結果中,負數兩邊沒有括号。根據字元串建構函數時,先判斷兩個括号之間如果沒有運算符,則将這兩個符号删去。

如果輸入不合法或者有格式不對的表達式,則會在目前目錄生成error.txt檔案,其中輸出錯誤資訊。如果正确則不産生此檔案。