以下内容参考自:Java编码规范总结(腾讯+阿里)_pursue_vip的博客-CSDN博客_java编码规范

Java编码规范总结(参考腾讯编码规范)

一、java文件组织

文件组织规则:由于超过2000行的程序难以阅读,应该尽量避免出现超过2000行的程序。一个Java源文件都包含一个单一的公共类或接口。若私有类和接口与一个公共类相关联,可以将它们和公共类放入同一个源文件。公共类必须是这个文件中的第一个类或接口。

文件组织顺序:

1.文件注释:所有的源文件都应该在开头有一个注释,其中列出文件的版权声明、文件名、功能描述以及创建、修改记录:

2.包和引入语句:在多数Java源文件中,第一个非注释行是包语句。在它之后可以跟导包语句

3. 类或接口注释:采用JavaDoc文档注释,在类、接口定义之前应当对其进行注释,包括类、接口的描述、最新修改者、版本号、参考链接等;

注:JavaDoc文档注释:描述Java的类、接口、构造方法、方法、以及字段。每个文档注释都会被置于注释定界符/**...*/之中,一个注释对应一个类、接口或成员。该注释应位于声明之前。文档注释的第一行(/**)不需缩进,随后的文档注释每行都缩进1格(使星号纵向对齐)。

4. 类或接口的声明

5. 类或接口的实现注释:如果有关类或接口的信息不适合作为“类或接口文档注释”,可以在类或接口的实现注释中给出;

6. 类的(静态)变量:首先是类的公共变量,随后是保护变量,再后是包一级别的变量(没有访问修饰符),最后是私有变量;

7. 实例变量:首先是公共级别的,随后是保护级别的,再后是包一级别的(没有访问修饰符),最后是私有级别的;

8. 构造方法;

9. 普通方法:方法应该按功能分组,而不应该按作用域或访问权限进行分组。

二、代码风格

1.缩进:程序块要采用缩进风格编写,缩进只使用TAB键,不能使用空格键(编辑器中请将TAB设置为4格);方法体的开始、类的定义、以及if、for、do、while、switch、case语句中的代码都要采用缩进方式;

2.对齐:程序块的分界符左大括号"{" 和右大括号"}"都另起一行,应各独占一行并且位于同一列,同时与引用它们的语句左对齐;对齐只使用TAB键,不使用空格键;不允许把多个短语句写在一行中,即一行只写一条语句;if、for、do、while、case、switch、default等语句自占一行。

3.换行:一行的长度超过80个字符需要换行,换行规则如下:

在一个逗号后面断开;

在一个操作符前面断开;

长表达式要在低优先级操作符处划分新行;

新行缩进2个TAB。

4.间隔:类、方法及相对独立的程序块之间、变量说明之后必须加空行;关键字之后要留空格, 象if、for、while  等关键字之后应留一个空格再跟左括号"(", 以突出关键字;方法名与其左括号"("之间不要留空格, 以与关键字区别;二元操作符如   " ="、" +="  " >="、" <="、" +"、" *"、" %"、" &&"、" ||"、" <<" ," ^" 等的前后应当加空格;一元操作符如" !"、" ~"、" ++"、" --"等前后不加空格;xiang"[ ]"、" ." 这类操作符前后不加空格;for语句中的表达式应该被空格分开;强制转型后应该跟一个空格。

三、注释

1.原则:对已经不推荐使用的类和方法需要注明@Deprecated,并说明替代的类或者方法;对于针对集合、开关的方法,要在方法注释中表明是否多线程安全。

2.字段注释: 采用JavaDoc文档注释,定义为public的字段必需给出注释,在类的(静态)变量、实例变量定义之前当对其进行注释,给出该字段的描述等:

3.方法注释:采用JavaDoc文档注释,在方法定义之前当对其进行注释,包括方法的描述、输入、输出及返回值说明、抛出异常说明、参考链接等:

4.单行注释格式//

6.多行注释格式/*……*/

三、命名规则

1.基本规则:使用可以准确说明变量、字段、类、接口、包等完整的英文描述符;采用大小写混合,提高名字的可读性;采用该领域的术语;尽量少用缩写,但如果一定要使用,当使用公共缩写和习惯缩写等;避免使用相似或者仅在大小写上有区别的名字。

2.包命名:包名一律小写, 少用缩写和长名;采用以下规则:

[基本包].[项目名].[模块名].[子模块名]...

不得将类直接定义在基本包下,所有项目中的类、接口等都应当定义在各自的项目和模块包中。

3.类或接口命名:类或接口名是个一名词,采用大小写混合的方式,每个单词的首字母大写。尽量使你的类名简洁而富于描述。使用完整单词,避免用缩写词(除非该缩写词被更广泛使用,像URL,HTML)。

4.变量命名: 采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写;变量名不应以下划线或美元符号开头;尽量避免单个字符的变量名,除非是一次性的临时变量。临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c,d,e,它们一般用于字符型;不采用匈牙利命名法则,对不易清楚识别出该变量类型的变量应使用类型名或类型名缩写作其后缀;组件或部件变量使用其类型名或类型名缩写作其后缀;集合类型变量,例如数组和矢量,应采用复数命名或使用表示该集合的名词做后缀。

5.常量命名:全部采用大写,单词间用下划线隔开。

6.方法命名:方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写;取值类可使用get前缀,设值类可使用set前缀,判断类可使用is(has)前缀。

四、声明

1.类或接口的声名:类、接口定义语法规范如下

[可见性][('abstract'|'final')] [Class|Interface] class_name

[('extends'|'implements')][父类或接口名]{

//方法体

}

2.方法声明:良好的程序设计应该尽可能减小类与类之间耦合,所遵循的经验法则是:尽量限制成员函数的可见性。如果成员函数没必要公有 (public),就定义为保护 (protected);没必要保护 (protected),就定义为私有 (private);方法定义语法规范:

[可见性]['abstract'] [‘static’] ['final'] ['synchronized'][返回值类型] method_name(参数列表)[('throws')][异常列表]{

//方法体

}

声明顺序:构造方法、静态公共方法、静态私有方法、公共方法、友元方法、受保护方法、私有方法、main方法;方法参数建议顺序:(被操作者,操作内容,操作标志,其他)。

3.变量声明:一行一个声明;声明局部变量的同时初始化(在变量的初始值依赖于某些先前发生的计算的特殊情况下可以不用同时初始化);只在代码块的开始处声明变量,(一个块是指任何被包含在大括号"{"和"}"中间的代码)不要在首次用到该变量时才声明;避免声明的局部变量覆盖上一级声明的变量,即不要在内部代码块中声明相同的变量名;公共和保护的可见性应当尽量避免,所有的字段都建议置为私有,由获取和设置成员函数(Getter、Setter)访问;定义一个变量或者常量的时候,不要包含包名(类似java.security.MessageDigest digest = null),除非是两个包有相同的类名;数组声明时应当将"[]"跟在类型后,而不是字段名后;声明顺序:常量、类变量、实例变量、公有字段、受保护字段、友元字段、私有字段。

五、异常

1.捕捉异常的目的是为了处理它

2. 多个异常应分别捕捉并处理,避免使用一个单一的catch来处理。

六、习惯

1. if、for、do、while等语句的执行语句部分无论多少都要加括号"{}"

2. 每当一个case顺着往下执行时(因为没有break语句),通常应在break语句的位置添加注释;

3. 尽量避免在循环中构造和释放对象

4. 在使用局部变量的过程,按就近原则处理。不允许定义一个局部变量,然后在很远的地方才使用;

5.相同的功能不允许复制成N份代码;

6. 在处理 String 的时候要尽量使用 StringBuffer 类。

读后感

读《数学之美》第一章  文字和语言vs数字和信息,吴军博士将其分为“信息”,“文字和数字”,“文字和语言背后的数学”这三个部分,吴军博士通过讲述历史的方式,向我们介绍了文字,语言起源,发展的过程,当我第一次接触到这些我先前不知道的历史时,我的注意力完全被书中的内容吸引住了,而在“文字和语言背后的数学”这一部分,吴军博士通过分析语言的形成与传输过程来告诉我们现在的数字和信息有与之相似的构成原理,解开了我对如何将文字和语言转换为自然语言的困惑,其中令我印象最深的一句话就是“他们过去遵循的法则和我们今天探究的研究方法背后有着共同的东西,这就是数学规律”,强调了学好数学,是解决许多问题的关键!

Java编码规范总结(腾讯)的更多相关文章

  1. 资料推荐--Google Java编码规范

    之前已经推荐过Google的Java编码规范英文版了: http://google-styleguide.googlecode.com/svn/trunk/javaguide.html 虽然这篇文章的 ...

  2. Eclipse formater(google Java 编码规范)

    1. 谷歌Java编码规范 http://google-styleguide.googlecode.com/svn/trunk/javaguide.html 2. 下载配置文件: https://co ...

  3. 标准的Java编码规范手册

    编码规范体现出一个开发者的基本素质,良好的编码规范可以提高团队编码的效率,避免很多不必要的问题.今天分享一个标准的Java编码规范给大家,希望对于大家今后的开发工作带来帮助. 编码规范的意义      ...

  4. 阿里Java编码规范

    详细,全面 很不错 阿里 Java编码规范

  5. Java基础学习总结(92)——Java编码规范之排版、注释及命名

    为使开发人员养成良好的开发习惯,编写可读性强.易维护的程序,结合以往资料,现整理Java编码规范,将之作为开发人员的参照依据. 一.排版 1.相对独立的程序块之间必须加空行 下列情况应该使用一个空行: ...

  6. CheckStyle,定制属于自己的Java编码规范

    前言 如今,代码规范几乎是当下稍有追求的团队都要求做到的,但是对于Java编码规范,不同的公司或团队却有着不同的标准.尽管官方提供了一些标准,但是在基本规则的基础上,各大公司又有自己的规范,比如Sun ...

  7. Google 推出的 Java 编码规范(转)

    原文地址:http://www.dahuatu.com/1225/988516.html 原文地址:http://www.dahuatu.com/1225/988516.html 原文地址:http: ...

  8. Google的Java编程风格指南(Java编码规范)

    这份文档是Google Java编程风格规范的完整定义.当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格. 与其它的编程风格指南一样,这里所讨论的不仅仅是 ...

  9. 个人整理--Java编码规范

    编码规范对于开发人员来说是非常重要的,有以下几个原因: 1.一个软件的生命周期中,80%的花费在于维护 2.几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护 3.编码规范可以改善软件 ...

  10. 阿里java编码规范考试总结

    前几天,考了阿里编码规范刚好80险过,总结出以下例题,答案有错,欢迎评论 1.关于方法的返回值是否可以为null,下列说法正确的是(BCD) A.方法的返回值可以为null,如果是集合,必须返回空集合 ...

随机推荐

  1. 12月20日内容总结——ajax补充知识点、多对多外键的三种创建方式、django内置序列化组件、批量操作数据、分页器推导思路与自定义分页器的使用、form组件

    目录 一.ajax补充说明 二.多对多三种创建方式 三.django内置序列化组件(drf前身) 四.批量操作数据 五.分页器思路 六.自定义分页器的使用 七.form组件 forms组件介绍 For ...

  2. @Slf4j -- lombok.extern.slf4j.Slf4j;

    @Log4j:注解在类上:为类提供一个 属性名为log 的 log4j 日志对像 package com.atguigu.springcloud.controller; import com.atgu ...

  3. 分布式机器学习:异步SGD和Hogwild!算法(Pytorch)

    1 导引 我们在博客<分布式机器学习:同步并行SGD算法的实现与复杂度分析(PySpark)>和博客<分布式机器学习:模型平均MA与弹性平均EASGD(PySpark) >中介 ...

  4. .NET NPOI导出时间、公式等格式化

    1.业务背景 做导入某业务模块的Excel表格文件时,利用NPOI组件导入, ① 导入的日期错乱(如XX-X月-2022),关于此种情况之前没做格式化做了单独处理,可以查看文章.net NPOI Ex ...

  5. Visual Studio 集成了.NET 升级助手插件

    .NET团队2023年2月16日在官方博客上发布了名为".NET Upgrade Assistant"的全新 Visual Studio 扩展,帮助开发人员升级.NET 应用程序. ...

  6. FAS2720 配置

    FAS 2720配置操作 第1章 初始化 1.1设备物理安装 1.1.1组件介绍 机头FAS 2720 (2U)   前面板 后面 1.1.2准备工作 (1)工具准备 螺丝刀.网线.Console线. ...

  7. Binary &Op是什么

    前言 在并行开发时我们经常会用到Pstream::gather()函数或是全局函数reduce()或者其他,需要输入参数Binary &Op,本篇主要讨论Binary &Op是什么 t ...

  8. Flutter:StatefulWidget 怎么传参

    定义好一个有状态(或无状态)的组件之后,需要为其传递一些参数,希望组件能够更加灵活使用.那么,在 Flutter 中如何为其传递参数呢? 以下是 StatefulWidget 传递值的步骤,一共三步: ...

  9. java-tocsv

    1.依赖 <dependencies> <dependency> <groupId>org.apache.poi</groupId> <artif ...

  10. 需要登陆,请求数据 session

    requests中的session模块思路:# 1. 登录 --> 等到cookie# 2.带着cookie 请求到书架的url-->书架上的内容#注意:# 两个操作要连续起来操作# 我们 ...