我正在编写一个 C# 数据库连接类,我试图遵循最佳实践并生成干净的代码。
在下面的
CreateAndOpenDatabaseConnection
函数中,我正在实例化连接对象并打开连接。
这是否违反了单一责任原则(SRP)?
我应该编写一个实例化连接的函数和一个仅打开连接的函数吗?
我觉得这没有意义,不是吗?
public static class DatabaseConnector
{
public static SqlConnection CreateAndOpenDatabaseConnection()
{
string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
return connection;
}
public static SqlCommand CreateSqlCommand(string query, SqlConnection connection)
{
return new SqlCommand(query, connection);
}
public static SqlDataReader CreateDataReader(SqlCommand command)
{
SqlDataReader dataReader = command.ExecuteReader();
return dataReader;
}
public static List<PlaceHolder> GetCurrentPlaceHolder()
{
var PlaceHolderList = new List<PlaceHolder>();
using (SqlConnection connection = CreateAndOpenDatabaseConnection())
{
string query = {query};
using (SqlDataReader reader = CreateDataReader(CreateSqlCommand(query, connection)))
{
while (reader.Read())
{
PlaceHolderList.Add(new PlaceHolder{
...,
});
}
}
}
return PlaceHolderList;
}
}
没有理由拆分这个方法。只需重命名它并避免在名称中使用“and”(通常是好的做法)。 GetConnection 或 GetOpenedConnection 听起来好多了