写这篇文章的目的和上一篇单例模式一样,策略模式也是一种常用的设计模式,太多的if-else不仅看着不太美观而且不好维护,对于自己来说也等于复习了一遍策略模式.先说一下策略 模式的定义: 策略模式封装了算法家族,可以让彼此之间互相替换,简单的来说就是比如之前系统调用了两个数据源,现在要添加第三个数据源如果还是使用if-else就需要给所有调用数据源的地方加上 新的判断分支,从而导致维护繁琐.如以下代码: if(A){ System.out.println("调用A数据源"); }else…
一.写作背景 最近组内在推行checkstyle代码规范的检测,关于checkstyle的介绍可以参考:https://checkstyle.sourceforge.io, 在按照checkstyle修改问题时,遇到几个很头疼的问题,最头疼就是checkstyle对function中return数量的限制,这里有两种限制: 1.对于void返回值的function,return数量最多只允许有1个: 2.对于非void返回值的function,return数量最多只允许个有3个: 根据上面这两个…
实际项目中,往往有大量的if-else语句进行各种逻辑校验,参数校验等等,大量的if-else,语句使代码变得臃肿且不好维护,本篇文章结合我自己的经验,就减少if-else语句给出以下几种方案,分别适用于不同的场景,供大家参考,如有疑问或者建议,请大家及时指出; 一. 方案一:使用三元表达式: //使用if-else语句 String str; if (user.getAge()>18){ str="已成年"; }else { str="未成年"; } //使…
FindBugs 入门 FindBugs 作用 开发人员在开发了一部分代码后,可以使用FindBugs进行代码缺陷的检查.提高代码的质量,同时也可以减少测试人员给你报的bug数. 代码缺陷分类 根据缺陷的性质,大致可以分为下列几类 ·Bad practice  不好的做法 ·Correctness   可能有不正确 ·Dodgy code     糟糕的代码 ·Experimental  实验 ·Internationalization  国际化 ·Malicious code vulneril…
要在旧系统中加一个jquery插件,本地demo测试没问题,部署到服务器后却报错.使用的是IE9浏览器,打开F12调试台,发现默认的文档模式是IE7,调成IE9后,报错消失.可以确认是该插件不兼容IE7造成的. 有一个重大的疑惑,明明是IE9浏览器,打开后怎么会默认是IE7模式呢? 很快,在我翻看旧系统的代码时,这个疑惑稍稍有点眉目,看到了这样的一句:<meta http-equiv="X-UA-Compatible" content="IE=7" />…
前言 代码中嵌套的if/else结构往往导致代码不美观,也不易于理解.面向过程的开发中代码有大量的if else,在java中可以用一些设计模式替换掉这些逻辑,那么在js中是否也有类似的方法用来尽可能减少代码中的if/else嵌套呢? 有人认为:if else多就多呗,只要可读性强,维护起来方便.jQuery.fn.init里就是一堆if else判断,难道要质疑jQuery作者的水平了? 并不是说if else多就不好,关键是看用的地方,jQuery.fn.init里除了if else判断简洁…
理解javascript中的策略模式 策略模式的定义是:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换. 使用策略模式的优点如下: 优点:1. 策略模式利用组合,委托等技术和思想,有效的避免很多if条件语句. 2. 策略模式提供了开放-封闭原则,使代码更容易理解和扩展. 3. 策略模式中的代码可以复用. 一:使用策略模式计算奖金: 下面的demo是我在书上看到的,但是没有关系,我们只是来理解下策略模式的使用而已,我们可以使用策略模式来计算奖金问题: 比如公司的年终奖是根据员工的工…
目录 1.背景 2.案例 3.switch…case…方式实现 4.switch…case…带来的问题 5.使用策略模式重构switch…case…代码 6.总结 1.背景 之前在看<重构    改善既有代码的设计>一书,在看到Replace Type Code With  State/Strategy(用状态模式/策略模式替换类型码)一节时遇到一个困惑:怎么用策略模式替换switch case代码?所幸的时,两天前查资料的时候偶然看到 圣殿骑士 的博客,他写的<31天重构学习>系…
遭遇 bug 的时候,理性的程序员会说:这个 bug 能复现吗? 自负型:这不可能,在我这是好好的. 经验型:不应该,以前怎么没问题? 幻想型:可能是数据有问题. 无辜型:我好几个星期都没碰这块代码了! 乐观型:只需要改一行代码,不会影响其它程序的. 实践型:你重启一下服务试试. 无论你是哪种类型的程序员,遭遇 bug,内心都是崩溃的,尤其是产品经理或测试人员在使用或测试产品的过程中抓到你的一个 bug 之后那种如获至宝的表情和欢呼声,会让我们的心情久久不能平静.于情于理,防患于未然,减少编程中…
Java编程语言的人气自然无需质疑,从Web应用到Android应用,这款语言已经被广泛用于开发各类应用及代码中的复杂功能. 不过在编写代码时,bug永远是困扰每一位从业者的头号难题.在今天的文章中,我们将分享五贡最佳实践,希望帮助大家更为轻松地减少Java开发中的bug数量. 原则一:不要依赖初始化 在Java中,开发者常常依赖构造函数进行对象初始化.不过这其实是一种常见误区.我们完全可以在无需调用构造函数的情况下,通过多种方式实现对象分配. 下面来看几种常用方式: • 大家可以将所有变量声明…