专栏名称: java一日一条
主要是讲解编程语言java,并且每天都推送一条关于java编程语言的信息
目录
相关文章推荐
芋道源码  ·  Hutool中的这些工具类,太实用了! ·  11 小时前  
芋道源码  ·  SpringBoot启动原理详解(图文全面总结) ·  昨天  
芋道源码  ·  某公司新招了个牛逼的架构师后... ·  昨天  
芋道源码  ·  疯传Java界,堪称最强! ·  昨天  
芋道源码  ·  巧妙利用 SpringBoot ... ·  2 天前  
51好读  ›  专栏  ›  java一日一条

在Java 8下更好地利用枚举

java一日一条  · 公众号  · Java  · 2016-12-02 07:21

正文

在我们的云使用分析API中,返回了格式化过的分析数据(这里指生成分析图)。最近,我们添加了一个特性,允许用户选择时间段(最开始只可以按天选择)。问题是,代码中每天中的时间段部分高度耦合了……

例如,下面这段代码:


注意: Days、Minutes、Hours、Weeks 和Months一样出现在代码的后面部分。这些代码来自 Joda-Time Java时间和日期API 。甚至方法的名字都没有反应出(各自的功能)。这些名字牢牢的绑定到了days的概念上。

我也尝试过使用不同时间段方式(比如月、周、小时)。但我看到了糟糕的switch/case鬼鬼祟祟地隐藏在代码里。

你需要知道, switch/case=罪恶 已经深入我心了。在我大学期间的两段实习经历中就已经这么认为了。因此,我会不惜任何代价避免使用switch/case。这主要是因为它们违反了开放闭合原则。我深深地相信,遵循这个原则是写出面向对象代码的最好实践。我不是唯一一个这样想的,Robert C. Martin曾经说:

在很多方面,开放闭合原则是面向对象设计的核心。遵循这个原则会从面向对象技术中收获巨大的好处,比如可重用性和可维护性 1







请到「今天看啥」查看全文