Java 项目如何做代码风格的统一管理

2022-07-26 08:06:35 +08:00
 codingbody
Java 项目如何做代码风格的统一管理,我看大多开源项目使用的是 checkstyle 。

我了解 checkstyle 只是可以检查出不符合要求的代码,那么如何快速 format 这些不符合要求的代码呢?

各位在工作中是如何实践的呢?我期望的是可以配合 maven 或 gradle 构建工具达到 check 、format 两个目的。这样方便团队成员更容易遵守规范,通过 IDE 插件的话同步成本比较高。
5754 次点击
所在节点    Java
33 条回复
NGXDLK
2022-07-26 10:59:34 +08:00
你要不架把刀到每个人脖子上,要不代码不规范不让合代码
除了强制执行,否则下面的人听不听还另说
ryougifujino
2022-07-26 11:03:36 +08:00
前端 ESLint 和 Prettier 几乎成了标配了,Rust 也有 rustfmt ,Java 这方面看起来还没达成共识(
codingbody
2022-07-26 11:16:39 +08:00
@humpy #20 spotless-maven-plugin 可以做到把未使用的 import 移除嘛
xuyang2
2022-07-26 12:32:00 +08:00
formatter 代替不了 code review
代码风格已经是很细枝末节的东西

https://www.morling.dev/blog/the-code-review-pyramid/
https://www.morling.dev/images/code_review_pyramid.png
winix
2022-07-26 12:49:23 +08:00
iamqida
2022-07-26 13:13:21 +08:00
我司是制定了 eclipse code formatter 规则,配合 saveaction
humpy
2022-07-26 17:39:01 +08:00
@codingbody #23 可以的,你可以配置个 demo 项目试一下。https://github.com/diffplug/spotless

<java>
<includes>
<include>src/main/java/**/*.java</include>
<include>src/test/java/**/*.java</include>
</includes>
<importOrder>
<file>${build-utils.format.importorder}</file>
</importOrder>
<removeUnusedImports/>
<eclipse>
<file>${build-utils.format.java}</file>
</eclipse>
</java>
humpy
2022-07-26 17:57:24 +08:00
@codingbody 你们团队还注重 code style ,挺好的,现实里遇到的好多开发,根本不在乎代码格式这些东西,更别说代码的美感了,那些代码看着都糟心。

要做这件事,我建议就三个点:

1. 拍板一个代码格式标准(越讨论越没完没了,直接拍板);
2. 用 spotless-maven-plugin 或者类似的工具,通过 git pre-commit 钩子在开发者提交代码时自动做一下格式化(减少开发负担和抵触);
3. git 中心仓库在代码推送时,对代码做一下 mvn spotless:check ,不通过的不让入库(防止钻空子)。
uselessVisitor
2022-07-26 21:51:55 +08:00
很难,就算你搞了他们也不会按照你的来,idea 中一个类里面警告 100+装作没看见,还在早会上推行在 service 层直接返回 Result (统一封装的返回给前端的)。写好自己的代码得了
tianyu94
2022-07-26 21:57:50 +08:00
我们用的 prettier-maven-plugin ,搭配 git hooks ,格式不合法直接不让提交;当然 hooks 可以绕过,所以流水线还有一个 lint stage

当然也有缺点,如果项目非常大就比较慢。一般项目格式化和检查速度还行
tianyu94
2022-07-26 21:59:21 +08:00
@tianyu94 然而这样仅仅是解决“格式”规范;一些编码上的问题,逻辑问题、性能问题等还是得靠工程师经验或者实施代码评审
hpu423
2022-07-27 09:12:32 +08:00
@dk7952638 过来人都懂,企业都不按照劳动法赔偿,要学会保护自己
nothingistrue
2022-07-27 09:33:32 +08:00
国内还是别搞代码规范了。一管就过——一刀切的代码风格会严重挤占正常的开发时间甚至还会制造为了让工具零报错而产生的诡异代码。一松就乱——偶尔不检查一次后面就只能都不检查了。

代码风格跟代码一样,要想一直保持高质量,需要持续改善,需要:
一,定义一个强制性但最低限度的基础代码风格用于自动化格式,这个通常是要 IDE 插件自动格式化,在 maven/gradle 构建阶段自动格式化会导致开发阶段没法所见即所得。
二,在代码合并阶段,除了自动化检查代码格式工具( Git hook 、maven/gradle checkstyle 插件)外,还要附加人工评审,对于不适合让工具自动处理的格式化,进行人工格式化。
三,每隔一段时间,停止所有开发,进行一次集中的总体代码优化。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/868683

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX