Java编程规约(源于阿里,精简版)

java代码规范(适合写程序之前先了解有助于开发协同) 类名应该使用大写字母开头的驼峰命名法。例如,PublicClass。类定义应该包含在一个与类名同名的文件中。例如,PublicClass类的定义应该保存在名为PublicClass.java的文件中。类定义应该包括访问修饰符,通常是public,表示该类可以被其他类访问。如果没有指定访问修饰符,则默认为package-private(即只有在同一包中的类可以访问)。类定义可以包含类级别的变量(称为字段)和方法。字段和方法也应该使用驼峰命名法,并且方法名应该以动词开头。 阅读详情

一、命名风格

(1)代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束

        反例:_name / name$

(2)代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式

        正例:alibaba / taobao / youku / hangzhou 等国际通用的名称,可视同英文

        反例:getPingfenByName() [评分] / int 价格 = 3

(3)类名使用大驼峰命名法

        正例:MarcoPolo / UserDO

(4)方法名、参数名、成员变量、局部变量使用小驼峰命名法

        正例: localValue / getHttpMessage()

(5)包名统一用小写

        正例: com.alibaba.open.util

(6)常量命名全部大写,单词间用下划线隔开

        正例:MAX_STOCK_COUNT

(7)抽象类命名使用 Abstract 或 Base 开头;

         异常类命名使用Exception结尾;

         测试类的命名要以它要测试的类的名称开始,以Test结尾

(8)定义数组的时候,应该 String[ ] args  ,而不 String args[ ]

(9)POJO 类中布尔类型的变量,都不要加 is,否则部分框架解析会引起序列化错误

        反例:定义为基本数据类型 Boolean isDeleted;的属性,它的方法也是 isDeleted(),RPC框架在反向解析的时候,“以为”对应的属性名称是 deleted,导致属性获取不到,进而抛出异常

 命名风格总结:

        命名的目标就是让人见名知义,因此要先统一格式,比如,看到大驼峰命名就知道是个类名,并且还需要让人知道是个什么类,所以在命名的时候应该避开不适当的缩写、拼音与英文混用 等问题

        

二、代码书写规范

        如果使用IDEA进行开发,可以直接使用快捷键 Ctrl+Alt+L 进行代码格式化,格式化遵循以下的准则

(1)大括号的使用约定。如果大括号内为空,直接写为{}即可;如果大括号内不空则:

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

(2)一句格式化的代码:if[空格](a[空格]==[空格]b)

     该实例可映射出如下规范:

  •  if / for / while / switch / do 等保留字与括号之间都必须加空格
  •  任何二目、三目运算符的左右两边都需要加一个空格 ( == 为二目运算符 )
  •  左小括号和字符之间不出现空格;同样,右小括号和字符之间也不出现空格

(3)注释的双斜线与注释内容之间有且仅有一个空格

        正例://[空格]注释内容

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

        正例:method("a",[空格]"b",[空格]"c")

以上是代码格式化能帮我们完成的,此外,我们还要遵循如下准则

(1)采用 4 个空格缩进,禁止使用 tab 字符

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

(2)单行字符数限制不超过 120 个,超出需要换行,换行时遵循如下原则:

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

(3)IDE 的 text file encoding 设置为 UTF-8;IDE 中文件的换行符使用 Unix 格式,不要使用Windiws 格式

三、OOP(面向对象编程)规约

(1)避免通过一个类的对象引用访问此类的静态变量或静态方法,直接用类名来访问即可

(2)相同参数类型,相同业务含义,才可以使用 Java 的可变参数,并且可变参数必须放置在参数列表的最后(提倡尽量不用可变参数编程)

(3)Object 的 equals 方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals 方法

        正例:"test".equals(object)

        反例:object.equals("test")

(4)所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较,为的是避免128陷阱

(5)构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,请放在 init 方法中

(6)对于POJO类(可以简单的理解为实体类)的规范

  • 所有的 POJO 类属性必须使用包装数据类型
  • 定义 DO/DTO/VO 等 POJO 类时,不要设定任何属性默认值 
  • POJO 类必须写 toString 方法。使用 IDE 的中工具:source> generate toString时,如果继承了另一个 POJO 类,注意在前面加一下 super.toString

四、集合使用

(1)只要重写 equals,就必须重写 hashCode

        原因:因为 Set 存储的是不重复的对象,依据 hashCode 和 equals 进行判断,所以 Set 存储的对象必须重写这两个方法

        如果自定义对象做为 Map 的键,那么必须重写 hashCode 和 equals

        String 重写了hashCode 和 equals 方法,所以我们可以非常愉快地使用 String 对象作为 key 来使用

(2)ArrayList的subList结果不可强转成ArrayList,否则会抛出ClassCastException异常

        说明:subList 返回的是 ArrayList 的内部类 SubList,并不是 ArrayList ,而是ArrayList 的一个视图,对于 SubList 子列表的所有操作最终会反映到原列表上

(3)使用集合转数组的方法,必须使用集合的 toArray(T[] array),传入的是类型完全一样的数组,大小就是 list.size()

例子:

List<String> list = new ArrayList<String>(2); 
list.add("guan"); 
list.add("bao"); 
String[] array = new String[list.size()]; 
array = list.toArray(array)

(4)使用工具类 Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的add / remove / clear 方法会抛出 UnsupportedOperationException 异常

        原因:asList 的返回对象是一个 Arrays 内部类,并没有实现集合的修改方法      

(5)泛型通配符<? extends T>来接收返回的数据,此写法的泛型集合不能使用 add 方法,而<? super T>不能使用 get 方法,做为接口调用赋值时易出错

(6)不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator方式,如果并发操作,需要对 Iterator 对象加锁

正例:
Iterator<String> iterator = list.iterator(); 
while (iterator.hasNext()) { 
    String item = iterator.next(); 
    if (删除元素的条件) { 
        iterator.remove(); 
    } 
}

反例:
List<String> list = new ArrayList<String>(); 
list.add("1"); 
list.add("2"); 
for (String item : list) { 
    if ("1".equals(item)) { 
        list.remove(item); 
    } 
}

(7)在 JDK7 版本及以上,Comparator 要满足如下三个条件,不然 Arrays.sort,Collections.sort 会报 IllegalArgumentException 异常

三个条件如下:

  • x,y 的比较结果和 y,x 的比较结果相反
  • x>y,y>z,则 x>z
  • x=y,则 x,z 比较结果和 y,z 比较结果相同
        反例:下例中没有处理相等的情况,实际使用中可能会出现异常
new Comparator<Student>() { 
    @Override 
    public int compare(Student o1, Student o2) { 
        return o1.getId() > o2.getId() ? 1 : -1; 
    } 
};

五、注释规范

(1)类、类属性、类方法的注释必须使用/**内容*/格式,不得使用// xxx 方式

(2)所有的抽象方法(包括接口中的方法)必须要用 Javadoc 注释、除了返回值、参数、异常说明外,还必须指出该方法做什么事情,实现什么功能

(3)所有的类都必须添加创建者和创建日期

(4)方法内部单行注释,在被注释语句上方另起一行,使用//注释。方法内部多行注释使用/* */注释,注意与代码对齐所有的枚举类型字段必须要有注释,说明每个数据项的用途

(5)所有的枚举类型字段必须要有注释,说明没个数据项的用途

六、并发处理

(1)线程资源必须通过线程池提供,不允许在应用中自行显式创建线程

        原因:使用线程池的好处是减少在创建和销毁线程上所花的时间以及系统资源的开销,解决资 源不足的问题。如果不使用线程池,有可能造成系统创建大量同类线程而导致消耗完内存或者 “过度切换”的问题

(2)高并发时,同步调用应该去考量锁的性能损耗。能用无锁数据结构,就不要用锁;能 锁区块,就不要锁整个方法体;能用对象锁,就不要用类锁

(3)对多个资源、数据库表、对象同时加锁时,需要保持一致的加锁顺序,否则可能会造成死锁

(4)并发修改同一记录时,避免更新丢失,需要加锁。要么在应用层加锁,要么在缓存加锁,要么在数据库层使用乐观锁,使用 version 作为更新依据

(5)线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险

        说明:Executors 返回的线程池对象的弊端如下

  • FixedThreadPool 和 SingleThreadPool:允许的请求队列长度为 Integer.MAX_VALUE,可能会堆积大量的请求,从而导致 OOM。
  • CachedThreadPool 和 ScheduledThreadPool:允许的创建线程数量为 Integer.MAX_VALUE,可能会创建大量的线程,从而导致 OOM。

七、其他规范

(1)在一个 switch 块内,每个 case 要么通过 break/return 等来终止,要么注释说明程序将继续执行到哪一个 case 为止;在一个 switch 块内,都必须包含一个 default 语句并且放在最后,即使它什么代码也没有

(2)任何数据结构的构造或初始化,都应指定大小,避免数据结构无限增长吃光内存

(3)注意 Math.random() 这个方法返回是 double 类型,注意取值的范围 0≤x<1(能够取到零值,注意除零异常),如果想获取整数类型的随机数,不要将 x 放大 10 的若干倍然后取整,直接使用 Random 对象的 nextInt 或者 nextLong 方法

        正例:随机生成[0,8]区间的整数

        Random random = new Random();

        int num = random.nextInt(9);

(4)获取当前毫秒数 System.currentTimeMillis(); 而不是 new Date().getTime(),如果想获取更加精确的纳秒级时间值,使用 System.nanoTime()的方式

阿里巴巴Java开发编程规约(整理详细版) 对软件来说,适当的 规范和标准绝不是消灭代码内容的创造性、优雅性,而是限制过度个性化,以一种普遍认可的统一 方式一起做事,提升协作效率,降低沟通成本。代码的字里行间流淌的是软件系统的血液,代码质 量的提升是尽可能少踩坑,杜绝踩重复的坑,切实提升系统稳定性,码出质量。 阅读详情

相关推荐

阿里巴巴Java开发规范学习——编程规约(1)

抽象类命名使用Abstract或Base开头这个规则建议在命名抽象类时,以Abstract或Base作为前缀,以明确表示此类是一个抽象类,即不能被实例化,主要用于定义通用行为和接口,供子类继承实现。这样命名有助于开发者一眼识别出这是一个抽象类,了解其设计意图和用途。或。异常类命名使用Exception结尾异常类通常用于表示程序运行过程中遇到的错误情况。遵循这一规则,将Exception作为后缀添加到异常类名中,可以清晰地标识出此类是一个异常类,便于理解和管理程序中的错误处理逻辑。或。抽象类中,可以以。

wangshiwen011的博客 3637

阿里开发手册规范(JAVA)

阿里开发手册规范(JAVA)

weixin_51360584的博客 2万+

阿里巴巴 java 开发规约

《阿里巴巴 java开发手册》–随手记 这本开发手册是阿里巴巴开发人员的java开发规范,读了这本书后,感受到代码规范的重要性,培养自己的代码风格,养成与此手册代码风格一致的习惯。 一、编程规约 1 命名风格 1) 代码中的变量命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。 2) 代码中不允许使用中文拼音。 3) 类名尽量使用Upper...

tjy_521的博客 2061

Java代码编写规范总结

java 代码编写风格规范参考

hiscoming的博客 1万+

阿里巴巴代码规约检测&Java 代码规约扫描 | 云效

阿里巴巴代码规约检测&云效Java 代码规约扫描《阿里巴巴 Java 开发手册》是阿里巴巴集团技术团队的集体智慧结晶和经验总结。

BYvonne的博客 3423

阿里巴巴编程规范实战(一):编程规约之命名风格

码出高效,码出质量

zqy_zq_zxl的博客 2195

阿里巴巴Java开发手册(一)——编程规约

阿里巴巴Java开发手册(一)——编程规约编程规约命名规约常量定义格式规约OOP规约集合处理并发处理控制语句注释规约其他 编程规约 命名规约 1、【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。 反例: _name / __name / $Object / name_ / name$ / Object$ 2、【强制】代码中的命名严禁使用拼音与英文混...

分享技术,传播知识! 1万+

从逻辑门到RISC-V指令:ALU设计实战与Verilog实现

本文详细介绍了从逻辑门到RISC-V指令集的ALU设计实战与Verilog实现方法。通过构建1位ALU并扩展至64位,深入解析了RISC-V指令集的算术逻辑单元实现技巧,包括加法器设计、零标志检测和溢出检测等关键功能。文章还分享了Verilog代码优化、流水线设计和常见问题调试的实用经验,为开发者提供了一套完整的ALU设计解决方案。

weixin_29214335的博客 185

瑞_Java开发手册_(一)编程规约

本文章为瑞_系列专栏之《Java开发手册》的编程规约篇,本篇章主要介绍命名风格、常量定义、代码格式、OOP规约、日期时间、集合处理、并发处理、控制语句、注释规约以及其它常见的编程规约,主要参考阿里巴巴的《Java开发手册》,分享博主的经验和见解

阿瑞——从事Java后端,喜欢研读源码、自研框架、分享经验 4227

endnote让参考文献整整齐齐

这篇文章主要是针对利用 endnote 插入参考文献时,参考文献第一行和后面的行对不齐的问题 下面是示意图 可以看到我们的参考文献对的整整齐齐的,比较好看。 下面介绍具体步骤 1、打开endnote。编辑我们使用的参考文献样式。我这儿是叫 ZZ_MODIFIED_GEEBINF 复制 2、找到布局,每个参考开头,将光标放在在参考开头后面,点插入字段,制表符 3、右下角悬挂式输出哪儿选择全部段...

雾隐雾现的至渝博客 5万+

自考计算机系统原理(第六章计算机系统概论)-13015

名词解释 I/O 硬件 I/O软件 用户空间I/O软件 内核空间I/O 软件 系统调用处理程序 系统调用服务例程 设备驱动程序 中断服务程序 系统级1/O函数 虚拟文件系统 文件描述符 文件元数据 流缓冲区 索引节点 目录文件 目录项 系统打开文件表 磁盘高速缓存 高速缓存 RAM I / O 控制方式 程序直接控制I/O 就绪状态 中断控制I/O 中断屏蔽字 多重中断 中断嵌套 DMA 方式 DMA 控制器 设备控制器 I/O端口 控制端口 数据端口 状态端口 I/O 地址空间 独立编址方式 统一编址方

qq_23872947的博客 1150

阿里开发手册 嵩山版-编程规约 (十一) 其它

《Java 开发手册》是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,公开到业界后,众多社区开发者踊跃参与,共同打磨完善,系统化地整理成册,当前的版本是嵩山版。现代软件行业的高速发展对开发者的综合素质要求越来越高,因为不仅是编程知识点,其它维度的知识点也会影响到软件的最终交付质量。比如:五花八门的错误码人为地增加排查问题的难度;数据库的表结构和索引设计缺陷带来的系统架构缺陷或性能风险;工程结构混乱导致后续项目维护艰难;没有鉴权的漏洞代码易被黑客攻击等等。所以本手册以

我亦无他,唯手熟尔 1786

DataWorks PyODPS第三方包全攻略:从打包到加载的完整流程

本文详细介绍了在DataWorks的PyODPS节点中使用第三方Python包的完整流程,包括环境限制、打包工具pyodps-pack的使用、资源上传与加载实战,以及特殊场景处理技巧。通过本文,开发者可以掌握在MaxCompute受限环境中灵活使用自定义依赖的方法,提升数据处理效率。

dd012的博客 990

阿里开发手册 嵩山版-编程规约 (九) 注释规约

《Java 开发手册》是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,公开到业界后,众多社区开发者踊跃参与,共同打磨完善,系统化地整理成册,当前的版本是嵩山版。现代软件行业的高速发展对开发者的综合素质要求越来越高,因为不仅是编程知识点,其它维度的知识点也会影响到软件的最终交付质量。比如:五花八门的错误码人为地增加排查问题的难度;数据库的表结构和索引设计缺陷带来的系统架构缺陷或性能风险;工程结构混乱导致后续项目维护艰难;没有鉴权的漏洞代码易被黑客攻击等等。所以本手册以

我亦无他,唯手熟尔 1197

从安装到出图:一份给振动测试新手的LMS Test.Lab 2021完整避坑手册(含许可证更新和常见弹窗解决)

本文为振动测试新手提供LMS Test.Lab 2021的完整使用指南,涵盖安装配置、许可证更新、数据采集到频域后处理的全流程。特别针对常见弹窗错误提供解决方案,并详细讲解Colormap时频图分析技巧,帮助用户快速掌握振动数据分析核心技能。

weixin_29268331的博客 983

【深度学习驱动流体力学】Python流体力学Ansys Fluent

PyFluent 是一个将 Python 编程语言与 Ansys Fluent 流体动力学 (CFD) 仿真软件集成的工具。它允许用户通过 Python 脚本来控制和自动化 Fluent 中的仿真任务,实现从预处理、求解到后处理的全流程控制。PyFluent 结合了 Python 的灵活性和 Fluent 的强大功能,提供了一种高效且灵活的 CFD 仿真方法。PyFluent 是一个强大而灵活的工具,使用户能够通过 Python 脚本全面利用 Ansys Fluent 的功能。

源代码杀手的博客 3123

阿里开发手册 嵩山版-编程规约 (六)集合处理

《Java 开发手册》是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,公开到业界后,众多社区开发者踊跃参与,共同打磨完善,系统化地整理成册,当前的版本是嵩山版。现代软件行业的高速发展对开发者的综合素质要求越来越高,因为不仅是编程知识点,其它维度的知识点也会影响到软件的最终交付质量。比如:五花八门的错误码人为地增加排查问题的难度;数据库的表结构和索引设计缺陷带来的系统架构缺陷或性能风险;工程结构混乱导致后续项目维护艰难;没有鉴权的漏洞代码易被黑客攻击等等。所以本手册以

我亦无他,唯手熟尔 1501

【史上最全面esp32教程】网络篇和tcp/ip的使用

ESP32史上最全面wifi和tcp/ip连接及示例程序

m0_62599305的博客 9521

阿里开发手册 嵩山版-编程规约 (四)OOP规约-Java程序员必看知识点!!!

《Java 开发手册》是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,公开到业界后,众多社区开发者踊跃参与,共同打磨完善,系统化地整理成册,当前的版本是嵩山版。现代软件行业的高速发展对开发者的综合素质要求越来越高,因为不仅是编程知识点,其它维度的知识点也会影响到软件的最终交付质量。比如:五花八门的错误码人为地增加排查问题的难度;数据库的表结构和索引设计缺陷带来的系统架构缺陷或性能风险;工程结构混乱导致后续项目维护艰难;没有鉴权的漏洞代码易被黑客攻击等等。所以

我亦无他,唯手熟尔 1340

Java接入DeepSeek大模型:从零实现流式对话+多轮会话管理(完整项目实战)

emitter.completeWithError(new RuntimeException("连接DeepSeek服务超时"));private static final Set<String> BLACK_WORDS = Set.of("暴力", "色情", "政治敏感");emitter.onCompletion(() -> log.info("SSE连接完成"));emitter.onTimeout(() -> log.warn("SSE连接超时"));// 每个路由基础连接数。

wjianwei666的专栏 928

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

阿里开发手册 嵩山版-编程规约 (十) 前后端规约

《Java 开发手册》是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,公开到业界后,众多社区开发者踊跃参与,共同打磨完善,系统化地整理成册,当前的版本是嵩山版。现代软件行业的高速发展对开发者的综合素质要求越来越高,因为不仅是编程知识点,其它维度的知识点也会影响到软件的最终交付质量。比如:五花八门的错误码人为地增加排查问题的难度;数据库的表结构和索引设计缺陷带来的系统架构缺陷或性能风险;工程结构混乱导致后续项目维护艰难;没有鉴权的漏洞代码易被黑客攻击等等。所以本手册以

我亦无他,唯手熟尔 1298

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

阿里开发手册 嵩山版-编程规约 (一)命名规范

《Java 开发手册》是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,公开到业界后,众多社区开发者踊跃参与,共同打磨完善,系统化地整理成册,当前的版本是嵩山版。现代软件行业的高速发展对开发者的综合素质要求越来越高,因为不仅是编程知识点,其它维度的知识点也会影响到软件的最终交付质量。比如:五花八门的错误码人为地增加排查问题的难度;数据库的表结构和索引设计缺陷带来的系统架构缺陷或性能风险;工程结构混乱导致后续项目维护艰难;没有鉴权的漏洞代码易被黑客攻击等等。所以本手册以

我亦无他,唯手熟尔 1512

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

规范规约是最左规约吗_阿里巴巴Java开发手册(编程规约)

李艳鹏 研发流程管理最近,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里人多年一线实战中积累的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过限制开发人员的编程风格、实现方式来避免研发人员在实践中容易犯的错误,同样的问题大家使用同样的模式解决,便于后期维护和扩展,确保最终在大规模协作的项目中达成既定目标。无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计...

weixin_30496999的博客 397

阿里开发手册 嵩山版-编程规约 (八)控制语句

《Java 开发手册》是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,公开到业界后,众多社区开发者踊跃参与,共同打磨完善,系统化地整理成册,当前的版本是嵩山版。现代软件行业的高速发展对开发者的综合素质要求越来越高,因为不仅是编程知识点,其它维度的知识点也会影响到软件的最终交付质量。比如:五花八门的错误码人为地增加排查问题的难度;数据库的表结构和索引设计缺陷带来的系统架构缺陷或性能风险;工程结构混乱导致后续项目维护艰难;没有鉴权的漏洞代码易被黑客攻击等等。所以本手册以

我亦无他,唯手熟尔 966

阿里巴巴Java代码规约

阿里巴巴Java代码规约插件安装 https://www.jianshu.com/p/d1dda276c91c 阿里Java代码规约插件有Eclipse插件和IDEA插件。 Eclipse插件安装 Eclipse版插件支持4.2(Juno,JDK1.8+)及以上版本,通过 Help -- Install New Software 然后输入https://p3c.alibaba.com/pl...

Waiter软件工作室 3421

阿里巴巴Java开发规范——编程规约(5)

取反逻辑不利于快速理解,并且取反逻辑写法必然存在对应的正向逻辑写法。使用if (x < 628) 来表达 x 小于628。使用if (!(x >= 628)) 来表达 x 小于628。

wangshiwen011的博客 931
上一篇: 为什么需要Git分支,以及分支逻辑
下一篇: MyBatisPlus之id生成策略
Fearless____
博客等级 码龄5年 14粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值