あなたのコードは静的ファクトリメソッドの典型的な例です。
ファクトリパターンはソフトウェアデザインパターンの一部であり、ソフトウェアデザインの特定のコンテキスト内で一般的に発生する問題に対する一般的な再利用可能なソリューションです。デザインパターンを理解するための非常に優れたスターターブックであるHeadFirstDesignPatternsを読むことをお勧めします。
コードに関するいくつかの提案:
- ファクトリメソッドを静的にします。インスタンス変数などは使用しません。
- 関連はありませんが、ファクトリメソッドでローカル変数を使用する必要はありません。接続を直接返すことができます。
これで、メソッドは次のようになります。
static SqlConnection CreateConnection(){
return new SqlConnection(ConfigurationManager.ConnectionStrings["IMS"].ConnectionString);
}
SqlConnectionのコンストラクターを呼び出す前に、ConnectionStrings["IMS"]がnullかどうかを確認することをお勧めします。このクラスは接続を開始しないため、これ以上のエラー処理は必要ありません。
開いている接続を返し、同じメソッドで接続エラーを処理するとします。
static SqlConnection CreateConnection()
{
if (ConfigurationManager.ConnectionStrings["IMS"] == null)
{
throw new Exception("Connection string not found in the configuration file.");
}
var sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["IMS"].ConnectionString);
try
{
sqlConnection.Open();
}
catch (Exception exception)
{
throw new Exception("An error occured while connecting to the database. See innerException for details.", exception);
}
return sqlConnection;
}
必要に応じて、後でこれらの例外を処理するための独自の例外クラスを作成できます。ASPMVCN層の例外処理を参照してください。例外が発生した場合にnullを返すこともできますが、最初に「 nullを返すのは悪いデザインですか?」をチェックしてください。