C#:ソースコードのブロック化は必要?

投稿日:

こんにちは、ブロック化の必要性が理解できないSEもどきですw

皆さんは使ってますか?

と、さも開発職の人がこのブログに来てるような書き出しですが、個人的に、このブロック化、使いづらいんですよね。

上手い使い方とかあれば、教えてください。

マジで。

ブロック化って何?

Visual Studio特有のものなんでしょうか?


#region ボタンクリック処理
private void button1_Click(object sender, EventArgs e)
{
view_messagebox(1);
}

private void button2_Click(object sender, EventArgs e)
{
view_messagebox(2);
}

private void button3_Click(object sender, EventArgs e)
{
view_messagebox(3);
}
#endregion

こんな感じで、「#region」から「#endregion」で閉じられるやつです。

これの上手い使い方が分からない。

メリットは?

ソースの可読性が上がる?

と聞いたけど、個人的にはそもそも他人のソースの時点で可読性もクソもない訳でw

あ、ソースをブロック単位で折りたたむことが出来るので、表示をすっきりさせることが出来ます。

こんな感じのソースを

折りたたむとこうなる。

これも、個人的には、見づらいだけなので・・・

 

・・・?

メリットらしいメリットが無いぞ???

デメリットは?

これはもう、個人の感想でしかない。

見づらい。

これはもう、折りたたまれてると、いちいち展開しないといけないのでイライラします。

書きづらい

いちいち「#region」と「#endregion」でくくる必要があるので、めんどい。

つづり間違えると、エラーになるし。

整理できない

任意の処理群をブロック化できることがメリットなのだけど、それ故に自分で処理を纏める必要がある。

例えば、こんな画面を作ったとして、各ボタンにはそれぞれクリック時の処理がある。

ここに4つ目のボタンを追加。

当然、プロパティ画面で確認しても、「Click」の部分には何もない訳で。

「Click」をダブルクリックして、button4_Clickを追加。

で、追加されたソースはこうなる。

4番目のボタンの処理を「 #region ボタンクリック処理」に纏めるためには、手動で移動させる必要がある。

これ、まだ数十行だからいいけど、ボタンやラベル、テキストボックスの処理が追加されると、数百行になるのも珍しくない。

そこにどのブロックにまとめるのか?

っていう問題と、そのブロックはどこにあるのか?

っていう問題が発生する。

自分の知る限り、このプルダウンのようにブロックの一覧を見れて、任意のブロックにすぐに移動できる仕組みを知らない。

なので、ブロックでまとまっていても、どこに何のブロックが書かれているか把握しづらい

検索時の一覧性が低い

Visual Studioでは、検索した単語をハイライト表示してくれます。

で、このハイライトを頼りにソースをスクロールしてザッ眺めることもあるけど、ブロックが閉じられてると見えない・・・

検索結果から飛ぶことは出来るのでいいんですが・・・

社内の開発ルールはどうなってるか?

ぶっちゃけ、弊社では社内の開発ルールになってるから、ブロック化してるだけ。

なんだけど、どうなのかな。

他の人は、見やすいと思ってるんだろうか?

そこが分からない・・・

ブロック化は無くても問題ない

ドロップリストでは項目名順に表示される

命名規則さえ守られてれば、見つけやすいと思うんですよ。

クリック処理は「Click_」で始めるとかにしておけば、クリック関連の処理なんてすぐ見つかる。

検索すればいい

身もふたも無いけど、検索すれば良い。

ハイライト表示で視認性もある。

検索結果から該当行へ移動も出来る。

プロパティのイベントからソースへ移動できる

例えばボタンのクリックイベントを登録すると、画面上ではこうなる。

Clickってところをダブルクリックすると、該当するイベント処理を表示できる。

まとめ

個人的にはブロック化のメリットが分からないんですよ。

だれか、良い管理の方法を教えてください。

ブロック化の本当のメリットとか、楽な管理の方法とか教えてください(切実)。

 







-C#
-,

関連記事

VisualStudioでデータテーブルの中身確認できるの便利すぎワロタw

DataSetビジュアライザーで、DataTableの中身が確認できるのが便利すぎたのでメモ。 データテーブルって気軽に使えるけど、中身の確認がしち面倒くさい件 本当のところはどうなのか?ってのは知ら …

[C#]$を使ったstring.formatの別の書き方

str += $"(文字列) = {x}"; 保守で、機能修正を行う必要があって、修正をしていたところ、こんな書き方をしているプログラムがありまして・・・ なんだこりゃ??? とな …

ORACLEでORA-01861: リテラルが書式文字列と一致しません

ORA-01861: リテラルが書式文字列と一致しません このエラー、ぶっちゃけ、意味が分からないところでもある。 日付の指定時に発生してて、原因が判明するまでに結構回り道をしました。 ネットで検索し …

[C#]TextBoxで、マウスクリック(1回目)だけ、内容を全選択させる

TextBoxの内容を全選択させるには、SelectAll()を使用 マウスの1回目も含めるなら、BeginInvoke~を使用 VB.net版はこちら。 日本の中心付近で仕様変更と闘うSE日記[VB …

[C#]ToStringメソッドで簡単に桁区切りを実現する方法

結論 ToStringメソッドと書式設定で解決。 int a = 1; int b = 1; int ab = a * b; string c = ""; //「1」になる c = …


カテゴリー