前言

在帮助各位同学远程解决代码问题的时候,发现很多同学的代码都有一个共同问题:代码书写格式不规范。虽然代码书写规范对程序性能及运行并不影响,但影响着别人对你编程习惯或能力的第一印象,同时也会给阅读者带来不一样的的观感。

我刚接触编程的时候,代码开发的格式也是随心所欲,这里加一个空格,那里加一个空格。后来在朋友的提醒下,就开始按照<阿里巴巴Java开发手册>来严格要求自己的。工作中也逐渐发现,你更乐意去阅读按照别人规范格式编写的代码。这里先写一个demo进行对比。

入门时写的代码:

  int[] a={1,2,3,4,5};
int sum=0;
for(int i=0;i<a.length;i++){
sum+=a[i];
}

现在写的代码:

  int[] a = {1, 2, 3, 4, 5};
int sum = 0;
for (int i = 0; i < a.length; i++) {
sum += a[i];
}

可能根据上面寥寥几行的代码,你可能觉得两种代码格式并无不同。但是在项目中,往往一个Java源文件里面的代码就有成百上千行。如果用第一种写法,代码看起来就会很紧凑,读起来特别累,所以在实际工作中,基本上都是使用第二种写法。

接下来就盘点一下最基本的代码书写格式规范。

代码格式

空格

1.if/for/while/switch/do等保留字与括号之间都必须加空格

2.任何赋值运算符=、逻辑运算符&&、加减乘除符号、三目运算符的左右两边都要加空格

3.else和前后的大括号都加空格

4.括号(和右边相邻字符之间没有空格; )和左边相邻字符之间也不出现空格;而左大括号{前需要加空格

5.注释的双斜线与注释内容之间有且仅有一个空格

6.方法参数在定义和传入时,多个参数逗号后边必须加空格

以上综合样例:

// abc三个参数逗号后面加空格,方法)和{之间有空格
public static void test(int a, int b, int c) {
c = 0;
if (true) {
a = b + c;
} else {
a = a == 1 ? a : 1;
}
}

7.采用4个空格缩进,禁止使用tab字符

如果使用 tab 缩进,必须设置 1 个 tab 为 4 个空格。IDEA 设置 tab 为 4 个空格时,请勿勾选 Use tab character

8.在进行类型强制转换时,右括号与强制转换值之间不需要任何空格隔开

 long first = 1000000000000L;
int second = (int)first + 2;

换行

1.单行字符数限制不超过 120 个,超出需要换行

2.如果是大括号内为空,则简洁地写成{}即可,大括号中间无需换行和空格

口诀:左大括号前不换行,左大括号后换行;右大括号前换行,右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行

3.不同逻辑、不同语义、不同业务的代码之间插入一个空行分隔开来以提升可读性

命名规范

1.代码中的命名均不能以下划线或美元符号开始和结束

2.方法名、参数名、成员变量、局部变量都统一使用lowerCamelCase风格。

3.任何命名禁止使用中英文混合或者中文拼音

4.在long或者Long赋值时,数值后使用大写的L,不能是小写的

错误示范:

// 1 应该是name,中间可以用_和$
int _name = 1;
int name$ = 2;
// 2 正确的应该是countSumAll
int countsumall = 0;
// 3 不应该用拼音,应该用price来表示价格
int jiage = 10;

建议

上面就是最常见的一些代码书写规范。包括Java其他方面例如集合操作等规范,这些皆在<阿里Java开发手册>中有迹可循。所以建议刚入门的小伙伴们,在刚开始学习Java编程的时候,就依照手册里的规范来要求自己,养成良好的编码习惯。

最后,希望你我共勉。


写的都是日常工作中的亲身实践,处于自己的角度从0写到1,保证能够真正让大家看懂。

文章会在公众号 [入门到放弃之路] 首发,期待你的关注。

Java入门者:如何写出美观的Java代码?的更多相关文章

  1. JAVA语言之怎样写出高性能的Java代码?

    本文主要向大家介绍了JAVA语言之怎样写出高性能的 Java 代码?通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 在这篇文章中,我们将讨论几个有助于提升Java应用程序性能的方法.我 ...

  2. 【原创】怎样才能写出优雅的 Java 代码?这篇文章告诉你答案!

    本文已经收录自 JavaGuide (59k+ Star):[Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识. 本文比较简短,基本就是推荐一些对于写好代码非常有用的文章或者 ...

  3. 如何用java写出无副作用的代码

    搞java的同学们可能对无副作用这个概念比较陌生,这是函数式编程中的一个概念,无副作用的意思就是: 一个函数(java里是方法)的多次调用中,只要输入参数的值相同,输出结果的值也必然相同,并且在这个函 ...

  4. 请阐述调用Activity有哪几种方法,并写出相关的Java代码

    请阐述调用Activity有哪几种方法,并写出相关的Java代码. 答案:可以采用两种方式调用Activity:显示调用和隐式调用.显示调用直接指定了Activity,代码如下: Intent int ...

  5. 如何写出健壮的Java代码

    近来在公司写代码,写出的代码发现BUG很多,为了实现一个功能,代码改了又改,影响了工单的效率,也影响个人绩效,因此从网上找了些关于写健壮代码的文章看了看,再加上自己的一些经验总结. 所谓健壮的代码是指 ...

  6. 面试刷题28:如何写出安全的java代码?

    对jdk,jvm,java应用程序的攻击多种多样?那么从java程序员的角度,如何写出安全的代码呢? 我是李福春,我在准备面试,今天的题目是:如何写出安全的java代码? 答:这个需要从功能设计到实现 ...

  7. 如何写出没有BUG的代码

    1947年9月9日,美国海军准将 Grace Hopper 在哈佛学院计算机实验室里使用 Mark II 和 Mark III 计算机进行研究工作.她的团队跟踪到 Mark II 上的一个错误,操作人 ...

  8. 如何写出没有 bug 的代码?

    来源:www.cnblogs.com/sherrywasp/p/9262877.html 1947年9月9日,美国海军准将 Grace Hopper 在哈佛学院计算机实验室里使用 Mark II 和 ...

  9. 《数据结构与算法之美》 <05>链表(下):如何轻松写出正确的链表代码?

    想要写好链表代码并不是容易的事儿,尤其是那些复杂的链表操作,比如链表反转.有序链表合并等,写的时候非常容易出错.从我上百场面试的经验来看,能把“链表反转”这几行代码写对的人不足 10%. 为什么链表代 ...

随机推荐

  1. 多任务-python实现-进程,协程,线程总结(2.1.16)

    @ 目录 1.类比 2.总结 关于作者 1.类比 一个生产玩具的工厂: 一个生产线成为一个进程,一个生产线有多个工人,所以工人为线程 单进程-多线程:一条生产线,多个工人 多进程-多线程:多条生产线, ...

  2. [译] ConstraintLayout 可视化[Design]编辑器(这到底是什么)[第四部分]

    原文地址:Testing Views in Isolation with Espresso 原文作者:Ataul Munim 译文出自:掘金翻译计划 译者:yazhi1992 校对者:lovexiao ...

  3. React Native Android 环境搭建

    因为工作需要,最近正在学习React Native Android.温故而知新,把学习的内容记录下来巩固一下知识,也给有需要的人一些帮助. 需要说明的是,我刚接触React Native也不久,对它的 ...

  4. java IO 模型--快速分清 同步|阻塞

    IO 介绍 IO 模型 IO请求 分为两个阶段:等待资源 和 使用资源: IO请求:一般需要请求特殊资源(如 磁盘.RAM 或文件),当资源被上一个使用者使用没有释放的时候, IO请求会被阻塞,直到资 ...

  5. navicat12.0.26如何激活

    首先准备好所需工具链接:https://pan.baidu.com/s/1EHATRC0M34n-aNteIyBXbw 密码:r7tf 下载后如图分别为64位和32位. 操作时需要断掉网络   Nav ...

  6. Linux内核源码分析之setup_arch (三)

    1. 前言 在 Linux内核源码分析之setup_arch (二) 中介绍了当前启动阶段的内存分配函数memblock_alloc,该内存分配函数在本篇将要介绍paging_init中用于页表和内存 ...

  7. JSP 的 4 种作用域?

    page:代表与一个页面相关的对象和属性. request:代表与客户端发出的一个请求相关的对象和属性.一个请求可能跨越多个页面,涉及多个 Web 组件:需要在页面显示的临时数据可以置于此作用域. s ...

  8. 单细胞分析实录(4): doublet检测

    最近Cell Systems杂志发表了一篇针对现有几种检测单细胞测序doublet的工具的评估文章,系统比较了常见的例如Scrublet.DoubletFinder等工具在检测准确性.计算效率等方面的 ...

  9. 各开源协议BSD、Apache Licence 2.0、GPL

    以下是上述协议的简单介绍:BSD开源协议BSD开源协议是一个给于使用者很大自由的协议.基本上使用者可以"为所欲为",可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有 ...

  10. Spring—SSJ集成&声明式事务管理

    1.   课程介绍 1.  SSJ集成;(掌握) 2.  声明式事务管理;(掌握) 什么是三大框架 2.1.  ssh Struts/Struts2 Spring Hibernate 2.2.  ss ...