軟工學習隨筆
問題/需求處理
- 工程師不能只單純的接受需求,而是應該要透過提出問題,釐清需求者實際想要解決的是什麼問題以及背後得原因,以討論出有效的解決方案
- 小心 X-Y 問題
X-Y 問題:看起來可以用 Y 方法解,實際上最佳解是 Z
- Spec 很有可能是動態的,有一份易閱讀易更新的文件非常重要
我喜歡在文件上加上 timestamp
好文
Clean Code
JS
- 在Project 中,冗餘的 methods 或者 functions 的處理順位是很低的,因為只會讓 compile 的速度慢個幾毫秒,因該優先考慮架構、分資料夾等問題 (2021.9)
找 Bug
JS
- Object 中原本該存在的 property or value 消失了,高機率可能是因為被意外換掉了
E.g.
const a = {
b: '123',
}
// accident happened
a.b = 456
// a.b 的值被意外換掉,可以用 ".b =" 關鍵字下去找 bug
Material-UI
- 過長的 value 可能會造成
Grid
Component 變形
Backend
Structure and Data Flow
Handle request
- routing
- find handler/controller (input/output)
1. Parse input
2. Validate input
- If not valid, return 4xx
3. business logic
- Change db or call other services (email/sms/queue)
4. Format output
5. Return output
- services (inside business logic)
- Database CRUD
- Or call other services (internal or external) - router/controller
- helper
- services (internal/external)
- helper
- database model
- helper
encrypt/decrypt had better get done in controller layer
`npm`
- if the package has existed in the other dependency, do we still install it? => Yes, in order to control version ourself
Tips for beginners
CSS
- Browers 的開發人員工具裡面的 elements 可以直接更改以利檢查 CSS