你离100%有多远

昨天修改个工具,关于数据库版本验证工具。

原先设计的版本验证是根据Test环境设计的,所以upgrade后的数据库和back DB的版本进行验证,而真正产品部署好后,back DB是upgrade之前备份的,所以取back DB就需要做一些添加更改。

 本来计划是根据今天的日期取最新的back DB, 根据 create date 排序。但当写好代码后,我敏感的发现问题了。假设是11:59 PM之前备份好数据库,过了12点就第二天了,如果用当前日期取back DB,那就取不到!代码已经写好了,怎么办????

//string backupDB = string.Format("PartitionMaster_Backup_{0}", "20121011");
backupedPartitionMaster = GetBackupedPartitionMasterDatabase(backupDB);

public string GetBackupedPartitionMasterDatabase(string database)
        {
            using (SqlConnection conn = new SqlConnection(MasterConnectionString))
            {
                conn.Open();
                string name = null;
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = string.Format(CheckDatabaseFullName, database);
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            name = reader["name"].ToString();
                            Logger.Info(string.Format("Database: {0} exists", name));
                        }
                    }
                }

                return name;
            }
        }
View Code

如果有2个选择,一个简单一个复杂并且自己不懂,那么本能是选择简单的方案!!!(SQL 中的时间处理我感觉不太会用,感觉比较麻烦,而且要花时间去查查资料)

纠结了一会,想想,这个无所谓,12点前backup DB, 应该不会碰到吧,反正这个也是测试代码,不是真正的产品代码。没事!

但脑海中一个例子影响了我,现在做到的是80%,而最后的努力,可能离100%更近,我为什么不再多花点时间把这20%给添加上呢?能做到更近100%,为什么只做80%呢?最终我的正面能量战胜了负面能量!改改改。改好后,一份完美的代码做了code review.

private const string CheckDatabaseFullName = "Select name from sys.databases where create_date>@datetime and name like N'PartitionMaster_Backup%' order by create_date";
backupedPartitionMaster = GetBackupedPartitionMasterDatabase();

public string GetBackupedPartitionMasterDatabase()
        {
            using (SqlConnection conn = new SqlConnection(MasterConnectionString))
            {                
                DateTime dt = DateTime.Now.AddHours(-12).ToUniversalTime();                
                conn.Open();
                string name = null;
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    //cmd.CommandText = string.Format(CheckDatabaseFullName, database);
                    cmd.CommandText = CheckDatabaseFullName;
                    cmd.Parameters.Add("@datetime", SqlDbType.DateTime);
                    cmd.Parameters[0].Value = dt;

                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            name = reader["name"].ToString();
                            Logger.Info(string.Format("Database: {0} exists", name));
                        }
                    }
                }

                return name;
            }
        }
View Code

记得以前公司一位牛人说过,多花时间把事情做到最好,当时没在意。现在才有真正的体会。2点感想

  1. 如果一件事可以做到 80% ~ 100%,为什么不多花点时间做到更好呢?
  2. 其实生活中的我们不都一样吗?不愿意接受新的事物,自己不熟悉,会有恐惧感!而真正让我们成长的确是这些新生事物,如果不去尝试,永远止步在那里!
原文地址:https://www.cnblogs.com/binyao/p/3090445.html