iT邦幫忙

2023 iThome 鐵人賽

DAY 16
0
Software Development

從實戰中學習:Take Home Assignment review & refactor系列 第 16

[Day 16] 作業三:平台產品銷售收費機制的收銀系統 - Code review

  • 分享至 

  • xImage
  •  

平台產品銷售收費機制的收銀系統 - Code review

今天來看作業的Code,來review現在的我看到年初寫的作業有什麼覺得可以更好的地方,這個作業是第一次製作函式庫加上要搭配Clean Code及Design Pattern,算是一次難得的經驗。
BitginAssignment

Review:

  • 命名和結構清晰:程式使用了策略模式,每一種計費模式都是一個策略。這是適合這種作業情況的。
  • 靈活性:由於使用了策略模式,可以輕鬆地新增或修改計費模式。
  • 測試:有提供基本的單元測試,確保主要功能的正確性。

改進建議:

  • 避免HardCode:在main.go中,不要將"Normal", "Vip"等字串HardCode。HardCode可能導致未來的維護困難。可以定義一些常量或枚舉型別來表示這些名稱。
  • Error Handling:在GetChargingMode方法中,如果用戶傳入了不存在的收費模式名稱,會從map中返回一個nil值,這可能會導致panic。可以加入錯誤處理。
  • PointCharging 的 Calculate 方法:它和其他Calculate方法不同,它接收的是limit而不是price。為了保持介面的一致性,應該將這個行為分離到另一個方法或者調整它使其更具一致性。
  • Unit Test:在TestChargingSystem中,第三個test case對於Point模式不是很有意義。應該要測試點數折扣對價格的影響而不是簡單地檢查它是否返回了點數的折扣。
  • SOLID原則:考慮到SOLID原則,特別是開放封閉原則,目前的設計已經有一定的彈性,可以添加新的策略而無需修改既有程式。但如果要添加組合策略(例如VIP身份折扣後再進行點數折扣),那麼目前的設計可能還需要進一步的調整。

上一篇
[Day 15] 作業三:平台產品銷售收費機制的收銀系統 -專案review
下一篇
[Day 17] 作業4:Bitcoin Trading Bot Design & Static Single Page View Implementation
系列文
從實戰中學習:Take Home Assignment review & refactor30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言