04.21 尚學堂百戰程序員分享:結對編程的體驗

結對編程全部結束,我是core組的,所以寫一下在編程和對接過程的一些收穫

一、開始時的考慮:這個程序要求實現三種模式:整數、小數和分數,由於沒有硬性的規定,所以我把分數和證書合在一起做,當除法結果是整數時為整數運算,否則為分數運算。然後還要有不同的操作符種類,支持括號或者不支持,尚學堂•百戰程序員陳老師指出由於這個程序不僅要產生算式還要計算結果,而有括號和沒有括號的算式在計算上有很大區別,有括號的可以在產生時進行計算,沒有括號的需要另外寫計算的函數,所以在程序中使用了兩個函數來分別產生帶括號和不帶括號的。最後是關於小數的問題,由於無論使用哪一個系統函數都無法實現把小數按照設定的位數轉換成字符串(可能是我沒有找到,自己也不想寫一個轉換函數,人懶沒辦法…),所以只寫了支持小數點後0到4位的。

二、具體實現:在程序運行過程中根據傳入的參數來確定產生哪種模式的算式,比如若zerodiv是true則表示支持整數運算,無論精度是多少都沒有作用,若zerodiv是false精度是0則表示支持分數運算,操作數都是整數而結果可能不是整數,若zerodiv是false而精度不是0則表示支持小數運算,用這兩個參數來選擇哪種模式,而是否有括號則需要選擇不同的函數。在算式產生過程中所有操作數、運算符和運算符個數都是用隨機數產生。

尚學堂百戰程序員分享:結對編程的體驗

三、封裝和對接過程:開始時打算使用dll來封裝,之前也有做dll的一點經驗,可能是因為之前的dll程序比較簡單,沒有太多外部包含的東西,所以基本沒有問題,但是在這次封裝時出現了比較玄學的問題,把頭文件和c程序都放到dll裡面封裝,頭文件的路徑也設置好了,但是在生成解決方案時卻報錯說找不到頭文件,反覆設置了許多次都沒有解決,新建dll重新做之後還是沒有解決這個問題,可能是因為我添加頭文件的方式不對,以後再具體學習一下封裝的方法。所以在最後我們採用了.h文件的方式,雖然代碼可能被修改但是實際對接時卻方便了許多。

在與UI組對接時由於我們採用頭文件的方式,UI組只需要將對應的頭文件和c程序包含進去就可以使用,所以有的組對接的特別順利,很好的實現了功能,但是有的組對接時出現了一點問題,由於我們傳出去的是文件或者是字符串向量,在UI組使用時可能接口設置的有差別,有時候不能完整的顯示算式,比如有一個組在顯示時只顯示了運算符,操作數沒有顯示出來,後來發現是因為數據類型沒有對應上,在修改之後就可以正常使用了。由此可見接口的統一特別重要,可以避免許多的麻煩,而且在調試時也會縮小範圍,但是我們開始時沒有考慮到這一點,導致了許多不該有的問題,所以在具體開始編程之前需要全面的考慮可能出現的問題,減輕之後的負擔。

四、經驗總結:一、結對編程的意義:結對編程主要是通過兩個人合作來實現事半功倍的效果,兩個人可以交流而一個人不行,交流可以使兩個思維產生更多的靈感,不斷的產生新想法來更好的解決問題,而兩個人一起編程也可以避免因為手誤而產生的bug,減少以後調試的時間。二、接口設計的重要性:一個項目包含兩部分,一個是內部實現方法,一個是內外的接口,這兩部分都很重要,一個好的接口可以簡化使用,更好的體現功能,也可以將內部的實現隱藏起來,保護程序不被修改,但是在這次作業中我們忽視了接口的統一,導致在對接時產生了許許多多的問題,解決這些問題花費了對接的大部分時間,所以以後需要在接口方面多加考慮。總之這次結對編程收穫還是很大的,學到了封裝、對接和一點QT的知識。


分享到:


相關文章: