[Java 基础]Java 语言的规范

news2025/6/6 16:35:19

代码格式

缩进:代码的层次感

怎么做: 统一使用 4 个空格进行缩进。不要用 Tab 键,因为不同的编辑器对 Tab 的显示宽度可能不一致,容易造成混乱。

大括号:清晰的代码块边界

风格: 推荐使用 K&R 风格(Kernighan & Ritchie):

左大括号 { 放在语句块的开始处,不另起一行,与前一个关键字或方法名在同一行,中间有一个空格。

右大括号 } 另起一行,与对应的左大括号对齐。

例外: 对于空的代码块,可以直接写成 {}。

if (condition) {
    // 代码块
} else {
    // 代码块
}

public void doSomething() {
    // 方法体
}

行的长度:保持适中

建议: 每行代码的长度尽量不要超过 120 个字符。

过长怎么办: 如果一行代码过长,应该进行换行。换行时要保持适当的缩进,使代码逻辑清晰。通常在运算符、逗号后面或方法调用的点号 .处进行换行。

// 过长的代码行
String veryLongString = "This is a very long string that exceeds the recommended line length and needs to be broken down for better readability.";

// 换行后的代码
String veryLongString = "This is a very long string that exceeds the recommended line length "
                        + "and needs to be broken down for better readability.";

someObject.longMethodName(parameter1, parameter2,
                         parameter3, parameter4);

注释

好的注释是代码的无声文档,能够帮助自己和他人理解代码的意图和实现方式。

Java 中的注释分为如下几类:

  • 单行注释 //: 用于解释单行代码或简单的说明。
  • 多行注释 /* … */: 用于解释一段代码或提供更详细的说明。
  • 文档注释 /** … */: 用于为类、接口、方法、字段等生成 API 文档(Javadoc)。

写的注释要遵循如下的原则:

  • 准确性: 注释的内容要与代码实际的功能和逻辑保持一致。
  • 简洁性: 注释应该简洁明了,避免冗余和废话。
  • 必要性: 注释应该解释代码的意图、实现思路、特殊情况或不容易理解的部分。对于显而易见的代码,可以省略注释。
  • 及时性: 当代码被修改时,相应的注释也应该及时更新。

如下这些情况请添加注释:

  • 类和接口的声明: 使用文档注释说明类或接口的作用、设计思路、作者、版本等信息。
  • 重要的方法: 使用文档注释说明方法的功能、参数、返回值、异常情况、使用示例等。
  • 复杂的逻辑: 对于实现复杂业务逻辑的代码块,添加注释解释其实现思路和关键步骤。
  • 重要的变量: 对于重要的成员变量或局部变量,添加注释说明其含义和用途。
  • 特殊情况或技巧: 对于一些特殊的处理逻辑、边界条件或使用的技巧,添加注释进行说明。
  • TODO、FIXME 等标记: 使用 // TODO: 标记待完成的任务,// FIXME: 标记需要修复的 Bug,// NOTE: 添加一些需要注意的事项。
/**
 * 表示一个简单的用户类。
 * 包含用户的姓名和年龄信息。
 *
 * @author Your Name
 * @version 1.0
 */
public class User {
    private String name; // 用户的姓名
    private int age;     // 用户的年龄

    /**
     * 构造一个新的 User 对象。
     *
     * @param name 用户的姓名,不能为空。
     * @param age  用户的年龄,必须为正数。
     * @throws IllegalArgumentException 如果姓名为空或年龄为负数。
     */
    public User(String name, int age) {
        if (name == null || name.isEmpty()) {
            throw new IllegalArgumentException("姓名不能为空");
        }
        if (age <= 0) {
            throw new IllegalArgumentException("年龄必须为正数");
        }
        this.name = name;
        this.age = age;
    }

    /**
     * 获取用户的姓名。
     *
     * @return 用户的姓名。
     */
    public String getName() {
        return name;
    }

    /**
     * 设置用户的姓名。
     *
     * @param name 要设置的姓名,不能为空。
     */
    public void setName(String name) {
        if (name == null || name.isEmpty()) {
            throw new IllegalArgumentException("姓名不能为空");
        }
        this.name = name;
    }

    // TODO: 添加获取年龄的方法
    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

代码美观

美观的代码不仅让人看着舒服,也能提高代码的可读性和维护性,从而提升开发效率。

  1. 命名规范:见名知意

类名和接口名: 使用名词或名词短语,采用 PascalCase 命名法(每个单词的首字母大写,其余字母小写)。例如:UserService、ProductRepository。

方法名: 使用动词或动词短语,采用 camelCase 命名法(第一个单词的首字母小写,后续单词的首字母大写)。例如:getUserById()、calculateTotalPrice()。

变量名: 使用名词或名词短语,采用 camelCase 命名法。尽量使用具有描述性的名称。例如:userName、orderCount。

常量名: 使用大写字母,单词之间用下划线分隔。例如:MAX_VALUE、DEFAULT_TIMEOUT。

包名: 使用小写字母,单词之间用点号分隔。通常采用公司或组织的域名倒置作为前缀。例如:com.example.myapp。

  1. 文件组织:清晰的目录结构

按照功能或模块将相关的类组织在不同的包中。

保持项目结构的清晰和一致性。

  1. 减少魔法数字和字符串

尽量使用常量来代替代码中直接出现的数字或字符串,提高代码的可读性和可维护性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2398986.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式——状态设计模式(行为型)

摘要 状态设计模式是一种行为型设计模式&#xff0c;核心在于允许对象在内部状态改变时改变行为。它通过状态对象封装不同行为&#xff0c;使状态切换灵活清晰。该模式包含环境类、抽象状态类和具体状态类等角色&#xff0c;具有避免大量分支判断、符合单一职责和开闭原则等特…

CTFHub-RCE 命令注入-过滤运算符

观察源代码 代码里面可以发现过滤了运算符&#xff0c;我们可以尝试分号&#xff1b; 判断是Windows还是Linux 源代码中有 ping -c 4 说明是Linux 查看有哪些文件 127.0.0.1;ls 打开flag文件 cat这个php文件 127.0.0.1;cat flag_257413168915334.php 可是发现 文本内容显示…

【音视频】H265 NALU分析

1 H265 概述 H264 与 H265 的区别 传输码率&#xff1a;H264 由于算法优化&#xff0c;可以低于 2Mbps 的速度实现标清数字图像传送&#xff1b;H.265 High Profile 可实现低于 1.5Mbps 的传输带宽下&#xff0c;实现 1080p 全高清视频传输。 编码架构&#xff1a;H.265/HEVC…

运维 vm 虚拟机ip设置

虚拟网络设置 nat 模式 网卡 主机设置网卡地址 虚拟机绑定网卡

飞牛fnNAS存储模式RAID 5数据恢复

目录 一、添加硬盘 二、创建RAID 5 存储空间 三、上传测试文件 四、拆除硬盘 五、更换硬盘 六、修复RAID 5 七、验证其内文件 八、NAS系统崩溃后的数据盘 前文《飞牛fnNAS存储空间模式详解》 中介绍了fnNAS存储空间的几个模式,细心的网友应该能感受到,我是非常推崇R…

论文笔记:DreamDiffusion

【初中生也能看得懂的讲解】 想象一下&#xff0c;我们能不能直接用“脑子想”来画画&#xff1f;比如你想到一只猫&#xff0c;电脑就能画出一只猫。这听起来是不是很酷&#xff1f;科学家们一直在努力实现这个“意念画画”的梦想。 以前&#xff0c;科学家们可能会用一种叫…

简单实现Ajax基础应用

Ajax不是一种技术&#xff0c;而是一个编程概念。HTML 和 CSS 可以组合使用来标记和设置信息样式。JavaScript 可以修改网页以动态显示&#xff0c;并允许用户与新信息进行交互。内置的 XMLHttpRequest 对象用于在网页上执行 Ajax&#xff0c;允许网站将内容加载到屏幕上而无需…

数据挖掘顶刊《IEEE Transactions on Knowledge and Data Engineering》2025年5月研究热点都有些什么?

本推文对2025年5月出版的数据挖掘领域国际顶级期刊《IEEE Transactions on Knowledge and Data Engineering》进行了分析&#xff0c;对收录的62篇论文的关键词与研究主题进行了汇总&#xff0c;并对其中的研究热点进行了深入分析&#xff0c;希望能为相关领域的研究人员提供有…

LabVIEW双光子显微镜开发

基于LabVIEW 开发高性能双光子显微镜系统&#xff0c;聚焦于生物样本深层成像与纳米材料三维表征。实现了超快激光控制、多维数据采集与实时图像重建。系统采用飞秒激光光源与高精度振镜扫描模块&#xff0c;结合 LabVIEW 的 FPGA 实时控制能力&#xff0c;可对活体组织、荧光纳…

WordPress 6.5版本带来的新功能

WordPress 6.5正式上线了&#xff01;WordPress团队再一次为我们带来了许多新的改进。在全球开发者的共同努力下&#xff0c;WordPress推出了许多新的功能&#xff0c;本文将对其进行详细总结。 Hostease的虚拟主机现已支持一键安装最新版本的WordPress。对于想要体验WordPres…

实现RabbitMQ多节点集群搭建

目录 引言 一、环境准备 二、利用虚拟机搭建 ​ 三、镜像集群配置 四、HAProxy实现负载均衡(主用虚拟机操作) 五、测试RabbitMQ集群搭建情况 引言 在现代分布式系统中&#xff0c;消息队列&#xff08;Message Queue&#xff09;扮演着至关重要的角色,而 RabbitMQ 作为…

GLIDE论文阅读笔记与DDPM(Diffusion model)的原理推导

Abstract 扩散模型&#xff08;Diffusion model&#xff09;最近被证明可以生成高质量的合成图像&#xff0c;尤其是当它们与某种引导技术结合使用时&#xff0c;可以在生成结果的多样性与保真度之间进行权衡。本文探讨了在文本条件图像生成任务中使用扩散模型&#xff0c;并比…

机器学习——放回抽样

为了构建树集成模型&#xff0c;需要一种叫做有放回采样的技术。 以4个标记为演示&#xff0c;分别是红色、黄色、绿色和蓝色&#xff0c;用一个黑色的袋子把这四个标记的例子放进去&#xff0c;然后从这个袋子里有放回地抽取四次&#xff0c;抽出一个标记&#xff0c;结果是绿…

Go的隐式接口机制

正确使用Interface 不要照使用C/Java等OOP语言中接口的方式去使用interface。 Go的Interface的抽象不仅可以用于dynamic-dispatch 在工程上、它最大的作用是&#xff1a;隔离实现和抽象、实现完全的dependency inversion 以及interface segregation(SOLID principle中的I和D)。…

报表/报告组件(二)-实例与实现解释

上篇《报表/报告组件(一)-指标/属性组件设计》介绍了组件核心指标/属性设计&#xff0c;本文以实例介绍各个特性的实现和效果&#xff0c;实例是多个报告融合&#xff0c;显示所有的特性。 设计 指标/属性组件是报告/报表关键部分&#xff0c;上篇已介绍过&#xff0c;本节回顾…

流媒体基础解析:音视频封装格式与传输协议

在视频处理与传输的完整流程中&#xff0c;音视频封装格式和传输协议扮演着至关重要的角色。它们不仅决定了视频文件的存储方式&#xff0c;还影响着视频在网络上的传输效率和播放体验。今天&#xff0c;我们将深入探讨音视频封装格式和传输协议的相关知识。 音视频封装格式 什…

一个html实现数据库自定义查询

使用场景 应用上线后甲方频繁的找开发查询数据库数据&#xff0c;且没有固定的查询规律&#xff0c;产品经理也没有规划报表需求。 实现方案 后端开放自定义sql查询&#xff0c;屏蔽所有数据库的高危操作&#xff0c;将常用查询的sql放在一个html中的js中直接查询&#xff0…

鸿蒙电脑会在国内逐渐取代windows电脑吗?

点击上方关注 “终端研发部” 设为“星标”&#xff0c;和你一起掌握更多数据库知识 10年内应该不会 用Windows、MacOS操作系统的后果是你的个人信息可能会被美国FBI看到&#xff0c;但绝大多数人的信息FBI没兴趣去看 你用某家公司的电脑系统,那就得做好被某些人监视的下场,相信…

持续领跑中国异地组网路由器市场,贝锐蒲公英再次登顶销量榜首

作为国产远程连接SaaS服务的创领者&#xff0c;贝锐持续引领行业发展&#xff0c;旗下贝锐蒲公英异地组网路由器&#xff0c;凭借出色的技术实力和市场表现&#xff0c;斩获2024年线上电商平台市场销量份额中国第一的佳绩&#xff0c;充分彰显了其在网络解决方案与异地组网领域…

Spring AI 系列3: Promt提示词

一、Promt提示词 Promt提示是引导 AI 模型生成特定输出的输入&#xff0c; 提示的设计和措辞会显著影响模型的响应。 在 Spring AI 中与 AI 模型交互的最低层级&#xff0c;处理提示有点类似于在 Spring MVC 中管理”视图”。 这涉及创建带有动态内容占位符的大段文本。 这些占…