最初は、構造体のフィールドを参照しているものはメソッドにしていた。
けど、フィールドのごく一部しか使っていないものはメソッドではなく関数にして、疎結合な感じにしてみた。
もちろんフィールドを更新しているものはメソッドのほうが良いかもしれないが、それでも新しく構造体を生成して返すようにすれば必ずしもメソッドにする必要はない。
MDMMLは、メソッドチェーン?みたいな感じでこんな風に書いてみたので、ここにあるMMLtoSMF()
とSMF()
だけがメソッドに残った。
_, err = os.Stdout.Write(mdmml.MDtoMML(src).MMLtoSMF().SMF())
ここでメソッドチェーンってちゃんとした用語なんだっけと思ってググったら、Go における FunctionalOptionPattern と MethodChaining について考える - pospomeのプログラミング日記というページがヒットした。
なるほど、エラー処理。他言語の例外ってこういうときに使うのかー。
まあ今回はこのままで良いかな。