結對項目-地鐵出行路線規劃程序(續)

結對編程:馮煒韜、楊子琛前端

 

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

(某結對編程情形)git

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

 

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

對軟件的正確性、完整性、安全性和質量進行了測試,對其功能的正確性、效率以及異常處理能力進行了驗證。共進行了上百個功能正確性測試,並測試了十幾種異常狀況。最終程序順利經過全部測試,測試結果以下圖所示。因爲軟件限制沒法檢測代碼覆蓋率。github

測試結果:所有經過算法

  • 實現細節

 

 

*基礎功能編程

 

 

 

 

**多城市支持安全

 

 

 

 

***多彩主題函數

 

  並未使用其餘組件,僅使用MFC自帶控件,減小軟件調用庫的數量(其實就是懶)工具

實現的算法關鍵:BFS搜索法、貪心算法、基本的座標變換測試

功能列表:編碼

  1. 三種模式推薦線路
  2. 顯示線路具體圖形,標註換乘站點,標註已經經過的站點,標註起末點
  3. 地圖選點設定起末點
  4. 更換不一樣城市的地圖
  5. 更換主題(7色主題任君選擇)
  6. 其餘細節(支持一鍵互換起末點,顯示站數和換乘數,雙擊listBox中的一項能夠設定當前所在站點,支持空白處和頂部位置拖動窗體)

 

  • *附加
    • 採用自定義格式文件保存地圖數據
    • 將數據模型設定爲兩類:單城市地圖、城市列表
    • 城市列表類管理數據文件夾中的map.list以及對應城市包
    • 城市地圖類管理單個城市的地圖數據
    • 程序無需變動,只需添加新城市地圖而且在map.list中註冊信息,軟件可自動載入地圖數據

github:   https://github.com/Helicopt/metro

  • **一些狡辯解釋
    • 爲何不使用WPF等控件?A:對VS不熟,目前已經各類缺文件,若是再增長擴展,又不知道會報什麼錯,因爲時間緊張,放棄使用WPF;同時,私覺得WinForm的控件已經足夠使用,這個項目中WPF控件在功能上並沒有較大優點,同時用醜的控件寫出能看的界面的纔是好前端(誤。
    • 爲何直接使用圖片做爲地圖?A:顯然本身畫圖顏值低(若是要好看還要學啥B樣條曲線,並且增長地圖座標數量)啊,並且有圖片我能夠超高速增長地圖包,簡單來講,你還在給線路分顏色的時候(線路顏色與官方不對應有損用戶使用體驗),我就作好了。至於擴展問題?地鐵線路並不是地面公路,變化可能性極低,頻率極低,擴展性並未減弱多少
    • 爲何前面那些設計原則等寫這麼少字?A:感受定義什麼的就不說了吧,上網一查一大把
相關文章
相關標籤/搜索