説明用変数の導入
前回のリファクタリングでは「一時変数のインライン化」を行いましたが、まだ分かりづらいので「説明用変数の導入」を試します。
●
一時変数のインライン化後のコード
// ビットマップを中央に描画
private void DrawCenter(Bitmap bitmap)
{
// ピクチャーボックス設定用ビットマップを生成
Bitmap canvas = new Bitmap(PictureBox1.Width, PictureBox1.Height);
// キャンバスのGraphicsオブジェクトを生成
Graphics g = Graphics.FromImage(canvas);
// キャンバスの中央にビットマップを描画
g.DrawImage(bitmap, (canvas.Width / 2) - (bitmap.Width / 2),
(canvas.Height / 2) - (bitmap.Height / 2));
// Graphicsオブジェクトのリソースを解放
g.Dispose();
// ピクチャーボックスに描画
PictureBox1.Image = canvas;
}
やはり中央にビットマップを描画する個所の計算式が分かりづらいので、中央描画用x座標「centerDrawXPosition」と中央表示用y座標「centerDrawYPosition」の説明用変数を導入してみます。
●
説明用変数の導入後のコード
// ビットマップを中央に描画
private void DrawCenter(Bitmap bitmap)
{
// ピクチャーボックス設定用ビットマップを生成
Bitmap canvas = new Bitmap(PictureBox1.Width, PictureBox1.Height);
// キャンバスのGraphicsオブジェクトを生成
Graphics g = Graphics.FromImage(canvas);
// 中央描画用x座標を取得
int centerDrawXPosition = (canvas.Width / 2) - (bitmap.Width / 2);
// 中央表示用y座標を取得
int centerDrawYPosition = (canvas.Height / 2) - (bitmap.Height / 2);
// キャンバスの中央にビットマップを描画
g.DrawImage(bitmap, centerDrawXPosition, centerDrawYPosition);
// Graphicsオブジェクトのリソースを解放
g.Dispose();
// ピクチャーボックスに描画
PictureBox1.Image = canvas;
}
DrawImageメソッドの引数は分かりやすくなりましたが、今度はコードが冗長になりました。次回は「問い合わせによる一時変数の置き換え」を試してみます。
コメントはまだありません。