如何提高业务代码的可读性

背景 ​ 最近看了一些系统的历史代码,直观感受是很乱,不知道原有逻辑再做什么,也不知道新逻辑写在什么地方合适,来来回回还是自己加一个先对独立的逻辑实现需求,这样就更加混乱了。单看某个模块其实代码结构上是有很多用心设计的样子的,所以一直想弄清楚系统为什么变复杂了。目前有了一点阶段性的结论,先整理一下。 ​ 这里我不再考虑一些概念性的东西,像封装、继承...

DDD在中台中的实践

业务至上 业务系统的根本是业务。软件的核心是解决领域内相关问题的能力,实现方式只是一种工具。DDD是为了应对复杂领域而存在的。 技术解决不了业务问题,技术只能解决复杂业务附加的技术性问题,不要试图用技术去解决领域问题。 面向对象将程序设计人员从应对复杂的数据存储计算中解放出来,从而可以专注于业务模型设计。用面向对象的思维方式去抽象领域并...

Java网络IO

本文只考虑Linux系统 传统IO ServerSocket Socket 首先通常c语言中访问网络 int main() { //创建socket描述符 int socketfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); struct sockaddr_in se...

Java文件IO

本文只考虑Linux系统 传统IO FileOutputStream FileInputStream RandomAccessFile 这些类的实现最终都会通过native方法调用c代码 //FileOutputStream private native void write(int b, boolean append) thr...

业务事件中心设计思想

本文只是提供一个简单的思考方向,实现方案只是举例说明,如果读者也需要一个类似的功能,可以根据以下思路去完善。 背景 在订单系统的业务中通常会碰到类似这样的功能 订单5分钟未支付自动取消订单 订单支付30分钟后自动接单 订单15天后自动确认收货 或者在逆交易中有类似这样的需求 优惠券相关的商品金额退款完成后退还优惠券 ...

从File类到操作系统

public class File implements Serializable, Comparable<File> File类实现了Serializable, Comparable接口,可序列化,可以比较 Comparable接口的实现调用了FileSystem,FileSystem通过对比File的path字符串来返回,所以最终...

SpringIOC整体设计

从接口开始 先来看看4个接口BeanFactory、SingletonBeanRegistry、AliasRegistry、BeanDefinitionRegistry AliasRegistry定义了别名的接口而BeanDefinitionRegistry继承了AliasRegistry意味着BeanDefinitionRegistry也拥有...

关于财务业务模型的思考

之前参与公司财务业务的开发,自己阅读《会计学基础》后,自己尝试设计了一下业务架构,现在整理记录一下。 基本模型 组织 在财务中,会计并不关心这个组织是做什么的,在财务系统开发中我们将门店 仓库 供应商等统称为组织这种级别的组织我们称之为3级组织 对于国家税务局来说,他并不关系每个一级组织的情况,他们所关系的是分公司公司及2级组织和1级组织 为了统...