我是否应该将 C# 连接函数一分为二,以遵守单一职责原则?

问题描述 投票:0回答:1

我正在编写一个 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;
        }                
    }
c# database-connection single-responsibility-principle
1个回答
0
投票

没有理由拆分这个方法。只需重命名它并避免在名称中使用“and”(通常是好的做法)。 GetConnection 或 GetOpenedConnection 听起来好多了

© www.soinside.com 2019 - 2024. All rights reserved.