結對成員:馮志睿
結對程式設計的優點:首先,結對程式設計增強了代碼的品質,能夠有效的減少bug的出現;其次,友善結對程式設計的人員共享彼此的經驗和知識,獲得能力的互補;而且,
在程式設計過程中通過兩人的讨論,可以更快更有效地解決問題。
當然,結對程式設計也有一些不好的地方。比如:有較豐富程式設計經驗的人喜歡一個人獨立完成程式設計任務,與人協作時反而會感到不适應,起到反作用;當兩人水準差
距較大時,有經驗的一方可能會覺得煩躁,而新手此時卻會焦慮緊張,可能犯一些低級錯誤,導緻團隊合作不和諧;另外,有不同程式設計習慣的程式設計人員在共同程式設計的
過程中,可能會出現各執己見的情況,甚至造成兩人間的沖突。
結對成員馮志睿的優點很多,比如說:程式設計經驗豐富,負責任,态度友好,做事很有規劃,對待工作認真細緻等等;至于缺點,就是程式設計時喜歡單兵作戰。
information hiding
在我看來,資訊隐藏使得一個類把複雜的、敏感的、一旦被外界捕獲可能會引起不良後果的内容封裝在自身内部,這個類以外的代碼得不到此類資訊(通過反射
等手段可能得到),以提高程式的安全性與健壯性。對于資訊隐藏的利用:對于類的設計,類的所有成員變量都應聲明為private,對其通路都應該通過函數實作。
在類與類之間交換資訊時,要交流私有變量時,要用事先設計好的方法來通路,這樣如果我們在其它類裡面調用另外一個類的私有變量,那麼我們必須定義一個獲得
該類私有變量的方法;要在另一個類裡面改變另外一個類裡面的變量時,我們也要定義一個改變該類私有變量的方法。另外,在多層設計中層與層之間應該加入接口
層。
interface design
一個好的接口能夠提供給後面的程式設計一個良好的架構。這對于團隊項目來說是非常有用的一種設計。團隊合作中,有明确的分工,每個人負責不同的子產品,
這種情況下我們定義一套公用的接口用于子產品間的通訊,為我們提供了一種面向接口的程式設計思想,同時可以在某一子產品未完成時供另外的程式設計人員使用,大大提高
了團隊程式設計的效率。
loose coupling
loose coupling的設計使得類與類之間的依賴性變低,類與類好像是隔開了一樣,它們之間僅僅通過消息來聯系。是以我們在進行代碼設計時,不用擔心會破
環其他地方的代碼當代碼有改動時,不用大規模的改動代碼。
Design by Contract, Code Contract 的優缺點及作業融入
契約程式設計建立起使用者與程式設計人員之間的某些規範。比如說契約設計中會限制某一方法在調用時對傳入參數的要求,以及方法對傳回值的約定。契約程式設計對于
程式設計者來說無疑是相當友善的。上學期的面向對象中,一直被要求使用防禦式程式設計,程式設計人員要時刻考慮惡意輸入的情況,單是處理這一方面就要花費大量的
氣力。本次程式中,由于是指令行程式,就要求使用者在輸入指令時的參數形式等等遵循一定的規範,還有對于給定算式結果的正誤判定子產品,也要求給定的算式不
允許出現其他無關的特殊字元的情況。這對于我們程式的編寫來說提供了很大的便利。
unit test
單元測試這塊在上學期就已經使用過了,雖然是用的eclipse,但實際上是大同小異。基本上就是調用被測試的函數,按照函數的參數規定輸入符合要求的參數
并擷取傳回結果,與預期測試結果比較,相等則認為通過單元測試,否則便是未通過。
uml
算法實作
首先是對于算式的産生:首先根據給出的最大運算符個數,随機産生出算式的運算符,然後随機出運算符的優先級順序,并根據運算符以及各自的優先級順序
确定括号的有無及具體位置。最後再根據要求産生用于運算數字。而算式結果的計算以及對給定結果的正誤判斷則由一個統一的計算子產品進行,把算式當作字元串
讀入計算函數,采用堆棧的方式把中綴的表達式先轉化為字尾表達式,并将字尾表達式的每一塊都存在同一個棧裡,開始計算,每讀到一個運算符,就從棧裡彈出
兩個運算數,并将剛才讀到的運算符出棧,計算後将結果入棧,再重複以上的步驟知道棧中隻剩一個元素時既得到算式的最終結果。