昨日書いてたやつが単体テストまで完了。当初予定ではそれは一昨日終わってるはずで、俺の予定でも昨日終わらせる予定だったんだがなあ。設計からあれこれ足した(正確には関数分割した)ので内部設計書を大幅に書き直さないとなあ。それでもまだ別関数に書き出すべきところがいっぱいあるんだけど。面倒なのでこれくらいでいいや。しかし実際コーディングするとあれもこれも分割したくなって困る。でも本来分割するべきところでも、プログラミングの段階で変更すると仕様書から直さないといけないし、仕様書を書いてる段階ではあんまり細かく分けると書くのが面倒になるという問題があるんだよなあ。実際でっかい1つの関数で全部書く方がとりあえず作る段階では速い(それは俺がその程度のレベルだからなのかもしれないけど)し。
あと今回の教訓はとりあえずmain関数に多くの処理を書いてはいけないということか。せめて初期処理/主処理/終了処理は別々にして、主処理中でエラーが来たらあとのことを考えず途中returnできるくらいにしておくべきだった。do-while+breakというのも考えはしたんだけど、これは何となく意図がわかりにくい気がしてなあ。まあ既存部分がみんなそう作られてるからその空気を読んだ、とでも言い訳しておくか。
ところでC言語で戻り値を使って処理の成功失敗を判断するのはいまいち古くさいセンスだと感じるんだけど、この辺って実際どうやるのが正解なのかなあ。戻り値には意味ある情報を持たせるべきというのもわかるんだけど、処理件数を返しつつ負の値だったら処理失敗みたいなやつもなんか複数の意味を持たせてるって点がちょっと気になる(俺はわりと好きなんだけど、他の人にわかってもらえるかという観点で)し。うーん。C言語は奥が深い。