image unsplash

大家好我是小智,我是一個轉職者,目前剛轉職差不多半年多一點,這篇主要是拿來紀錄我最近在開發上的疑問和設計中的疑問,希望未來的我可以來幫我解答!!


現況

目前我正在開發一個購物網站,有會員也有店家,以下是我的順序。

  1. 我先設計了資料庫的table,我的資料庫會員跟店家的表格是完全分開的。
  2. 我建立了Django專案初始化,並把前面的table加入到Django的model中。
  3. 我就直接使用Django的MTV開發,所有的邏輯都集中在app的view裡面,然後就這樣開發到了最近。

先整理

最近一直很煩躁,我的view越來越龐大,每當有需求變動時要改一個地方就要花很多時間找在哪裡,搞的我非常痛苦,就在此時,我決定我要整理我的程式碼!!以下是我的順序。

  1. 首先我先試著對我的網站做OOA把所有物件之間的關係畫出來,同時梳理現在對網站的需求。
  2. 把上面所有物件都先開立出來,並試著更動現有的程式碼。
  3. 然後把view裡面所有的網頁(function)拆開,目前是有分步驟和分頁面。

第二次整理

然後我又想到我的view裡面也摻雜了一堆的DjangoORM我就想著我能不能也把他們拆出來,於是又出來了另一個版本。

  1. 我把view中的ORM全都拆掉,並建立專屬ORM的物件群。
  2. 然後把剛剛OOA所建立的物件中列幾個方法,有讀取資料庫時(通常是New的時候)就透過ORM物件去讀取資料庫並拋回view。

最後總結

完成這版後,基本上我的程式已經拆的很細了,流程大概會變成這樣,以一個店家要登入為例。

  1. 店家到我的網站登入頁面打完帳密案下登入ajax POST。
  2. 這個request會打到我的server。
  3. server中間nginx略過。
  4. 來到Django裡面之後根據路由由urls.py去分配。
  5. urls.py分配到指定的view.py。
  6. view.py裡面有個login的function他在流到POST method。
  7. 到POST method後會先去讀取Store(id)物件。
  8. Store(id)會去讀取StoreORM(id=id)會確認存不存在。
  9. 存在之後再比對密碼的正確性。
  10. 之後回傳結果Json在丟給前端ajax處理。

目前改成這樣是有比較開心了,不過還是有一些些的違和感,感覺好像還是有一些地方有問題,想了想覺得就先這樣吧,之後如果違和感大到忍受不住再來跑一次上述的流程或是查一些資料看看有沒有辦法優化吧~~

結論就是:交給未來的我

最後寫完的心得:大概就是好像還是需要圖片支援,純文字的話感覺有點乏味,等有空的時候再來補吧~~