C#コーディングルール

C#コーディングルール_#23_コンストラクタとデストラクタを作成

これではここからは,色々クラスを作成しながら,スタイルコップアナライザーのルールの確認をしていきたいと思います。

Objectsフォルダーの作成

WinFormプロジェクトを右クリックして,「追加」「新しいフォルダー」の順に選択し,フォルダーの「Objects」に変更します。

ProductEntityクラスの作成

作成した「Objects」フォルダーを右クリックし,「追加」「クラス」の順に選択し,「ProductEntity」クラスを作成します。ここでは例としてProductEntityとしていますが,名前は,なんでも構いません。今回は商品マスターの行データを格納するクラスの想定でProductEntityとしています。

警告の確認

作成したProductEntityはスタイルコップアナライザーの警告を示す波線が出ており,エラー一覧にも2つの警告が出ています。SA1400は「アクセス修飾子なし」,SA1600は「XMLコメントなし」の警告です。この2つは,お決まりの警告なので,クラスを作ったら,まずクラスに対するXMLコメントを書くことと,クラスのアクセス修飾子をどのようにするべきかを考えて,まずそれらを記述しましょう。

警告の対応

クラスの一行上の行でスラッシュを3つ打ち込むと,自動でXMLコメントの雛形が生成されます。自動生成されたら,コメント欄に「商品エンティティ」とコメントを書きます。続いてクラスのアクセス修飾子をinternalとします。もちろんinternalかpublicかは,用途に合わせて設定してください。sealedを付けているのは,このクラスが継承されることを想定していない為,sealedとしています。スタイルコップアナライザーの警告とは関係ありませんが,基本的にクラスはsealedで作成し,どうしても継承される必要のあるクラスだけをsealedなしとします。sealedで作成したクラスでも,後でどうしても継承する必要がでた場合は,その時点でsealedキーワードを削除して対応するというやり方がいいです。このようにすると,いったん警告が無くなります。

コンストラクタの作成

続いてコンストラクタの作成を行います。普通にタイピングしても構いませんが,「ct」と打ち込んで,Tabキーを2回押すと,自動でコンストラクタが生成されます。

コンストラクタの警告

この状態でもまた警告が表示されます。SA1600は例のごとくXMLコメントです。スラッシュ3つを打ち込んで,XMLコメントの雛形を自動で生成し,「コンストラクタ」を記述します。

SA1505とSA1508

SA1505は,中カッコの{の右側に不要な改行があることを示しています。SA1508は,中カッコ}の左側に不要な改行があることを示しています。

現在コンストラクタの{と}の間には改行が1行あり,それが不要な改行の為,この二つの警告が出ています。なので,この不要な1行を削除すると,2つの警告が同時に消えます。

次のように,コンストラクタに1行記述し,その次の行に,不要な改行を入れると,SA1500は表示されず,SA1508だけが表示されます。

どちらにしても,この2つの警告がある場合は,不要な改行があるということなので,不要な改行を消すようにしましょう。

デストラクタ

続いてデストラクタを記述します。デストラクタはチルダ「~」に続けてクラス名を書きますが,チルダ「~」を書いてからTABキーを押すことで,自動で生成されます。

警告はコンストラクタを作った時と同じ警告がでるので,XMLコメントを記述して,不要な改行コードを削除します。

SA1643

ここまで記述すると,新規の警告が表示されます。SA1643です。

XMLコメントが適切ではないといわれていますが,これは英語圏特有の文化で,日本語にはあっていないので,SA1643は非表示にしておきましょう。

以上でコンストラクタと,デストラクタ作成時の対応となります。

C#コーディングルール

C#を正しい3層構造で造れてますか?

非売品コースを受け取る

無料動画コース「C#のアーキテクチャー」(80分)をプレゼントしています

#01_はじめに
#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_最後に