编写功能代码需要注意哪些(一)

来源:互联网 发布:黑马程序员冯佳 编辑:程序博客网 时间:2024/06/05 02:05
在开发项目过程中我们往往为了赶项目,而做了一些吃力不讨好的事情。比如在编写功能代码时,我为了实现我们的功能没有花实现把整理逻辑里清楚,就开始写代码。
而这样的结果导致写完代码之后再去阅读理解之前的逻辑,需要花费好一段时间才能看得懂代码具体所表示的意思。同时也不利于方法的扩展,使得需要重新编写整理逻辑,这样其实在整理开发过程花的时间更多。 例如下面一段代码:
        public static string[] GetDefaulttime()
        {
            int h = DateTime.Now.Hour;
            int mn = DateTime.Now.Minute;

            string taketime = string.Empty;
            string takehour = string.Empty;
            string takeminutes = "00";

            string returntime = string.Empty;
            string returnhour = string.Empty;
            string returnminutes = "00";


            if (h == 17)
            {
                if (mn <= 29)
                {
                    h = DateTime.Now.Hour + 3;
                    taketime = DateTime.Today.ToString("yyyy-MM-dd");
                    returntime = DateTime.Today.AddDays(1).ToString("yyyy-MM-dd");
                }
                else
                {
                    h = 8;
                    taketime = DateTime.Today.AddDays(1).ToString("yyyy-MM-dd");
                    returntime = DateTime.Today.AddDays(2).ToString("yyyy-MM-dd");
                }
            }
            else if (h < 7)
            {
                h = 10;
                taketime = DateTime.Today.AddDays(0).ToString("yyyy-MM-dd");
                returntime = DateTime.Today.AddDays(1).ToString("yyyy-MM-dd");
            }
            else if (h >= 20)
            {
                h = 10;
                if (DateTime.Now.Hour == 20 && mn <= 29)
                    h = 8;
                taketime = DateTime.Today.AddDays(1).ToString("yyyy-MM-dd");
                returntime = DateTime.Today.AddDays(2).ToString("yyyy-MM-dd");
            }
            else if (h >= 7 && h < 17)
            {
                if (mn <= 29) h = DateTime.Now.Hour + 3;
                else h = DateTime.Now.Hour + 4;
                taketime = DateTime.Today.ToString("yyyy-MM-dd");
                returntime = DateTime.Today.AddDays(1).ToString("yyyy-MM-dd");
            }
            else if (h > 17 && h <= 20)
            {
                h = 8;
                if (DateTime.Now.Hour == 20 && mn > 29)
                    h = 10;
                taketime = DateTime.Today.AddDays(1).ToString("yyyy-MM-dd");
                returntime = DateTime.Today.AddDays(2).ToString("yyyy-MM-dd");
            }
            takehour = h >= 10 ? h.ToString() : "0" + h.ToString();
            returnhour = takehour;
            string[] temp = { taketime, takehour, takeminutes, returntime, returnhour, returnminutes };
            return temp;
        }
返回时间数组,我首先先理理这个方法所表达的意思。
首先可以看出有两个时间区操作,一个是在17:30以前的,一个是17:30之后的时间处理方式。如下讲解:
1.在17:30时间段中只有h这个“时间”值有变化,而变化值分成两块:7点,7-17:30。
2.在17:30之后的时间段也只有时间h这个“时间”值有变化,其他两个变量都是相对固定值。
现在我们思路整理清晰后,我们可以重新编写这个返回时间数组方法。
        public static string[] GetDefaulttime()
        {
            int h = DateTime.Now.Hour;
            int mn = DateTime.Now.Minute;
            int minutes=h * 60 + mn;
            int addDay = minutes / (17 * 60 + 30);
            //判断时间
            h = addDay == 0 ? (h < 7 ? 10 : (DateTime.Now.Hour + 3 + mn / 30)) : (minutes < 20 * 60 + 30 ? 8 : 10);
            string takehour, returnhour;
            returnhour = takehour = (h >= 10 ? "" : "0") + h.ToString();

            string taketime = DateTime.Today.AddDays(addDay).ToString("yyyy-MM-dd");
            string returntime = DateTime.Today.AddDays(addDay + 1).ToString("yyyy-MM-dd");
            return new string[] { taketime, takehour, "00", returntime, returnhour, "00" };
        }
看看是不是清晰明了许多???

为自己的新站做下广告
百姓生活信息平台

原创粉丝点击