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#
-,

関連記事

[C#]DateTimePickerは、CloseUpイベントで日付変更を取得する

日付関連で、取得した値がどうか?ってのを検出して判定する必要が出たのでメモ。 CloseUpイベントで何が判定されるのか? https://msdn.microsoft.com/ja-jp/libra …

ORACLEでTO_CHARを使用し、カンマ区切りデータを出力する

帳票出力を行うPGで困った。 数値形式のデータのため、カンマ区切りで表示したいんだけど、テンプレートの制約のせいで上手く行かなくて時の解決方法。 帳票のテンプレートとなるファイルのセルは文字列形式。 …

C#で日数計算を行うのに、DateDiff関数を使う以外の方法。でも、ぶっちゃけ関数使った方が早いし正確だよ。

C#に限らず、プログラミング言語にはDateDiff相当の関数が用意されているはずです。 Excelでは普通に加減算が可能ですが。 そして、結論を言ってしまうと、そういう関数がある場合、それを使うべき …

SyntaxHighlighter EvolvedっていうWordPressのプラグインを使ったら、楽にソースコードを表示できた。

SyntaxHighlighter Evolvedっていうプラグインを使って、コードの表示を楽にしてみた。 C#で正規表現が使えたらな〜って時は以外と多いので、ちょっと正規表現を頑張って使ってみた。 …

[C#]comboBoxでマウスホイールによる値の変更を禁止する

comboBoxってあるじゃないですか。 アレのお話。 勝手に値が変わってしまうコントロールがある いや、勝手にじゃなく、操作の結果なんだけども・・・ という、こちらの理論は当然ながらお客さんには通じ …


カテゴリー