iT邦幫忙

2023 iThome 鐵人賽

DAY 24
0

Take Home Assignment 實戰

Review完四個作業後接下來要直接來實戰一個Take Home Assignment,就以[Day 3] 如何開始Take Home AssignmentTake Home Assignment為實戰案例來實作,他的作業內容又有變動了,再來快速的運用框架來統整作業的內容。


1. 讀懂需求

確認必須項目:

  • 使用指定的程式語言 (Typescript, Node.js 或 JavaScript)。
  • 使用關聯型資料庫 (SQL)。
  • 使用指定的第三方API (Auth0、SendGrid、Retool等)。
  • 符合Google或Airbnb的編碼風格。
  • 設計API並提供文件。
  • 作業需要線上托管。

API功能:

  • 註冊
  • 電子郵件驗證
  • 登入
  • 用戶資料
  • 重設密碼
  • 使用Cookie進行自動登入與登出功能
  • 顯示用戶資料庫
  • 用戶統計

確認加分項目:

  • 使用Google OAuth進行登錄和註冊。

2. 規劃時程

設計時程 (2天):

  • 設計資料庫架構。
  • 設計API端點。

實作時程 (5天):

  • 設置後端伺服器和資料庫連接。
  • 實現API端點。
  • 整合第三方API。

測試時程 (3天):

  • 單元測試。
  • 集成測試。

3. 重視Code的質量

遵循SOLID原則:

  • S (單一職責原則, SRP):
    用戶認證:創建一個類專門處理用戶認證,無論是通過郵件和密碼還是Google OAuth。
    郵件處理:將郵件發送功能與其他功能分開,如驗證郵件和重置密碼通知。
  • O (開放/封閉原則, OCP):
    身份驗證:將身份驗證設計為可擴展的。例如,雖然現在只有郵件和Google OAuth,但將來可以很容易地添加更多方法,如Facebook或Twitter OAuth,而無需大幅修改現有程式。
  • L (里氏替換原則, LSP):
    確保所有用於身份驗證的類(如郵件和OAuth)都可以無縫替換,而不會影響其他程式。
  • I (介面隔離原則, ISP):
    如果我們有多個認證方法,每種方法都應該有其專屬的接口,而不是一個大而全的接口。
  • D (依賴反轉原則, DIP):
    我們的高級模組(如用戶管理)不應該依賴於低級模組(如數據庫操作)。它們都應該依賴於抽象,例如用戶和數據庫接口。

使用Gangs of Four (GoF)設計模式:

  • 策略模式
    對於不同的身份驗證方法,可以考慮使用策略模式。每種認證方法(郵件/密碼、Google OAuth等)可以被視為一種策略。
  • 觀察者模式
    當用戶狀態發生變化(如登錄或登出)時,我們可能希望通知其他部分的系統。這時,觀察者模式可以派上用場。
  • 工廠模式
    考慮使用工廠模式來創建用戶或初始化特定的身份驗證方法。
  • 單例模式
    對於那些只需要單一實例的服務或配置,例如郵件發送服務,可以考慮使用單例模式。

4. 選擇合適的工具與技術

  • 根據需求選擇合適的Node.js框架(例如Express.js)。
  • 使用SQL資料庫,例如PostgreSQL或MySQL。
  • 選擇合適的ORM工具,例如TypeORM或Sequelize。

5. 測試你的code

  • 使用如Jest或Mocha等工具進行測試。
  • 為主要功能寫單元測試。
  • 考慮使用Postman或Swagger進行API測試。

6. 建立檢查清單

  • [ ] 環境設置 (Node.js, 資料庫等)。
  • [ ] 設計資料庫架構。
  • [ ] API設計和文檔。
  • [ ] 實作API端點。
  • [ ] 整合第三方API。
  • [ ] 進行測試。
  • [ ] 部署應用程式。

上一篇
[Day 23] 作業4:Bitcoin Trading Bot Design - Code review
下一篇
[Day 25] Simple Auth App 實戰
系列文
從實戰中學習:Take Home Assignment review & refactor30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言