Java代码规范

一、命名这块儿得讲究

名字起得好,注释写得少。命名是代码可读性的第一道门面。

包名:全部小写,用逆域名形式。比如 。别整啥大写字母或者下划线在里面,显得不专业。

类名/接口名:大驼峰,就是每个单词首字母都大写。比如 , 。类名用名词,接口名可以用形容词()或者名词。

方法名:小驼峰,第一个单词首字母小写。比如 , 。方法名最好是动词开头,让人一看就知道是干啥的。

变量名:同样小驼峰。比如 , 。临时变量像循环里的 , , 这种可以用,但作用域稍大的变量名必须有意义,别再用 , , 糊弄事了。

常量名:全部大写,单词间用下划线连接。比如 , 。记住,是 修饰的才算常量。

二、代码格式不能乱

格式是代码的仪表,穿得邋里邋遢,谁有耐心看你的内在美?

缩进:现在主流的IDE都支持用4个空格代替Tab。就统一用空格,别混着用,不然在不同环境下一打开,格式全乱套了。

大括号:推荐"埃及风格",左大括号不换行。

空格:操作符两边、逗号后面、if/for等关键词和小括号之间,都加上空格。比如 , 。这小细节能让代码呼吸感更强。

行宽:一行别写太长,建议别超过120个字符。超了就该换行了,换行时注意对齐,一般比上一行缩进一级。

空行:方法之间、逻辑段落之间,用空行隔开。就像文章分段一样,让代码结构更清晰。

三、注释的艺术

代码即文档是理想,好的注释是现实。

JavaDoc:公共的类、接口、方法、字段,都给我写上JavaDoc。用 ,把功能、参数、返回值、异常都说明白。这是给调用者最直接的说明书。

行内注释:少写"做了什么"(代码已经说了),多写"为什么这么做"。尤其是一些看似奇怪的逻辑或者业务上的特殊处理,必须注释原因。比如 。

四、OOP的那些原则

Java是面向对象的语言,别把它当脚本写。

访问控制:, , 用起来。字段能private就private,需要外部访问就提供getter/setter。这叫封装,能减少不必要的耦合。

多用接口:面向接口编程,而不是实现。这能让你的代码更灵活,更容易测试和扩展。

单一职责:一个类只干一件事,一个方法也只干一件事。别把一个方法写成几百行,跟一篇没标点符号的论文似的。拆,拆成多个小方法,每个方法名就解释了它在干啥。

慎用继承,多用组合:继承是强耦合,组合更灵活。"is-a"关系用继承,"has-a"关系用组合。

五、异常处理要谨慎

别吞异常:抓了异常 ,然后什么都不干,这是最恶劣的行为。至少打个日志,让人知道出问题了。

使用特定异常:能抓 就别直接抓 。抓得太泛,会把真正意想不到的bug也掩盖掉。

异常信息要有用:抛出异常时,信息要能帮助定位问题。别就写个 。

六、集合和并发

集合初始化:使用 , 或者直接 (Java 9+)来初始化集合,别老用 然后一个个 。

预估集合大小:如果你知道 大概要装多少数据,创建时就指定初始容量,避免多次扩容带来的性能开销。

并发安全:在多线程环境下,搞清楚你的集合是不是线程安全的。不是的话,用 , 或者通过 来包装。

七、常量与魔法数字

别在代码里直接写死数字或者字符串,特别是那些有特定含义的。比如 , 谁知道1是啥意思?定义成常量 , 然后用 , 一目了然。

八、工具类与代码复用

通用的、无状态的工具方法,抽到工具类里。工具类一般写成 的,构造函数私有化,防止被实例化。方法都是 的。

说到底,代码规范不是死板的教条,而是一种团队共识和职业素养。它能让你的代码从"能跑"升级到"优雅",让协作变得更顺畅,也让后续的维护成本大大降低。刚开始可能觉得束缚,但习惯了之后,你会发现它带来的好处远大于那一点点书写上的麻烦。好了,今天就扯这么多,希望对各位码农兄弟姐妹有所帮助。

相关推荐
深圳老胡14 小时前
STM32CubeMX 生成 CMake 工程,用 VSCode 编译与调试的完整流程
笔记·stm32·单片机·代码规范
星星泡饭吃20 小时前
【信息安全】越权防护设计评审指南
代码规范
GlobalSign数字证书21 小时前
申请 EV 代码签名证书需要准备哪些材料?
代码规范
深圳老胡21 小时前
STM32F4 OTA 升级双 App 方案设计与实现
笔记·stm32·单片机·代码规范
深圳老胡1 天前
STM32F4 OTA升级:单App与双App方案优缺点对比
笔记·stm32·单片机·代码规范
这个DBA有点耶2 天前
Change Buffer深入:二级索引写入的隐形加速器与它的代价
数据库·mysql·代码规范
知守观3 天前
一个半天需求干了三天:代码腐化的五个信号与自查命令
java·后端·代码规范
深圳老胡3 天前
STM32 MCU 国产替代型号简介
笔记·stm32·单片机·代码规范
深圳老胡3 天前
STM32 在 VSCode 下 -O0 与 -Os 编译条件的区别
笔记·stm32·单片机·代码规范
liangsheng_g5 天前
SpringAOP两套代理创建路线设计哲学与开源实践
spring·开源·代码规范