
代码简洁之路
文章平均质量分 94
代码简洁之路
大·风
想起来什么就写点什么。
展开
-
聊一聊代码重构——封装集合和替换算法的代码实践
正常业务中,即使逻辑分支不同,但是其需要经历的流程大多是类似的,这个时候我们使用一些系列公共逻辑将其抽象。但是这些内容有可能并不是最好的方式,在原先的做法之外,可能存在更简单的解决方案,此时在重构代码时需要尝试对原来算法进行重构。很多时候我们封装了对象属性的访问,这能提供属性的安全性,但是对于集合,我们一般会将集合作为一个整体来控制。如果一个系统中是通过优惠标记来进行产品折扣的,那么这种固定产品ID进行折扣的方式,显然和产品正常涉及的逻辑不相符合。将正常的代码逻辑和特殊的代码逻辑隔离出来。原创 2023-03-12 20:30:27 · 672 阅读 · 1 评论 -
聊一聊代码重构——存在继承关系类上的代码实践
当一个子类继承了超类的很多方法,但是只使用其中的几个方法,而且这些方法并不是在子类中实现的,此时就可以考虑使用使用委托关系取代父类重构手法。如果一个字段或者方法在多个子类中使用,但是子类中它们所代表的含义和用法完全脱离的父类的约定,两者仅仅是使用相同的名称。需要注意的是将子类构造方法提升到父类后,这些构造方法会被所有子类使用,如果不仔细考虑代码中可能存在的细微差异,这个重构技巧可能会导致一些潜在的问题。需要注意的是,如果抽取到父类中的字段名称,和某些子类的变量重名时,要注意修改子类变量名,避免混淆。原创 2023-03-12 19:57:01 · 450 阅读 · 0 评论 -
聊一聊代码重构——程序方法和类上的代码实践
将存在的多个参数整合成一个对象进行传递,他带来的不仅仅是方法可读性的提高。更重要的一点是,构造方法的名称被严格限制,我们无法根据不同的构造方法来分析初始化的用途,但是使用工厂方法,我们可以通过参数名称、或者初始化方法的名称了解到对应方法解释初始化对象的用途。另外一种情况是,当一组方法使用相同的上下文的时候,我们可以为这些方法和上下文设置单独的类,将执行序列中的方法,作为类自身属性。并且需要修改的数据作为命令对象共享的字段,在不同处理方法中,不再需要设置繁琐的参数,所有的字段数据在调用方法后被实时更新。原创 2023-03-06 00:12:32 · 542 阅读 · 0 评论 -
聊一聊代码重构——程序方法上的代码实践
修改方法名称,一个好的方法名,让我们第一时间了解到方法的在业务中的作用,让我们更快的理解业务逻辑。而移除标记参数就是为了解决这些情况,将代码逻辑根据标记参数对分支的控制,创建对应的方法,每个方法执行对应逻辑分支内的逻辑,在传递标记参数的地方就直接调用对应的方法即可。当方法涉及的业务发生变化,内部逻辑出现调整的时候就需要考虑,方法名称是否可以被修改的前提,仔细了解方法内容,只有明白方法里面到底做了什么,才清楚方法的名称是否正常。在方法中不需要考虑标记方法的含义,因为方法中只存在单一场景的逻辑。原创 2023-03-05 21:54:55 · 540 阅读 · 0 评论 -
聊一聊代码重构——关于条件表达式的代码实践
和方法分解类似,如果有大的表达式,我们可以将其根据业务场景、数据模型等区分方式进行归类整理,类似的判断独立成一个方法,为其提供一个可以被理解的名称。一层一层嵌套的判断,加上复杂的逻辑,在看这些代码的时候只要分神,我们可能都无法确认当前逻辑存在的层级。很多时候即使将多个简单的表达式合并为一个复杂的表达式,最终的表达式依旧是个容易识别的表达式时,将他们合并起来是个好的方法。很多时候业务中的判断是分层的,我们需要判断上层内容然后再去进行下一层代码的判断,随着参数众多层级众多,我们的判断代码可能成为这个样子。原创 2023-03-05 00:04:30 · 497 阅读 · 0 评论 -
聊一聊代码重构——关于循环逻辑的代码实践
如果循环中的数据存在互相影响和依赖的情况,这会导致尝试理解循环中的代码所实现的目的变的更加困难。另外当多个业务共用一个循环时,如果不同的业务操作迭代范围不同,则需要在循环中添加各种不同的控制语句,会进一步降低代码的可读性。循环中存在另外一个问题就是多层循环,当多个循环在一起出现的时候,尝试阅读每层循环的逻辑会被其他循环所干扰,在理解当前循环内容时容易产生混淆。的核心是对数据的流式操作,它可以让我们通过流水线式的操作来处理数据,而不必编写冗长的循环和条件判断语句。是Java 8引入的一个强大的数据处理工具。原创 2023-03-04 23:48:29 · 680 阅读 · 0 评论 -
聊一聊代码重构——关于变量的代码实践
当一个表达式被赋值给一个变量后,在后续使用的时候,如果这段逻辑参与了后续的代码业务时,可以使用变量来替代,从而提高了代码复用程度。除了这种情况以外,有些时候变量完成初始化后,在后来的某处代码中会对变量再次进行了赋值,这种赋值有时候代表着变量的职责或者当时的数据状态发生了变化。虽然看起来变量增多了,但是在后续调用的时候可以清晰的理解,这两个变量内容是不一致的,而不至于调用的时候产生混乱。在上面例子中,除了可以将变量封装在对象中使用,部分基于变量的表达式,也可以作为对象自身的特性,作为对象的内部方法进行实现。原创 2023-03-04 23:35:11 · 714 阅读 · 0 评论 -
聊一聊代码重构——代码中究竟存在哪些坏代码
如果计划重构代码,那么首先要做的是发现坏的代码。坏的代码会导致可读性、可维护性都变的很差。原创 2023-03-03 23:46:17 · 607 阅读 · 0 评论 -
聊一聊代码重构——我们为什么要代码重构
简单谈一谈重构的内容原创 2023-03-03 23:35:04 · 919 阅读 · 0 评论 -
代码简洁之路——还在使用fori循环么?尝试用Java 的Stream来处理集合吧
新的循环上一篇介绍过函数式接口(@FunctionalInterface)和Lambda表达式。而伴随他们出现Java 8提供了一个强大的工具来实现对集合的操作——流(Stream)。配合流我们以前需要很多行代码才能完成的集合操作现在只需要三五行甚至一行就能完成。流 stream关于流JAVA提供了两种创建方式使用stream()创建串行流和使用parallelStream()创建并行流。这里都是基于串行流的内容了。关于并行流对于有些功能需要额外操作这里就没时间介绍了。就像之前介绍方法引用,既然原创 2020-06-21 19:28:57 · 1024 阅读 · 0 评论 -
代码简洁之路——一些让你代码更加简洁和清晰的JAVA特性
以上内容都是基于JAVA 8 的版本。对于之后的JAVA新特性并没有整理进来。平时我们开发功能时,总希望能用更简洁的代码实现业务需求,代码简洁一向都是各个开发人员追求的目标。就像是为了减少get、set我们可以使用lombok插件,为了方便进行SQL查询而使用MyBatis-Plus增强。而随着java版本不断的更新,Java也在语言层面上提供更多便利给开发人员。如何使自己的代码内容更加少,而可以实现的功能更多。最常提起的就是Java各个版本提供的语法糖。而关于语法糖的内容已经有足够多人去介.原创 2020-06-19 22:33:19 · 1818 阅读 · 0 评论