or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Syncing
xxxxxxxxxx
前端開發的再次典範轉移 - 如何走出混亂並讓複雜變的可掌控 - 呂維德
由於場地問題,第二天我們移動到另一棟大樓啦!議程教室變動請見網站上的議程表。
歡迎來到 https://hackmd.io/@coscup/2019 共筆
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →點擊本頁上方的 開始用 Markdown 一起寫筆記!
手機版請點選上方 按鈕展開議程列表。
故事:Apple 犯的 if (anwsered) { openMic() } 錯誤。
Redux 的問題:大家都在改狀態,沒人可以確定改出來的狀態是對的。
你把狀態改好了,另一位新來的工程師又 override 你的狀態,就壞惹⋯⋯
從一包狀態轉換到下一包狀態時,無法預期轉出來的狀態是不是對的。
狀態機:FSM 可以完美解決我們遇到的問題
1943 年⋯⋯ NASA 大量用它上火星,不同領域都在用
可惜 FSM 狀態爆炸的問題一直存在(狀態圖太複雜)
link 的方式:切成好幾個小狀態機,然後用 link 相連。
最近找到的更好解法:statecharts。
statecharts: 描述式語言
declairtive!!!
範例(圖)
https://statecharts.github.io/xstate-viz/
Statechart v.s. FSM
在學校學了就忘了 XD
實例:120 個狀態、400 個會交互影響的 events。
用 Redux 的話: 娃,一大包狀態轉到另一大包狀態,是哪兒出錯?
改用狀態機:debug 複雜度從 O(n) 變 O(1)
好處:
將狀態切片管理:每一片代表一個商業邏輯
操作 side effects
完整封裝 business logic:business logic 封裝在 state chart
驅動 UI
statechart 有變化,UI 就重繪
UI 成為 dumb layer,只負責輸出畫面、接收輸入
"map state to UI、send events to statechart"
前端框架變得不再重要、不再糾纏商業邏輯
speaker: 重點講完了、剩下都是廢話
強迫開發者儘早想清楚 business logic 並清楚寫出來
開發速度更快
更容易 debug
"用了 statechart 後,90% 的錯誤都出在 UI 端,UI 送了不對的 event 進來。"
更好測試:business logic 都在 state chart 內、只要針對每個相關事件寫測試就能達到 100% coverage。
"你可以更快的把錯推給寫 UI 的人 (誤)"
狀態與 UI 可平行開發:速度快超過兩倍!
商業邏輯高度封裝:換框架不怕不怕!商業邏輯封裝在 statechart 內因此是可攜的!
不怕找不到資深的人,只要會 JS 和基本框架就可以寫。
適用於前後端各種情境。
書:constructing the user interface with statecharts (1999)
20 年前出版,已絕版
https://www.amazon.com/Constructing-User-Interface-Statecharts-Horrocks/dp/0201342782/
心法
https://speakerdeck.com/coodoo/qian-duan-kai-fa-de-zai-ci-dian-fan-zhuan-yi-ru-he-zou-chu-hun-luan-bing-rang-fu-za-bian-de-ke-zhang-kong
有社群!
台灣,剛開的 https://www.facebook.com/groups/statecharts
Q: 有沒有 auto generate redux code
"從歷史經驗來看,做 codegen 通常沒什麼好下場"
Q: 國外紅度?
剛紅,文章還稀少
"終於有一次台灣可以跟國外同步潮流了!"
Q: 寫對的一些 訣竅?
"當你寫不下去之後自然就會切"
狀態機沒有標準答案,只要符合你的邏輯的都可以
tags:
COSCUP2019
Open Web Technologies
IB401