初级程序员必备的代码基本规范有哪些_编写程序入门代码

初级程序员必备的代码基本规范有哪些_编写程序入门代码所以今天我将我在《阿里巴巴Java开发手册》中看到的一些有用的、适合初级程序员的代码基本规范,分享给大家!如果是大括号内为空,则简洁地写成{}即

初级程序员必备的代码基本规范有哪些_编写程序入门代码

作为一个程序员,写代码乱糟糟的咋行呢?所以今天我将我在《阿里巴巴Java开发手册》中看到的一些有用的、适合初级程序员的代码基本规范,分享给大家!

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

1) 左大括号前不换行。

2) 左大括号后换行。

3) 右大括号前换行。

4) 右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行。和字符之间不出现空格;同样,右小括号和字符之间也不出现空格。详见第 5 条下方正例提示。

2.【强制】 左小括号

反例: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。

正例:(涉及上面五点)

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.【推荐】没有必要增加若干空格来使某一行的字符与上一行对应位置的字符对齐。

正例:

int a = 3;

long b = 4L;

float c = 5F;

StringBuffer sb = new StringBuffer();

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

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

说明:没有必要插入多个空行进行隔开。

12.【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。

13.【强制】不能使用过时的类或方法。

说明:java.net.URLDecoder中的方法 decode(String encodeStr) 这个方法已经过时,应该使用双参数 decode(String source, String encode)。接口提供方既然明确是过时接口,那么有义务同时提供新的接口;作为调用方来说,有义务去考证过时方法的新实现是什么。

14.【强制】Object 的 equals 方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals。

正例:”test”.equals(object);

反例:object.equals(“test”);

说明:推荐使用 java.util.Objects#equals(JDK7 引入的工具类)

15.【强制】所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较。

说明:对于 Integer var = ? 在-128 至 127 范围内的赋值,Integer 对象是在 IntegerCache.cache 产生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行 判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑,推荐使用 equals 方法进行判断。

16.【强制】构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,请放在 init 方法中。

17.【强制】POJO 类必须写 toString 方法。使用 IDE 的中工具:source> generate toString时,如果继承了另一个 POJO 类,注意在前面加一下 super.toString。

说明:在方法执行抛出异常时,可以直接调用 POJO 的 toString()方法打印其属性值,便于排查问题。

18.【推荐】使用索引访问用 String 的 split 方法得到的数组时,需做最后一个分隔符后有无内容的检查,否则会有抛 IndexOutOfBoundsException 的风险。

说明:

String str = “a,b,c,,”;

String[] ary = str.split(“,”);

// 预期大于 3,结果是 3

System.out.println(ary.length);

19.【推荐】当一个类有多个构造方法,或者多个同名方法,这些方法应该按顺序放置在一起,便于阅读,此条规则优先于第 15 条规则。

20.【推荐】 类内方法定义顺序依次是:公有方法或保护方法 > 私有方法 > getter/setter方法。

说明:公有方法是类的调用者和维护者最关心的方法,首屏展示最好;保护方法虽然只是子类关心,也可能是“模板设计模式”下的核心方法;而私有方法外部一般不需要特别关心,是一个黑盒实现;因为承载的信息价值较低,所有 Service 和 DAO 的 getter/setter 方法放在类体最后。

21.【推荐】setter 方法中,参数名称与类成员变量名称一致,this.成员名 = 参数名。在getter/setter 方法中,不要增加业务逻辑,增加排查问题的难度。

反例:

public Integer getData() {

if (true) {

return this.data + 100;

} else {

return this.data – 100;

}

}

22.【推荐】循环体内,字符串的连接方式,使用 StringBuilder 的 append 方法进行扩展。

  

说明:反编译出的字节码文件显示每次循环都会 new 出一个 StringBuilder 对象,然后进行append 操作,最后通过 toString 方法返回 String 对象,造成内存资源浪费。

反例:

String str = “start”;

for (int i = 0; i < 100; i++) {

str = str + “hello”;

}

23.【推荐】final 可以声明类、成员变量、方法、以及本地变量,下列情况使用 final 关键字:

1) 不允许被继承的类,如:String 类。

2) 不允许修改引用的域对象,如:POJO 类的域变量。

3) 不允许被重写的方法,如:POJO 类的 setter 方法。

4) 不允许运行过程中重新赋值的局部变量。

5) 避免上下文重复使用一个变量,使用 final 描述可以强制重新定义一个变量,方便更好地进行重构。

24.【强制】中括号是数组类型的一部分,数组定义如下:String[] args;

25.【强制】POJO类中布尔类型的变量,都不要加is,否则部分框架解析会引起序列化错误;

26.【推荐】除常用方法(如 getXxx/isXxx)等外,不要在条件判断中执行其它复杂的语句,将复杂逻辑判断的结果赋值给一个有意义的布尔变量名,以提高可读性。

说明:很多 if 语句内的逻辑相当复杂,阅读者需要分析条件表达式的最终结果,才能明确什么样的条件执行什么样的语句,那么,如果阅读者分析逻辑表达式错误呢?

正例:// 伪代码如下:

final boolean existed = (file.open(fileName, “w”) != null) && (…) || (…);

if (existed) {

}

27.【强制】在 if/else/for/while/do 语句中必须使用大括号。即使只有一行代码,避免采用单行的编码方式:if (condition) statements;

28.【推荐】类内方法定义顺序依次是:公有方法或保护方法>私有方法>getter/setter方法;

说明:公有方法是类的调用者和维护者最关心的方法,首屏展示最好;保护方法虽然只是子类关心,也可能是“模板设计模式”下的核心方法;而私有方法外部一般不需要特别关心,是一个黑盒实现;因为承载的信息价值较低,所有 Service 和 DAO 的 getter/setter 方法放在类体最后。

来源:blog.csdn.net/MobiusStrip/article/details/84647342

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/4084.html

(0)
上一篇 2022-12-19 08:00
下一篇 2022-12-15 10:00

相关推荐

  • 用Python轻松实现数据可视化和分析

    用Python轻松实现数据可视化和分析Python是一种高级编程语言,通过其强大的数据分析和可视化库,使数据的可视化和分析变得非常容易。在本文中,我们将介绍如何使用Python进行数据的可视化和分析以及Python中一些常用的数据处理库和可视化工具。

    2023-12-20
    101
  • 华为云dws数据库_华为自研数据库

    华为云dws数据库_华为自研数据库摘要:高斯Redis,计数的最佳选择! 本文分享自华为云社区《华为云PB级数据库GaussDB(for Redis)揭秘第八期:用高斯 Redis 进行计数》,原文作者:心机胖。 一、背景 当我们打…

    2023-04-14
    153
  • SQL分库分表_分库分表 分页查询

    SQL分库分表_分库分表 分页查询历史背景 MySql性能瓶颈 1. 表数据量过大 2. Sql查询过于复杂 3. Sql没走索引 4. 数据库服务器性能低 解决方案 阿里开发手册:单表行数超过500W或者单表容量超过2G 数据库分库

    2023-05-03
    160
  • MySQL InnoDB 锁的二三事 – Reginald「建议收藏」

    MySQL InnoDB 锁的二三事 – Reginald「建议收藏」近日, 在一个小型项目中, 遇到了一个触及我知识盲区的bug. 项目用的是MySQL 5.7.25, 其中有一张表 config_data, 包含四个字段, i

    2023-06-07
    144
  • 解决Python编码错误的方法

    解决Python编码错误的方法当我们在Python中使用中文字符时,经常会碰到gbk编码错误的问题。gbk编码是一种中文编码,如果我们的Python代码中包含了非gbk编码的中文字符,则会发生编码错误。这时需要进行以下处理:

    2023-12-04
    108
  • 安装Jupyter的步骤

    安装Jupyter的步骤 Jupyter是一个开源的计算笔记本,可支持多种编程语言,如Python,R,Julia等。它可以让用户在Web浏览器中创建和共享代码、方程式、可视化和文本,适合教学、分析和演示等应用场景。Jupyter基于IPython项目而来,IPython原本只支持Python语言,但后来也开始支持其他语言。

    2024-06-29
    50
  • Python字典:高效存储和快速查找数据的最佳解决方案

    Python字典:高效存储和快速查找数据的最佳解决方案在Python中,字典是一个用于存储键值对(key-value)数据的数据类型。其特点是具有迅速查找数据的能力,因为字典内部采用了哈希表来实现快速查找数据,因此其查找数据的速度是非常快的。

    2024-01-12
    113
  • Python工程师漫谈PostgreSQL数据库创建

    Python工程师漫谈PostgreSQL数据库创建在今天的技术领域中,无论是开发还是数据处理,数据库都是一个不可或缺的组成部分。其中,PostgreSQL作为一种功能强大的开源关系型数据库,越来越被广泛使用,因为它不仅支持SQL标准,而且还具有数百种扩展功能。 本文将介绍如何使用Python来创建PostgreSQL数据库,从而帮助那些可能希望在开发过程中使用这种数据库的Python工程师们。

    2024-06-01
    71

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注