01/06 專案上線與階段上線/切割
- feature branch
- dev feature branch merge 多個 feature branch
- 折解為多個 feature branch, 將影響較小或新功能先行上線
- 關鍵方法或啟用入口最後上線
這樣可以避免 code reivew 負擔太大
以及需要上線的程式碼過多問題
這樣可以避免 code reivew 負擔太大
以及需要上線的程式碼過多問題
開發多平台專案, 注意各平台需求一至性
e.g.
後端
資料庫需要使用者年、月、日上述情況在 android 端就會出錯(如果使用者生日月、日為必填)
若不是必填就要考慮另兩個平台的使用者生日應該怎麼顯示 月份和日期
這大概就是~ 宏觀&經驗
和 開放封閉原則 Open-Closed Principle (OCP)
也有點關係
我還不是很會用 private
e.g. 商品:
原型商品
: title: string, quantity: int, price: int / float, 下面商品都 繼承
這個原型商品
一般商品
: title: 可樂, quantity: 1, price: 30運費商品
: title: 總額未達 400 加收運費, quantity: 1, price: 80綁定送商品
: title: 買可樂送吸管, quantity: 1, price: 0上述三個商品總金額為 30+80+0 = 110
未來要增品商品 meta 或 props 時可以直接修改 原型商品
, 其繼承者都可以受惠
e.g. 在 原型商品
新增 is_food = false (預設為 false)
一般商品
: title: 可樂, quantity: 1, price: 30, is_food = true
**增加並設定 is_food 為 true
運費商品
: title: 總額未達 400 加收運費, quantity: 1, price: 80
綁定送商品
: title: 買可樂送吸管, quantity: 1, price: 0
**不設定 is_food, 預設為 false
不
是用 shell script 搬動檔案form 傳送值時, 若希望對像為 boolean
傳入值可能是 :
到了 php 這端接收值之後轉換為 bool
一般來說直覺會這麼做
$is_bool = (bool) $_POST['user_selected'];
// 或是
$is_bool = empty($_POST['user_selected']) ? false : true;
上面的方法在對像為 string: ‘false’ 時也會回傳 true
e.g.
$_POST['user_selected'] = 'false';
當然這樣的結果就是不是我們想要的
或是就需要寫更多的 code 去處理…
但… 我只是想要判斷傳入值是否為 bool true false 而已
利用 PHP 原生函式 filter_var() 更聰明正確的轉換為 bool 值
ref. https://www.php.net/manual/en/function.filter-var.php
$is_bool = filter_var($_POST['user_selected'], FILTER_VALIDATE_BOOLEAN);
如果想要在沒有傳入值的時候預設為 false, 可以使用 PHP 7 的 Null coalescing operator
$is_bool = filter_var($_POST['user_selected'] ?? false, FILTER_VALIDATE_BOOLEAN);
ref.
https://www.php.net/manual/en/migration70.new-features.php#migration70.new-features.null-coalesce-op
devon think 的第一篇完整文章
部署流程和開發環境可以看作是一個實體工作桌、環境
預先處理、整理好
在臨時遇到問題時, 比較方便解決、查找問題
減少你要花心思的雜事, 專注在問題點上
ref.
量化人生:監視自己的資料狂們
專案、需求進行時多數為 業務或老闆說明(需求方)
但實際操作方常常被忽略進入這個會議、需求說明; 單方面在需求方霸王色霸氣要求下, 很容易讓開發走錯方向
強烈建議, 會前、開發前和實際操作方再進行二次確認
e.g. 主管要求開發 折抵 功能, 需要注意到了, 會計、對帳問題, 但可能還需要處理報表或是其它既有 workaround 問題
重覆動作, 抽出處理
經常性 git rebase, 也許可以包裝成 jenkins 自動處理
讓重覆的事, 自動化
強調
需求端與操作端想要的東西不同e.g. 預購(集資)功能製作時, 未考慮庫存, 使用者下單、使用者退貨
造成重覆建立資料表, ERP 系統需要另外調整…