Shammer's Philosophy

My private adversaria

番兵制御

番兵制御、内容自体はすでに知っていたが、こういう言い方があるとは知らなかった。
ループ処理を書いていると、(Javaの例)


 while( true ) {
  InputStreamReader reader = new InputStreamReader(System.in);
  BufferedReader bufReader = new BufferedReader(reader);
  String message = bufReader.readLine();
  if( "EXIT".equals(message) )break;
 }


というように、ある特定の値がキーボードから入力されたときに処理を終わらせるような
書き方をすることがある。こういう方法を番兵制御というらしい。
何を基準にループ回数をカウントするかはプログラムの設計時に決めておく必要がある。
しかし、その決めの内容自体が「実行するその瞬間までわからない」という場合に、
この方法を用いて実行のたびにユーザーにその終わりを入力させるような方法がとられることがある。
ソースコードレベルで何回ループするか回数を指定すると、当然そのプログラムは再利用性という面で悪くなる。
しかし、ユーザーに終わりを入力させるようにしていれば、より再利用性を高くすることが可能。
もっとも、最近ではpropertyファイルやXMLで何回繰り返すか読み込ませる方法をとって、
コンパイルしなくても繰り返し回数を制御することもできるのが一般的だが。


Cの書籍で取り上げられていて、耳慣れない言葉だったから書いておくことにした。
まぁ・・・真新しいことは呼び方以外に何もないのだが。