人生中第一個專案-旅遊行程編輯器

最近第一個較完整的專案快完成了,前2個月都在花時間趕進度,最近稍微有時間,就花點時間把整個專案的概念紀錄一下。這篇還不會提到怎麼做,但會條列式整理大概用到哪些技術與想法。

 

旅遊行程編輯器


整隻程式的靈感來源
對於旅遊編排時,可能會出現下列情境:。

  1. 完全陌生的景點: 先上Google打關鍵字地毯式的查詢及做功課,整併所有想去的景點後,最後考量路線順暢度跟時間,依序加入正式的行程。
  2. 對於稍微熟悉的景點: 在FB、IG,得知不錯的的景點或餐館,通常可能會透過分享的功能來記錄,但時間一久資訊相當凌亂且難以搜尋。
  3. 對於雜誌、朋友介紹等,非網路的資訊,難以記錄。

Google Map 大家應該都不陌生,對於搜尋地點與規劃路線是相當好用的工具。除了一些常用的資訊之外,也有提供一些有趣的功能塊,例如『你的地點』可以將想去的、曾經造訪的地點儲存下來。這可以迅速解決問題2。對於要安排景點這件事,需要考量到路線、時間、距離,Google Earth或Google我的地圖,可以稍微解決地理資訊上的問題,但對於時間上還是有點不人性化。某天偶然看到Tripadvisor的旅程編輯,算是簡化了排旅程的工作,但仍然缺乏一些功能及時間可視化,故第一隻winform專案就以此為出發點思考而進行啦。

 

專案之功能塊簡介
根據上述參考樣本與自身使用需求,整理出這個專案的預設要有哪些功能塊,並逐一慢慢解決問題。

  1. 可以使用Google Map搜尋並取回資料,如景點名稱、星數、經緯度等(Google API介接)
  2. 可以將喜歡的景點儲存到資料庫,並寫入額外的資訊,例如建議停留時間、推薦行程等。
  3. 對資料庫的CRUD
  4. 旅遊行程的安排(可分成以(1)Google Map API (2)資料庫,搜尋景點後再加入,並提供設定日期、時間、選擇交通工具等,後續會自動的計算交通時間及設法提升一些使用者經驗。
  5. 將地點以互動式地圖的方式呈現

 

過程中學到或必須思考的問題
雖然是用winform,在介面上可能對於新手比較容易上手,不需要馬上面臨到排版的問題,但依然會碰到許多問題,例如前端的程式碼與一些邏輯性的程式碼會分不開,以及一些寫程式的常見問題,這些問題之後改寫web後也一定會碰到,雖然解法有可能不太一樣,但自己動手做過,對於日後我相信還是會有幫助的。

  1. 不同頁面的共用資料之間如何傳值,要共用? 還是獨立?
  2. 更習慣的使用Array、List、Dictionary及物件導向。
  3. 以csv的方式實現資料庫CRUD
  4. 資料庫是後端,看到的Form是前端,需考量更新後的前後端同步
  5.  一些常見的模組邏輯,例如圖片上一張下一張、顯示欄位設定、資料表格顯示等。
  6. 邊做要盡可能的降低寫重覆程式碼,要練習降低程式碼之間的耦合度、並盡可能滿足Solid的規範。

    做這個專案最大的體會就是,同樣的功能,寫死跟寫活的難度真的可以差很多,要一邊解決問題又要滿足像MVC的功能區分,真的會很困難。