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#]comboBoxでマウスホイールによる値の変更を禁止する

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

[C#]リストをカンマ区切りの文字列で出力する

リストの項目をカンマ区切りで出力したい 卵が先か鶏が先か~って話じゃないんですが、リストで出力した内容をカンマ区切りのデータにする必要が出てきたので、調べました。 List<string> …

DLLのプロパティのブロック解除をして、ダウンロードしたプログラムを起動出来るようにする。ダウンロードしたプログラムが実行できない時の対処法。

よくありますよね・・・ 予期せぬエラーってなんだよ(`・∀・´) 特にお客さんの目の前で「デンッ!!」っていうエラー音と共に表示された時の微妙な空気感がたまりません (╹◡╹) (^ω^) :(;゙゚ …

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

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

Excelでシートをコピーする時に、「名前が既に存在します。」と言われるのを回避して、Excel出力を早くしたい。

結論から書いてしまうと、名前の重複を削除しても、Excelの出力は別に早くならなかった。 早くなるという意味だと、手動でシートをコピーした時に、いちいちダイアログの対応をしなくて済むので、自分で作業し …


カテゴリー