iT邦幫忙

2023 iThome 鐵人賽

DAY 15
0
Software Development

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

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

  • 分享至 

  • xImage
  •  

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

專案Repo

Readme review

首先來分析作業的Readme

標題與描述:

  • "BitGin Assignment"這個標題雖然直接,但可以更符合作業內容的標題。
  • 在"敘述"部分,可以加上一個簡短的一句話摘要,描述這是什麼,例如:"這是一個用Golang實作的平台收銀系統,支援多種收費模式。"

使用方式:

  • 使用的變數命名可以讓用戶更容易理解,例如goodPrice可以更名為productPrice。
  • 可以加入註解以幫助使用者理解每一步的用途。例如,在system := &cashier.ChargingSystem{...}這行後面,可以加入:// 初始化收銀系統。

額外建議:

安裝指南:

  • 可以提供從安裝到執行程式的步驟

測試:

  • 有單元測試,應該提供如何執行這些測試。

錯誤處理和日誌:

  • 如果程式碼中包含錯誤處理或日誌,可以在README中提供一些範例或說明。

格式和結構:

  • 在段落之間加入一些空行,可以使內容看起來更加清楚。
  • 考慮使用列表 (bulleted 或 numbered list) 來組織某些信息,例如主要收費模式。

目錄結構 review

分層結構:

已經適當地將核心業務邏輯(cashier)和指令應用程式(cmd)區分開來,這是常見的Go專案結構。

cashier package:

  • 如果每種收費模式的邏輯都較為複雜,考慮將每種模式分成其自己的檔案,例如normal.go, vip.go, points.go等。
  • cashier_test.go應該包含了各種情境的單元測試。考慮增加邊際情況的測試和當平台舉行優惠活動時的測試。

cmd package:

  • main.go是一個簡單的命令行界面,主要的邏輯在cashier package中。
  • 可以考慮加入指令參數或配置選項來使程式更具彈性。

README.md:

  • 確保提供清晰的說明、使用方式、安裝指南等。

.gitignore:

  • 確保.gitignore包含了Go常見的忽略項目,例如*.exe, *.out, /vendor/, *.log, .DS_Store等。

其他:

  • 若有多種收費策略,可能會需要一個策略模式或其他適合的設計模式。檢查cashier.go是否已經考慮到這一點。
  • 若專案可能會進行擴充,考慮使用interface進行解耦,以確保後續增加新的收費模式時不會影響既有的程式。

上一篇
[Day 14] 作業三:平台產品銷售收費機制的收銀系統 - 需求檢視
下一篇
[Day 16] 作業三:平台產品銷售收費機制的收銀系統 - Code review
系列文
從實戰中學習:Take Home Assignment review & refactor30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言