結對編程:馮煒韜、楊子琛前端
- 結對編程
- 優勢
- 討論可以使設計思路更清晰,避免因設計緣由致使的recoding
- 編碼時出現問題可以及時被發現,減小找bug的時間
- 一人編碼時,partner能夠思考測試樣例,雙線並行
- 缺點
- 當一些時候,另外一我的可能比較浪費時間,好比工做量較大且多機械性操做,使效率降低
- 對時間和地點要求高,在當今互聯網時代,許多開源項目的合做者分佈在世界各地,沒法實現結對編程
- 我本身
- 優勢:對軟件結構有必定理解;有必定前端設計經驗;有必定數據建模經驗;有必定算法知識
- 缺點:一般懶於尋找現成的代碼工具包(主要緣由是這些包一般可能丟失某些東西或者依賴某些其餘包,致使麻煩),致使各類問題可能要本身編碼解決
- partner(楊子琛)
- 優勢:有必定數據建模經驗;有必定算法知識;有耐心;測試能力較好;能較快看懂別人代碼
- 缺點:???

(某結對編程情形)git
- 契約式編程與UML
- Design by Contract
- 優勢:能縱覽全局,保證代碼質量,減小重寫
- 缺點:增長設計時間,而且因爲功能可能存在變化,始終不可以作到不改設計
- 應用:並沒有完整的契約式編程設計,可是習慣使用一種相似的方式進行:從主函數開始寫起,從大至細,遇到能夠封裝的功能,先寫函數頭(完成該函數的輸入輸出約定,通常反作用不會影響編程),並不着急具體內容,當這一層的內容設計完畢,再從更細的一層開始寫:即BFS式編程。
- UML

- 編程契約(Code Contract)
- 爲了更好地實現契約式編程或者其相似形式,必須對代碼有形式化的要求,這便於管理,也便於工做交接
- 這裏項目較小,文檔太費時間,因此僅在全局變量及方法中注意了命名知義,部分有註釋
- VS自帶進行代碼格式修改,所以代碼格式統一
- 並未進行約束驗證
- 設計
- 功能設計
- 保留以前的大部分功能(輸出一條線路全部站點的功能除外), 新增顯示地圖(移動縮放及標記),顯示推薦線路,切換城市三大功能
- 用戶體驗部分新增許多細節可以使用戶更上手
- 界面設計
- 採用「輕薄」設計概念,減小軟件的複雜感,減小多餘的邊角邊框,讓軟件中每個部分都簡化到極致
- 提供多彩的主題,緩解用戶對界面的疲勞
- 設計原則
- 採起面向對象設計思路,高度接口化,成員所有私有,僅容許經過公有接口訪問
- 採起M/V兩層結構,數據與界面高度分離,下降耦合度
- 測試
對軟件的正確性、完整性、安全性和質量進行了測試,對其功能的正確性、效率以及異常處理能力進行了驗證。共進行了上百個功能正確性測試,並測試了十幾種異常狀況。最終程序順利經過全部測試,測試結果以下圖所示。因爲軟件限制沒法檢測代碼覆蓋率。github

測試結果:所有經過算法

*基礎功能編程

**多城市支持安全

***多彩主題函數
並未使用其餘組件,僅使用MFC自帶控件,減小軟件調用庫的數量(其實就是懶)工具
實現的算法關鍵:BFS搜索法、貪心算法、基本的座標變換測試
功能列表:編碼
- 三種模式推薦線路
- 顯示線路具體圖形,標註換乘站點,標註已經經過的站點,標註起末點
- 地圖選點設定起末點
- 更換不一樣城市的地圖
- 更換主題(7色主題任君選擇)
- 其餘細節(支持一鍵互換起末點,顯示站數和換乘數,雙擊listBox中的一項能夠設定當前所在站點,支持空白處和頂部位置拖動窗體)
- *附加
- 採用自定義格式文件保存地圖數據
- 將數據模型設定爲兩類:單城市地圖、城市列表
- 城市列表類管理數據文件夾中的map.list以及對應城市包
- 城市地圖類管理單個城市的地圖數據
- 程序無需變動,只需添加新城市地圖而且在map.list中註冊信息,軟件可自動載入地圖數據
github: https://github.com/Helicopt/metro
- **一些狡辯解釋
- 爲何不使用WPF等控件?A:對VS不熟,目前已經各類缺文件,若是再增長擴展,又不知道會報什麼錯,因爲時間緊張,放棄使用WPF;同時,私覺得WinForm的控件已經足夠使用,這個項目中WPF控件在功能上並沒有較大優點,同時用醜的控件寫出能看的界面的纔是好前端(誤。
- 爲何直接使用圖片做爲地圖?A:顯然本身畫圖顏值低(若是要好看還要學啥B樣條曲線,並且增長地圖座標數量)啊,並且有圖片我能夠超高速增長地圖包,簡單來講,你還在給線路分顏色的時候(線路顏色與官方不對應有損用戶使用體驗),我就作好了。至於擴展問題?地鐵線路並不是地面公路,變化可能性極低,頻率極低,擴展性並未減弱多少
- 爲何前面那些設計原則等寫這麼少字?A:感受定義什麼的就不說了吧,上網一查一大把