# 昱翔的工作筆記 ## command based 介紹 command-based 是讓code更有可讀性,也讓程式更好的修改,是一種design pattern,也是declarative programming的實做。 > ### design pattern > 相關閱讀連結:[我為什麼想學設計模式 ( Design Pattern )](https://ithelp.ithome.com.tw/articles/10201706) > 相關影片連結:[軟體工程師為什麼要學 Design Pattern? | 物件導向 | SOLID | 工程師 Nic )](https://www.youtube.com/watch?v=pkm5jQfnKGs&t=2s) > > 設計模式並不直接用來完成程式碼的編寫,而是描述在各種不同情況下,要怎麼解決問題的一種方案。物件導向設計模式通常以類別或物件來描述其中的關係和相互作用,但不涉及用來完成應用程式的特定類別或物件。設計模式能使不穩定依賴於相對穩定、具體依賴於相對抽象,避免會引起麻煩的緊耦合, >### declarative programming >相關閱讀連結:[Imperative programming vs Declarative programming | 輕鬆讀懂命令式與宣告式函式 ](https://medium.com/@chih.hsi.chen/imperative-programming-vs-declarative-programming-%E8%BC%95%E9%AC%86%E8%AE%80%E6%87%82%E5%91%BD%E4%BB%A4%E5%BC%8F%E8%88%87%E5%AE%A3%E5%91%8A%E5%BC%8F%E5%87%BD%E5%BC%8F-75a1ea80b6d8) 所謂的命令式函式就是以我們的口吻來描述該「如何」達到我們的目的,接下來只要跑我們所寫的程式,就能得到我們想要的「結果」。 相對於命令式函式,宣告式函式只需要我們告訴他需要「什麼」,由他來決定該「如何」實現。 ---- ## Subsystems and Commands  ### Subsystems(低階code) `Subsystem`檔案是對應到硬體的code,例如限制機器人的手臂做怎樣的事情。 ### commands (高階code) `Command`檔案是命令機器人做怎樣動作的指令,例如移動到目的地。這時候就會跟finite-state machine (FSM)有點相關了。 >### finite-state machine (FSM) >相關閱讀連結:[什麼是「有限狀態機」? ](https://ithelp.ithome.com.tw/articles/10225343) 定義全部的狀態以及他們之間的關係。 ## How Commands Are Run ? `CommandScheduler`檔案是負責來跑前面寫的command, 他是採用 singleton class 的方式運作。 運行command會先運行`initialize()`,`CommandScheduler.getInstance().run()` ,`execute()`。 確認command的執行是否完成是`isFinished()`。 >### finite-state machine (FSM) >相關閱讀連結:[什麼是「有限狀態機」? ](https://ithelp.ithome.com.tw/articles/10225343) 定義全部的狀態以及他們之間的關係。 >### finite-state machine (FSM) >相關閱讀連結:[什麼是「有限狀態機」? ](https://dotblogs.com.tw/leo_codespace/2017/06/03/204504) 定義全部的狀態以及他們之間的關係。 ## Command Groups ## charaterize  kS : 克服馬達阻力的最低電壓 kV : 維持速度的最低電壓
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up