写在前面的话
多年以来,参与了很多项目,每个项目又分为多个服务,每个服务可能就是一个工程(project),没有太好的工程治理,很多通用的组件、代码都是随处copy。之后就是任其自由发展,很难做到回溯和统一维护。现将这部分组件、代码整理,可以以jar的方式导入工程,亦可上传到私服以maven、gradle的方式依赖。
工程代码
代码可参考https://github.com/xiaojianhx/common
开发环境和工具
- JDK:jdk-13.0.1(因eclipse尚未支持jdk14,故暂用jdk13)
- maven:apache-maven-3.6.3
- IDE:Eclipse IDE for Java Developers(Eclipse IDE 2020-03)
虽然工具及时做了更新,但因能力和精力有限,代码的书写并未完全与时俱进,如jdk13的使用,并未体现新特征的精髓,待完善;
特殊说明:
- 本工程不集成大而全的功能,只是将日常工作中用的多、通用性强的功能片段抽取,形成模块。
- 本工程中的方法均已在正式环境中使用,但在高并发环境下未做严格测试
工程结构
common
├── common-dbutils // 数据库操作
├── common-email // 邮件服务
├── common-excel // excel读入导出操作
├── common-globle // 定义所有的常量
├── common-json // JSON工具类
├── common-root // 父工程,统一管理所有依赖的jar
├── common-schedule // 定时任务控制开关
├── common-redis // redis操作
├── common-remote // 远程操作系统操作
├── common-utils // 常用工具类
└── pom.xml
- common-root
该工程是一个pom工程,只有一个pom文件,定义全局的编译、运行环境、仓库地址、依赖jar包版本,所有工程应该 [直接 | 间接] [继承 | 依赖] 该pom。
该工程暂时放在common工程下,是common的parent。 - common-schedule
定时任务控制开关,依赖spring。很多时候,本地调试代码时,不希望执行定时任务,每次注释代码太烦,可以引入该模块,用法如下:
# application.properties
# 开关:true-open;false-close;
scheduler.enabled=true
# 线程数
scheduler.pool.size=100
# 线程前缀
scheduler.thread.name.prefix=thread-
@Scheduled(cron = "0/1 * * * * ?")
public void execute() {
System.out.println("1");
}
- common-globle
定义全局的常量。 - common-json
json操作工具类。 - common-utils
常用工具类,校验、字符串操作、时间格式化、随机数等;
写在后面的话
本人的编程思想:
- 少即是多,依赖越少越好,层级越浅越好;
- 追新,常用工具及时安装最新版本;
- 洁癖,同一工程中,同一段代码不能出现两次(广义理解);没用的废代码及时清理;
本人的编程规范(本人先后就职于对日公司、华为、互联网行业):
- 对日公司:给日本人做项目,日本人对规范要求慎严,包括命名、注释(javadoc)、格式等等;
- 华为期间:增加了圈复杂度、重复代码率、测试覆盖率等一系列规范和检测;
- 临近几家互联网公司:因公司特点,要求进度而忽视质量,所以曾经一度严谨的规范也适当简化;
基于上述几段经历,结合阿里的《Java开发手册》形成了当前的一套风格。只是在eclipse默认规范上修改两点,包括java和xml(因本人eclipse未装web插件,html、css、js等代码手动保证格式,写得多了,撩一眼基本就能发现问题):
曾几何时,公司几度以本人规范为标杆,也有公司让本人推广规范。这是个费力不讨好的差事。基于大家的习惯,如果没有严格指令,肯定推不动,最后就不了了之。只求度己,不度人了。
有兴趣的同事来交流,肯定知无不言言无不尽,其他的就睁一只眼闭一只眼了。但是参与本人主导的项目,则必须严格遵守要求。
受周边同事影响,本人现今书写代码也未完全准守规范。
变更日志
- 2020-05-23 20:23 初次编辑