変更に強いプログラム

本日の業務で、文字描画系に関する変更提案を受けた。具体的には、行頭禁則処理時に、その前行の行末に空いた空間を左右均等割付にしてくれとのこと。

どう実現すればよいかという案はいくらでも浮かぶ。問題なのは、如何に現存のソースを流用できるかだ。無理して再利用しようとすると、かならず後で破綻する。

ソースの流用で一番重要な要素は、文字描画系のモジュール力だ。モジュールとして提供される部品一つ一つがプリミティブとして大きからず、小さからず、適切な大きさであること。かつ、組み合わせやすく、拡張しやすく作られているかが問題となる。そうでなければ、うまく分解し、再合成するひつようがある。

んで、現在の文字描画系はどうなっているかというと、とにかく巨大な部品となっており、また相互参照の連続で、とてもじゃないが簡単な分解・再合成で先の変更提案を実現できそうに無い。リファクタリングもせず、ほっときすぎたのも問題なのだが...。

とりあえず、TODOも大分消化しきってきたし、リファクタリングをかねて明日から文字列描画系のモジュール力を高めていこう!