メニエスの名のもとに

プログラミング関係を中心としたぐだぐだブログ

何かがおかしい

コピーしてちょっと直すという修正はおかしい

しばらく他のことをやっていて、今週頭からまたMTToolBoxの機能拡張に取り組んでいた。そして今日になって思ったのだが、何かがおかしい。コピーしてちょっと直すという修正をしているのだ。いやいや、そういうことをやらないために、様々な技法があるわけでしょ。
アルゴリズムを表すクラスであるという意味で、Algorithmなんちゃらというクラスをいくつか作っているのだが、機能拡張に対応してアルゴリズムも変わるわけだ。そうするとアルゴリズム関連のクラスが変わってしまう。それでコピーして修正してしまう。いや、そこは継承なりなんなりと思うものの、ループの中の処理が変わるというのにはなかなか対応できない。フラグを渡すというのは、これまたよくない方法だろう。ループの中身を渡すというのが、たぶんruby的な考えだろう。関数型ならそもそもループじゃないし、最初からループ内に相当する処理を渡しているから問題ないのか。
でも、コピーして直すという方法で冗長なコードを書いてから、かっと目を見開いて冗長な部分を眺め、それから後知恵を使えばきっとうまくまとめられるという気はする。そうは言っても、動くものが出来てしまってから、手を入れるのは本能が拒否する。(そんなことをしたらまたバグの嵐になるから)だいたい、C++を使っている段階で、実行速度最優先という立場なわけで、ループ内の処理を渡したりしたら速度が落ちることが予想されるわけだし。
アルゴリズムをクラスにくっつければいいということか。これまでjava の interfaceのつもりで抽象クラスを書いていたけど、そこにアルゴリズムも入れるというのが妥当な修正なのかも。メンバー変数持たなきゃ問題ないでしょ。って今気づいてもかなり手遅れなんだが。(これにも問題はあるな)
というわけで、もやもやした気持ちを持ちながらも、ソースを修正しているわけだ。機能拡張はだいたい見通しがついたが、英語ドキュメントを書かねばならないという点が、鬱陶しい。まあ、デタラメ英語でも書いておけば、「英語の間違いに気づいたら修正してpull request下さいね」と言っておけば、英語が間違っているという指摘には必ず修正がついてくるはずだ。
今回の修正はユーザーが間違いをすると、間違った疑似乱数生成器が出来てしまうので、GitHubへのpushはまだしていない。間違える人は間違えるので、あまり気にしても仕方がないけど。

配信アニメ端境期

配信アニメの端境期なので、見放題の中からめぼしい物を探してみているのだが、ビッグオーとか、なかなかいいですな。

THEビッグオー Blu-ray BOX

THEビッグオー Blu-ray BOX

mosaic.wav の新作を買った

うーん、電波ソング、秋葉pop とは、ちょっと方向性が違うというか、期待外れでした。