プログラムは文章と同じ
アマチュアの人がこれから載せるプログラムを見たらなんと思うでしょうか?おそらく、余計な事をしていると思うでしょう。
//当ブログの割り算と掛け算の共通性から抜粋
//3つの引数を受け取る演算
//プログラムA
private Value Operator(
char addValue,
char subValue,
char remainder )
{
if ( addValue == this._table.First ||
subValue == this._table.First ) {
return new Value( this._table.First );
}
Value temp = new Value(
Sign.Plus,
this._table.First,
this._table.First,
this._table.First,
remainder );
char highValue = this._table.First;
char lowValue = this._table.First;
while ( remainder >= subValue ) {
Value v = this.Add( lowValue, addValue );
lowValue = v.LowValue;
if ( v.IsHighValue )
highValue = this.Increment( highValue ).LowValue;
remainder = this.Sub( remainder, subValue ).LowValue;
temp = new Value(
Sign.Plus,
highValue,
v.LowValue,
this._table.First,
remainder );
}
return temp;
}
このプログラムは、次のようにかけます。
//プログラムB
private Value Operator(
char x,
char y,
char z )
{
if ( x == this._table.First ||
y == this._table.First ) {
return new Value( this._table.First );
}
char highValue = this._table.First;
char lowValue = this._table.First;
Value v = new Value( this._table.First );
while ( z >= y ) {
v = this.Add( lowValue, x );
lowValue = v.LowValue;
if ( v.IsHighValue )
highValue = this.Increment( highValue ).LowValue;
z = this.Sub( z, y ).LowValue;
}
return new Value(
Sign.Plus,
highValue,
v.LowValue,
this._table.First,
z );
}
プログラミングをかじった人は、プログラムBだけが正しいという傾向があります。ですが実務経験者は、状況に合わせて、プログラムAの方を書き時もあることをよく知っています。プログラムBを崩して、Aのように書くのには理由があります。それは、デバッガで変数の変化を追いやすいからです。デバッガには、一ステップずつ実行しながら、変数などの値を表示する機能があります。そのデバッガの機能を使う際には、プログラムAのようにした方がチェックしやすい。
当ブログが想定している主な読者は初心者ですから、ブログを書く際にはいつも気を付けています。文章とプログラムは、自分を誇示するためにするものではありません。誰かに何かを伝えるために行うものです。文章はもちろんのこと、プログラムも表現を変えなくてはなりません。
コミュニケーションの手段や媒体は関係ありません。何かを伝えたいときは、対象に合わせた表現をしましょう。