开发手册——一、编程规约_3.代码格式

news2024/11/14 21:27:17

这篇文章主要梳理了在java的实际开发过程中的编程规范问题。本篇文章主要借鉴于《阿里巴巴java开发手册终极版》

下面我们一起来看一下吧。

1. 【强制】大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果是非空代码块则:

  1. 左大括号前不换行。
  2. 左大括号后换行。
  3. 右大括号前换行。
  4. 右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行。

2. 【强制】 左小括号和字符之间不出现空格;同样,右小括号和字符之间也不出现空格。详见第 5条下方正例提示。

反例:if (空格 a == b 空格)

3. 【强制】if / for / while / switch / do 等保留字与括号之间都必须加空格。

4. 【强制】任何二目、三目运算符的左右两边都需要加一个空格。

说明:运算符包括赋值运算符=、逻辑运算符&&、加减乘除符号等。

5. 【强制】采用 4 个空格缩进,禁止使用 tab 字符。

说明:如果使用 tab 缩进,必须设置 1 个 tab 为 4 个空格。IDEA 设置 tab 为 4 个空格时, 请勿勾选 Use tab character;而在 eclipse 中,必须勾选 insert spaces for tabs。

正例: (涉及 1-5 点)

public static void main(String[] args) {
        // 缩进4个空格
        String say = "hello";
        // 运算符的左右必须有一个空格
        int flag = 0;
        // 关键词if与括号之间必须有一个空格,括号内的f与左括号,0与右括号不需要空格
        if (flag == 0) {
            System.out.println(say);
        }

        // 左大括号前加空格且不换行;左大括号后换行 
        if (flag == 1) {
            System.out.println("world");
        // 右大括号前换行,右大括号后有 else,不用换行 
        } else {
            System.out.println("ok");
        // 在右大括号后直接结束,则必须换行 
        }
    }

6. 【强制】注释的双斜线与注释内容之间有且仅有一个空格。

正例:// 注释内容,注意在//和注释内容之间有一个空格。

7. 【强制】单行字符数限制不超过 120 个,超出需要换行,换行时遵循如下原则:

  1. 第二行相对第一行缩进 4 个空格,从第三行开始,不再继续缩进,参考示例。
  2. 运算符与下文一起换行。
  3. 方法调用的点符号与下文一起换行。
  4. 方法调用时,多个参数,需要换行时,在逗号后进行。
  5. 在括号前不要换行,见反例。

正例:

StringBuffer sb = new StringBuffer();
        // 超过 120 个字符的情况下,换行缩进 4 个空格,点号和方法名称一起换行
        sb.append("zi").append("xin") 
            .append("huang") 
            .append("huang") 
            .append("huang");

反例:

         StringBuffer sb = new StringBuffer();

        // 超过 120 个字符的情况下,不要在括号前换行

        sb.append("zi").append("xin")...

                append ("huang");

        // 参数很多的方法调用可能超过 120 个字符,不要在逗号前换行

        method(args1, args2, args3, ... ,

                argsX);

8. 【强制】方法参数在定义和传入时,多个参数逗号后边必须加空格。

正例:下例中实参的"a",后边必须要有一个空格。

method("a", "b", "c");

9. 【强制】IDE 的 text file encoding 设置为 UTF-8; IDE 中文件的换行符使用 Unix 格式, 不要使用 Windows 格式。

10. 【推荐】没有必要增加若干空格来使某一行的字符与上一行对应位置的字符对齐。

正例:

 说明:增加 sb1 这个变量,如果需要对齐,则给 a、b、c 都要增加几个空格,在变量比较多的 情况下,是一种累赘的事情。

11. 【推荐】方法体内的执行语句组、变量的定义语句组、不同的业务逻辑之间或者不同的语义 之间插入一个空行。相同业务逻辑和语义之间不需要插入空行。 说明:没有必要插入多个空行进行隔开。

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

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

相关文章

BI的能力边界:能解决的企业问题和不擅长的领域

数字化转型本就需要借助信息化相关技术、思想来完成,所以说信息化建设同样是数字化转型过程中非常重要的一环,而这就是商业智能BI和数字化转型的关系 BI 能解决的企业问题 数据是企业的重要资产,也是企业商业智能BI的核心要求。通常&#x…

【微信小程序】-- 全局配置 -- tabBar(十七)

💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…

【数据可视化工具】浅谈 DataEase 和 FineBI 支持的数据源

前言最近对市面上比较火热的数据可视化工具 DataEase 和 FineBI 进行了调研,在支持的数据源方面感觉不太一样,所以就有了这篇文章,话不多说,我们一起来看一下吧!以下的内容,大多来自两个工具的官方文档&…

高可用 - 05 Keepalived配置(全局配置、VRRPD、LVS)

文章目录PreKeepalived的全局配置Keepalived的VRRPD配置VRRP同步组配置VRRP实例配置Keepalived的LVS配置TCP_CHECKHTTP_GET & SSL_GETMISC_CHECKPre 高可用 - 04 Keepalived编译安装 高可用 - 04 Keepalived编译安装安装Keepalived的过程中,指定了Keepalived配…

Chrome访问新版bing(玄学,需要魔法)

文章目录前提1. 需要魔法2. 申请过使用新版bing,并且收到通过的邮件。没有的话先申请,加入waiting list(不赘述,自行百度)配置1. Chrome安装插件(Header Editor)2. Header Editor添加规则3. 允许…

PaddleOCR遇到 lanms-neo问题处理

在window环境中安装PaddleOCR依赖是真的蛋疼,关键官方论坛里也都没有具体的解决方案。吐槽。。。吐槽。。。 我在 “windows安装lanms-neo问题处理”文章中看到lanms-neo问题全过程解决。个人觉得文档说明不是很细致,导致我按步骤执行,还是安…

插上数据的翅膀,开启我升职加薪的梦想之旅

我是麦思思,大学毕业后就进入大厂工作并担任电子消费行业业务部门的数据分析师,对于一个数据分析师而言,Excel是必备技能,函数公式我能随手就来,几十M的文件处理那都是轻轻松松。但是,近几年随着企业业务发…

一种全新的图像变换理论的实验(五)——研究目的替代DCT和小波

一、前言 目前在大量的灰度图像测试下,基本确定变换系数ratio取值0-25之间时,逆变化后的图还能基本保障效果,而且越接近0效果越好。本文还是以lenna.bmp灰度图为例,实验不再逆变换,而是把变换后的数据直接输出为bmp的…

如何计算Bitmap的内存占用

日常我们提到图片大小的时候,一般都会把关注点放在图片的文件大小。因为一般来说,图片文件越小,内存占用也会越小。但是其实图片文件大小和内存占用大小没有什么直接的必然联系,我们可以通过查看 Android 的 Bitmap 的内存分配&am…

GitLab 专家分享|关于 DevSecOps ,你需要知道这几点

本文来源:about.gitlab.com 译者:极狐(GitLab) 市场部内容团队 ❔ 灵魂拷问: 你的安全测试,能否跟上现代软件开发模式的步伐? GitLab 预测到,2023 年企业会将更多的时间和资源投入到持续的安全左移上&…

Day08-网页布局实战表单和表格

文章目录网页布局实战一 表单案例1-表单前后端交互案例2-常用表单元素知识点input的属性总结:type属性的其他值(了解):按钮label标签二 结构伪类选择器三 表单布局案例案例1贯穿案例-登录页面制作案例2贯穿案例-注册页面制作四 表格案例1-表格设计案例2-…

taobao.item.propimg.upload( 添加或修改属性图片 )

¥开放平台基础API必须用户授权 添加一张商品属性图片到num_iid指定的商品中 传入的num_iid所对应的商品必须属于当前会话的用户 图片的属性必须要是颜色的属性,这个在前台显示的时候需要和sku进行关联的 商品属性图片只有享有服务的卖家(如&a…

JVM对象实例化详解

1、对象创建方式你知道几种呢?new:最常见的方式、Xxx的静态方法,XxxBuilder/XxxFactory的静态方法Class的newInstance方法:反射的方式,只能调用空参的构造器,权限必须是publicConstructor的newInstance(XXX…

maven 私服nexus安装与使用

一、下载nexus Sonatype公司的一款maven私服产品 1、官网下载地址:https://help.sonatype.com/repomanager3/product-information/download 2、csdn下载地址:https://download.csdn.net/download/u010197591/87522994 二、安装与配置 1、下载后解压如…

【Rust日报】2023-02-28 Rust 和 WASM 如何驱动 1.1.1.1

为什么用 Rust 构建原生 UI 程序这么困难Rust 正被用于构建 Linux 内核和 Android 操作系统,也被 AWS 用于关键基础设施,以及用于 ChromeOS 和Firefox。尽管 Rust 很有前景,但它在 GUI 原生开发领域还有所欠缺。在 2019 年,GUI 是…

【Springboot】Springboot集成 Druid

Springboot集成 Druid 对于数据访问层,无论是Sql还是NoSql,SpringBoot默认采用整合SpringData的方式进行统一管理,添加大量的自动配置,屏蔽了很多设置。引入了各种XxxTemplate和XxxRepository来简化我们队数据访问层的操作。 Sp…

FCT: The Fully Convolutional Transformer for Medical Image Segmentation 论文解读

The Fully Convolutional Transformer for Medical Image Segmentation 论文:The Fully Convolutional Transformer for Medical Image Segmentation (thecvf.com) 代码:Thanos-DB/FullyConvolutionalTransformer (github.com) 期刊/会议:W…

性能调优,看过的都说会了...

在展开今天的内容之前,我们先来看一下,是不是任何一个测试都可以学习性能测试。 如果说需求、开发、DB、运维、测试是单一一门学科,那么性能就是综合学科,它包含了需求分析、DB、开发、测试、运维的所有学科。 所以说&#xff0…

深度学习在耐火砖项目的一些思考

1.项目概述 年前,产品经理找到我,让我去测试3D视觉耐火砖拆垛项目。大概就是这种转 2. 实际情况 去了现场,采集图像,标定相机和机器人。发现客户不是要顶点的中心点坐标,而是要侧面中心点坐标。因为他们是从侧面抓…

Spring中Emable和Import相关操作

05-SpringBoot自动配置-Enable注解原理 SpringBoot不能直接获取在其他工程中定义的Bean 演示代码: springboot-enable工程 /*** ComponentScan 扫描范围:当前引导类所在包及其子包** com.itheima.springbootenable* com.itheima.config* //1.使用Compo…