前言

每次去不同的公司,码不同的代码,适应不同的规范,经常被老大教育规范问题,我都有点走火入魔的感觉,还是要去看看阿里巴巴Java开发规范,从中熟悉一下,纠正自己,码出高效,码出质量

想细看的可以去官网下载,或者下面自取

阿里巴巴Java开发手册(终极版)

三、代码格式(选好的开发工具,快速格式化非常实用)

  1. 【强制】大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果是非空代码块则:(这个会比较常见,很多程序员在快速编码过程中直接if())

    • 左大括号前不换行。
    • 左大括号后换行。
    • 右大括号前换行。
    • 右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行。
  2. 【强制】 左小括号和字符之间不出现空格;同样,右小括号和字符之间也不出现空格。详见第 5 条下方正例提示。
反例:if (空格 a == b 空格)
  1. 【强制】if/for/while/switch/do 等保留字与括号之间都必须加空格。
  2. 【强制】任何二目、三目运算符的左右两边都需要加一个空格。
    • 说明:运算符包括赋值运算符=、逻辑运算符&&、加减乘除符号等。
  3. 【强制】采用 4 个空格缩进,禁止使用 tab 字符。
    • 说明:如果使用 tab 缩进,必须设置 1 个 tab 为 4 个空格。IDEA 设置 tab 为 4 个空格时,请勿勾选 Use tab character;而在 eclipse 中,必须勾选 insert spaces for tabs。

综合示例

public static void main(String[] args) {
// 缩进 4 个空格
String say = "hello";
// 运算符的左右必须有一个空格
int flag = 0;
// 关键词 if 与括号之间必须有一个空格 if[空格](),
// 括号内的 f 与左括号,0 与右括号不需要空格
if (flag == 0) {
System.out.println(say);
}
// 左大括号前加空格且不换行;左大括号后换行
if (flag == 1) {
System.out.println("world");
// 右大括号前换行,右大括号后有 else,不用换行
} else {
System.out.println("ok");
// 在右大括号后直接结束,则必须换行
}
  1. 【强制】注释的双斜线与注释内容之间有且仅有一个空格。
正例:// 注释内容,注意在//和注释内容之间有一个空格。
  1. 【强制】单行字符数限制不超过 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);
  2. 【强制】方法参数在定义和传入时,多个参数逗号后边必须加空格。

正例:下例中实参的"a",后边必须要有一个空格。
method("a", "b", "c");
  1. 【强制】IDE 的 text file encoding 设置为 UTF-8; IDE 中文件的换行符使用 Unix 格式,不要使用 Windows 格式。(记得去配置好file encoding,否则别人拉下来的代码是乱码)
  2. 【推荐】没有必要增加若干空格来使某一行的字符与上一行对应位置的字符对齐。正例:

    (开发工具,你按下Enter键继续编码,它会自动帮你靠左对齐)
正例:
int a = 3;
long b = 4L;
float c = 5F;
StringBuffer sb = new StringBuffer();
说明:增加 sb 这个变量,如果需要对齐,则给 a、b、c 都要增加几个空格,在变量比较多的情况下,
是一种累赘的事情
  1. 【推荐】方法体内的执行语句组、变量的定义语句组、不同的业务逻辑之间或者不同的语义之间插入一个空行。相同业务逻辑和语义之间不需要插入空行。

    • 说明:没有必要插入多个空行进行隔开。(四)OOP 规约

总结:

在编码过程中,时不时会忘记一些代码格式规范,特别是临上线的时间,开发周期短,很多同学会为了快速开发,放弃格式。而且在编码过程中,谁能保证自己真的能按代码规范走呢。

所以选好开发工具非常重要(idea可以导入代码格式规范),使用快速格式化功能解决这些细节。

每日学学Java开发规范,代码格式(附阿里巴巴Java开发手册(终极版))的更多相关文章

  1. 阿里官方Java代码规范标准《阿里巴巴Java开发手册 终极版 v1.3.0》

    终极版 v1.3.0 2017年开春之际,阿里诚意献上重磅大礼:<阿里巴巴Java开发手册>,首次公开阿里官方Java代码规范标准.这套Java统一规范标准将有助于提高行业编码规范化水平, ...

  2. CSS规范 - 代码格式--(来自网易)

    选择器.属性和值都使用小写 在xhtml标准中规定了所有标签.属性和值都小写,CSS也是如此.单行写完一个选择器定义 便于选择器的寻找和阅读,也便于插入新选择器和编辑,便于模块等的识别.去除多余空格, ...

  3. Android开发之SDCardUtils工具类。java工具详细代码,附源代码。判断SD卡是否挂载等功能

    package com.xiaobing.zhbj.utils; import java.io.BufferedInputStream; import java.io.BufferedOutputSt ...

  4. Java编程规范参考

    谷歌Java编程规范-原版 谷歌Java编程规范-中文翻译版 阿里巴巴Java编程规范 阿里巴巴Java编程规范-IDEA 插件 阿里巴巴Java编程规范-Eclipse 插件

  5. 阿里Android开发手册正式版一览

    新年伊始,春意盎然之际,阿里巴巴在2月28日再度为工程师们送上了一份重磅开春好礼:<阿里巴巴Android开发手册>. 该手册长达66页,是阿里巴巴集团各大 Android 开发团队的集体 ...

  6. 重磅发布:《阿里巴巴Android开发手册(规约)》

    1.前言 阿里巴巴于近日为广大程序员再送上重磅开春好礼:<阿里巴巴Android开发手册(规约)>.该开发规范在阿里内部经过了长期的修缮,现已总结成册,向所有移动开发者.技术爱好者开放,希 ...

  7. Java常见开发规范

    1 背景概述 作为程序员大军中的一员,笔者工作于沈阳数通畅联软件技术有限公司.在任职工作的第一天就听领导强调开发规范的重要性,但是笔者心里还想为什么开发规范是最重要的,难道是不应该是实现功能就万事大吉 ...

  8. Alibaba Java Coding Guidelines,以后我的Java代码规范,就靠它了

    前言 对于Java代码规范,业界有统一的标准,不少公司对此都有一定的要求.但是即便如此,庞大的Java使用者由于经验很水平的限制,未必有规范编码的意识,而且即便经验丰富的老Java程序员也无法做到时刻 ...

  9. java & android 开发规范手册

    阿里巴巴Java开发手册(终极版)https://pan.baidu.com/s/1c1UQM7Q 阿里巴巴Java开发规约插件p3cGitHub:https://github.com/alibaba ...

  10. 阿里巴巴 Java 开发手册评述

    http://blog.jobbole.com/110427 阿里巴巴Java开发手册(终极版)https://pan.baidu.com/s/1c1UQM7Q 阿里巴巴Java开发规约插件p3cGi ...

随机推荐

  1. 社区6月月报 | Apache SeaTunnel重要更新与优化记录

    各位热爱Apache SeaTunnel的小伙伴们,社区6月份月报来啦!这里将记录Apache SeaTunnel社区每月的重要更新,欢迎关注. 月度Merge Stars 感谢以下小伙伴上个月为Ap ...

  2. 曝光!Apache SeaTunnel Catalog 功能设计为何能大大简化用户启用步骤?

    Catalog(目录)提供了关于数据库.表格和访问数据所需的信息的元数据,以及统一的 API 来管理元数据,验证连接,让元数据对 Sources(数据源).Sinks(数据汇)和 Web 可访问. C ...

  3. .NET 8 跨平台高性能边缘采集网关

    前言 在物联网(IoT)和工业自动化领域,边缘计算设备扮演着至关重要的角色.边缘采集网关作为连接物理世界与数字世界的桥梁,负责收集传感器数据并将数据传输到云端或本地数据中心进行处理. 本文将介绍一款基 ...

  4. curl可以访问虚拟机资源,但是宿主机浏览器不能访问

    如果想从宿主机访问到虚拟机内的php,需要关闭宿主机的代理,并且设置虚拟机内的防火墙不要屏蔽宿主机的ip. 设置虚拟机防火墙方法: 查找宿主机IP:win+r,输入ipconfig 打开虚拟机,输入s ...

  5. 关于Mongodb索引创建的一些体会

    mongodb索引分类以及创建我就不多说了,如果想了解可以直接在百度上搜索,这里我说一下关于索引创建的个人想法. 1.优先给一些Id类字段添加索引,查询时可以缩小扫描范围. 2.创建联合索引时,索引字 ...

  6. Linux内核如何访问另外一个模块的函数和变量 原创

    一.问题整理 内核中两个模块,一个A,一个B,A模块中有操作函数,B模块要调用A模块的函数. 二.分析 这是一个驱动工程师经常遇到的一个问题,该问题其实是模块符号导出问题,实现该功能比较简单,借助EX ...

  7. mysql vs mongodb

    Comments MongoDB 是NoSQL 数据库,适合存JSON格式数据,MySQL是关系型数据库,适合存table格式数据 MongoDB扩展性更好,MySQL支持主从和cluster但是感觉 ...

  8. WebShell流量特征检测_哥斯拉篇

    80后用菜刀,90后用蚁剑,95后用冰蝎和哥斯拉,以phpshell连接为例,本文主要是对这四款经典的webshell管理工具进行流量分析和检测. 什么是一句话木马? 1.定义 顾名思义就是执行恶意指 ...

  9. Asp.net core 学习笔记之 authentication + authorization + identity + identity server 4 + angular 第六篇 (authorization 之 simple authorization, role based, claim based, policy based)

    authorization 授权是什么 ? 就是某个人必须符合某些条件才能做某些事儿 某个人指的是登入的 user 某些条件指的是 policy requirements 事儿指的是访问 contro ...

  10. GPUStack 0.2:开箱即用的分布式推理、CPU推理和调度策略

    GPUStack 是一个专为运行大语言模型(LLM)设计的开源 GPU 集群管理器,旨在支持基于任何品牌的异构 GPU 构建统一管理的算力集群,无论这些 GPU 运行在 Apple Mac.Windo ...