「Windows API/図形の描画」の版間の差分

 
=== For文による代用 ===
==== 概要 ====
WindowsAPIで関数を使う場合、関数の内容を記述する場所が、呼び出し元の場所から、大きく離れた場所に記述しなければならない場合があります。
 
また、もし関数を使う場合でも、For文で書いた処理を関数に置き換えるのはラクです。なので、関数を作る前に、とりあえず、For文で試しに似たような処理を書くという方法もあります。
 
==== 欠点 ====
 
上記のようなfor文とif文による関数代用の方法には、欠点もあります。
 
まず、if文を使うと、原理的に、もし今後の編集によって条件分岐用の変数に想定外の変数(上記コード例では変数 j )が代入された場合には、バグの発生原因にもなります。
なのでプログラミングの流儀には、こういう想定外のミスを防止する観点から if 文をなるべく使わないでコードを書くという流儀もあります。
 
ですが、似たような処理の場合分けのために if 文をなるべく使わないでfor文だけで似たようなコードをまとめて処理を書く方式だと、コードが長くなる場合があります。コードが長くなると、今度はその長さにより、バグの発生率が増えます。コードが長ければ長いほど、バグが混入しやすくなるし、仕様変更の際などにも変更の手間が増えたり、仕様変更のための修正箇所が多すぎて変更し忘れのミスをするなど、そういったバグが発生しやすくなります。
 
 
かといって、「コードを短くしよう」と思って、いきなり関数ばかり使ってコードを書くと、前の節でも説明したような欠点により、windowsAPIプログラミングでは関数の位置が、呼び出し場所と離れすぎている場合がほとんどなので、それが原因で別のコードの記述ミスをする可能性だって増えてしまいます。また、windowsAPIプログラミングの特殊事情で、関数を呼び出して引数を渡す際に、プログラマーの作成した変数だけを渡すのではなく、さらに各種のAPI用の様々な変数を渡す必要もあったりして、かなり関数を呼び出すことが、(windowsAPIでは)大変です。
 
一方、DOSプロンプトで呼び出すようなテキスト表示のプログラムなら、もしかしたら関数を使ったほうが良いのかもしれません。また、OSはwindowsではないですが、LinuxやBSDなどのオープンソースOSにてサーバーなどのような堅牢性の必要でテキスト形式なプログラムの作成とかなら、もしかしたら関数を多めに使ったほうが良いのかもしれません。
 
ですが、windowsAPIプログラミングは、まったく事情が異なります。windwosAPIはグラフィカルやサウンド処理なども必要な、マルチメディアかつイベントドリブンなプログラムです。
 
こういったAPI的な特殊事情もwindowsAPIプログラミングにはあるので、DOSプロンプトなどのコンソール画面で標準C言語のプログラムを呼び出す場合とは違うのです。よって、必ずしもwindowsAPIのグラフィカルなアプリでは「関数」はプログラマーにとって使いやすいとは、限りません。
21,932

回編集