![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
代码设计
文章平均质量分 89
kopmj99
这个作者很懒,什么都没留下…
展开
-
已经是公元2023年了,一定还有这么写代码的Javaer——看如何把简单事情搞复杂的
先来一道开胃菜。这是典型的Javaer对于类似问题的代码写法。尝尝这么写香不香。(将is_tax从int改为tinyint(1))V再来看一个。首先是这个方法名,purchase这个动词说明是跟业务有关系,而且还是一个很大的业务逻辑,而如果真看代码则根本不是那么回事,其实加个get前缀才符合这个方法的气质。其次,宁可用一堆魔数加注释都舍不得定义几个常量。当然,更合适的方式是将这些equals判断放入vo中,然后给方法起一个符合业务的名字,比如 getSubjectOfInputTax()。原创 2023-03-05 13:06:13 · 146 阅读 · 0 评论 -
被代码规范毁掉的Java interface——面向接口编程就是一类一接口吗?
面向接口编程的理念是要基于协议或约定来编程,这里的“接口”指的是一组协议或约定,从代码的层面出发,接口就是能力的抽象,其目的是增强程序的灵活性。可以看到,这些接口中都有撤回,批准,拒绝,退回,添加审批人和转交他人几个方法,个别的接口因为业务差异定义了自己特有的方法,并且以上接口的实现类中的代码也是大同小异。很明显,上图中的那些接口其实只需定义一个“审批”接口便可被全部代替,然后为各具体类型的单据创建实现“审批”接口的类,各实现类中的相同代码还可提取到接口中。的姊妹篇,这两篇文字中的代码均来自于同一个系统。原创 2022-06-19 10:54:34 · 502 阅读 · 0 评论 -
SRP左右护法 vs 千行Service————状态模式+命令模式瘦身记
如果你看过了众多状态模式的讲解,也许你会发现所有网上和书中所介绍的状态模式的代码都有一个共同点,那就是Context在被赋予了一个初始状态后就不再与除State之外的对象交互了,换句话说就是Context中的所有方法是没有入参的,并且Context中如果维护了除State之外的属性,那这些属性的值是不能被使用Context的一方修改的。这是一种非常种理想的情况,实际业务中不会这么简单。来看下面的代码。原创 2022-11-19 20:32:57 · 285 阅读 · 0 评论 -
实体类(Entity)有大量属性且持续增加该如何应对
需要说明的是,不同类型的单据所使用的属性和List引用是不同的,也就是说,当单据实体中持有数据时,只有部分属性和List中是有数据的,其余都是Null。因此,在保存序列化明细项数据的同时,还要保存数据所对应的类的版本标识,如此程序才能够知道用哪个版本的明细项类(Class)来反序列化数据。由于系统中原有的一个核心实体类在业务扩展性方面的表现实在不佳,在每次新增单据类型时,如果这个新增的单据类型有明细项的话,那么就需要为该明细项创建一个明细表,并在单据实体类中添加一个明细项的一对多引用(List)。原创 2022-10-31 23:22:43 · 839 阅读 · 0 评论 -
用DDD(领域驱动设计)重构会计凭证生成(上)
由于之前采用DDD的战略战术工具对几个项目进行了重构,在可扩展性和易维护性方面取得了很好的效果,所以在维护这个系统的过程中,结合开发、测试、上线过程中所遇到的问题以及对业务领域的理解,初步形成了重构的总体框架思路,随着对业务领域的认识不断深入,并经过数轮迭代后得到了现在的成果。https://blog.csdn.net/wangleimj88/article/details/120929931?spm=1001.2014.3001.5502原创 2021-08-26 09:41:26 · 923 阅读 · 2 评论 -
该如何命名代码包以及划分代码包的结构
我们的代码是因业务而生,如果没有业务也就没有代码,所以,代码首先要反应的就是业务,而实现业务的具体手段则要隐藏在背后。 在继续浏览下面的内容之前,请先回答一个问题,当用IDE首次打开一个陌生的工程后,让你对它产生初始认知的是什么?what?工程名?好吧,前提是这个工程名不是几个单词的首字母缩写。README?你确定每个项目都有这个文件?即使有,里面信息的用处又有多大呢。而我的回答则已经在本文的题目中了。 代码包是我们人民群众喜闻乐见的一种划分代码整体结构的工具,用好它有助于明确业原创 2022-06-16 23:13:27 · 316 阅读 · 0 评论