*日本語でコーディングしてもコンパイルが通るみたいな話じゃないよ
言いたいこと
コーディング始めにメソッドを作るとき
パッと見何をやるかわかりにくい ↓
#region event
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
IsPaintBox();
}
#endregion
#region method
private void IsPaintBox()
{
if (csrPos[0] <= BOX_POS_LEFT) return;
if (csrPos[0] >= BOX_POS_RIGHT) return;
if (csrPos[1] <= BOX_POS_TOP) return;
if (csrPos[1] >= BOX_POS_BOTTOM) return;
PaintBox();
}
private int[] GetMousePosition()
{
}
private void DrawBoxFrame()
{
}
private void PaintBox()
{
}
#endregion
ので 日本語でみたら
#region イベント
マウスが動いたときのイベント()
{
四角に色を塗るか判断するメソッド();
}
#endregion
#region メソッド
マウスの位置を補足するメソッド()
{
}
// 画面初期描写時にのみ使用する
四角を描写するメソッド()
{
}
四角に色を塗るか判断するメソッド()
{
マウスの位置を補足するメソッド();
if(マウスの位置が四角の中なら)
{
四角を塗るさせるメソッド();
}
}
四角を塗るメソッド()
{
}
#endregion
わかりやすくない? って話
問題提起
最初から英字・ローマ字でコーディングすると、めっちゃ頭がこんがらがる...
→なら日本人に合った言語=日本語でコード組み立ててみたらいいんでは
→分かりやすくなった(手間は増える)
メリット(日本語で組むとどうなる)
・わかりやすい≒見やすい → 不足点・変更点が見つけやすい
これが大きい
・そのままコメント化できる
英字で作った後にコード読み直しながら概要コメントを作らなくていい
・メソッド名を考えやすくなる
マウスが四角の上に来たら四角を塗りつぶすメソッド
→マウスが四角の上に来たら/四角を塗りつぶすメソッド
→Mouse_On_Square / Paint_Square
→Paint_Square_On_Mouse
みたいな
・メソッド作る目的の軸がブレない
GetMousePosition より マウス位置取得、の方が
目的が明確に見える ワイは見える
デメリット
・多人数プロジェクトだと 命名の仕方が人によってバラつきが出そう
日本語→英字に変える時、コーディングルールに気をつけよう
既存メソッドがあるならそれに合わせよう(既存プロジェクトなら)
・後で結局メソッド名作んなきゃなのでめんどくさい
具体例
作成するプログラムは
「カーソルを四角の中に移動させると、四角の中に色がつく」
とする
流れとして
①イベントとメソッドを1つずつ作る
②メソッドを細分化する
③メソッドへ遷移する条件分岐を考える
④足りなそうなメソッドを足す
⑤完成
の順で考える
マウスが動いたときのイベント()
{
四角に色を塗るか判断するメソッド();
}
四角に色を塗るか判断するメソッド()
{
}
すごく大まかにつくる ↑
四角に色を塗るか判断するメソッド()
{
}
//↓
マウスの位置を補足するメソッド()
{
}
四角を塗るメソッド()
{
}
大まかなメソッドに、何が必要なのかを解体して考える ↑
四角に色を塗るか判断するメソッド()
{
マウスの位置を補足するメソッド();
if(マウスの位置が四角の中なら)
{
四角を塗るメソッド();
}
}
マウスの位置を補足するメソッド()
{
}
四角を塗るメソッド()
{
}
どう遷移するかぼんやり書く↑
四角の枠を描写するメソッド()
{
}
上の方で遷移書いてみて、足りないなーと思う機能(動作)が出たら追加する
出なければいい
マウスが動いたときのイベント()
{
四角に色を塗るか判断するメソッド();
}
四角に色を塗るか判断するメソッド()
{
マウスの位置を補足するメソッド();
if(マウスの位置が四角の中なら)
{
四角を塗るメソッド();
}
}
マウスの位置を補足するメソッド()
{
}
四角を塗るメソッド()
{
}
四角の枠を描写するメソッド()
{
}
みたいな
最後に
英語がわかりにくいんだ