る。 3. 各モジュールの独立性を高める Scratchの設計は、GoroutineとChannelの特性とかなりマッ チして参考にできる。 a. 独立性を高める: i. 他のモジュールの動作次第で全部詰まることを考えない ii. 別のモジュールの設計に依存しない (気にせず開発できる ) iii. 処理対象機器の動作モデルに全体設計が引きずられない 4. 最初の実装は実行そのものを関数として Goroutineに渡していたがやりすぎだった a. テストがやりにくい b. 引数に柔軟性がない (ぜんぶクロージャとして渡す ) c. ふつうの開発モデルから逸脱している
if err := m.initializeDevice(); err != nil {...} go func() { select { case event := <- m.eventReceiverCh: m.doSomethingBy(event) case data := <- m.deviceMeasuredCh: m.sendCh <- parseData(data) case <- m.doneCh: // Do something to stop the process gracefully return } }() }