今回は中括弧に関するルールと,改行に関するルールを解説していきます。
If文やfor文を中括弧なしで書いてはいけない
If文を1行や2行で書いた場合
C#ではif文を1行で書くことができます。
if (productId == 0) return 0;
このように1行で書いてもコンパイルは通りますが,スタイルコップアナライザーの警告がでます。
SA1503
中括弧が省略されている旨の警告です。
If文やfor文は1行または2行で中括弧なしで記述することができますが,そうしてしまうと,今後の修正で,処理を追加したときにバグりやすくなるという理由で,中括弧を書くことを推奨しています。
こんな感じで中括弧なしで書いているif文に,処理を1行追加したとします。
このように,真ん中にthis.value=2と書いてしまうと,完全にバグになります。この場合,if文がtrueの場合はthis.value=2を通りますが,return this.value;はif文の外側になってしまいます。
実際はこのように,2行とも,trueの時に通したいわけですから,処理が変わってきます。
今回の例では結果的にどちらの行も通過するかもしれませんが,こういった意図しない動きをするためバグというものが生まれてしまうので,今後のメンテナンスを考慮して,すべてのif文とfor文は中括弧を省略せずにコーディングしましょうというのが,今回のルールとなります。ですので中括弧を入れることでこの警告は消えます。
同じ理由で次のようなfor文も警告が出ます。
次のように中括弧ありで記述してください。
中括弧で終わっている次の行は改行する
このように,for文などの中括弧で閉じた後に,すぐにコードがあると警告になります。
SA1513
中括弧で閉じた次の行にコードがあると警告となります。これは読みやすさのルールで,if文やfor文の塊がわかりやすいようにしています。ですので,中括弧で閉じた後は,必ず,1行改行してから次のコードを書くようにしてください。
このように改行すると,警告が消えます。
#02_名前の付け方
#03_名前付けのガイドライン
#04_パスカルケースとキャメルケース
#05_パスカルとキャメルの内訳
#06_パスカルとキャメルの実演
#07_2文字の略語は大文字にする
#08_名前空間のガイドライン
#09_ローカルルールについて
#10_private変数にアンダーバーを付ける
#11_コントロールの名付け
#12_クラス名とファイル名の名づけ
#13_StyleCopAnalyzersについて
#14_StyleCopAnalyzersのインストール
#15_ネームスペースの調整
#16_SA0001_プロパティのビルドのXMLでファイルを指定しておくと消える
#17_CS1591_XMLコメントなし
#18_SA1101_thisが付いていない
#19_不要なルールを非表示にする方法
#20_SA1200_usingの場所
#21_SA1400_アクセス修飾子が明示的に定義されていない
#22_その他不要なルールを非表示
#23_コンストラクタとデストラクタを作成
#24_Private変数とパラメータ変数の命名
#25_中括弧の省略禁止と改行
#26_コメントはスラッシュ4つ
#27_プロパティのXMLコメント
#28_コンストラクタやプロパティの書く順番
#29_アクセスレベルを加味した書く順番
#30_インタフェースのIとファイル名の不一致
#31_最後に