阿里巴巴Java开发手册——速读记录

  本随笔基于阿里巴巴Java开发手册V1.2,陆陆续续记录一些现阶段能理解的,有启发的内容,并将持续更新

  最佳实践——插件使用已经发布为随笔!http://www.cnblogs.com/jiangbei/p/7668654.html

一、编程规范

  1.命名规范

    (1)代码命名严禁下划线(_)或美元符号($)开头或结束

    (2)命名严禁拼音与英文混用的方式

    (3)类名采用 UpperCamelCase 命名方式,其他(变量,方法,参数等)采用 lowerCamelCase 方式

    (4)常量全部使用大写,使用下划线(_)连接

    (5)数组命名方式严禁使用 String args[] 的形式,请务必使用String[] args 的形式([]是数组的一部分)

    (6)POJO中的boolean类型变量都不要加 is(反例:isRich)以免引起解析异常。

    (7)包名统一小写,使用小数点(.)进行分隔

    (8)类名使用合适的后缀可以大大提高可读性,例如测试类 Test 结尾,异常类 Exception 结尾

   2.常量定义

    (1)严禁出现任何魔法值

    (2)long类型的变量,请使用大写L作为标识(long time = 2L)

    (3)变量尽量分类维护,尽量不要全定义在一个类中进行维护

  3.代码格式

     (1)大括号换行(竟然还有左大括号换行的?/笑哭),不再文字赘述,千言万语不如一张图

        方法参数后的括号与大括号之间建议添加一个空格

      

        (2)缩进采用4个空格,严禁使用Tab缩进

          缩进采用 4 个空格,禁止使用 tab 字符。 说明:如果使用 tab 缩进,必须设置 1 个 tab 为 4 个空格。IDEA 设置 tab 为 4 个空格时, 请勿勾选 Use tab character;而在 eclipse 中,必须勾选 insert spaces for tabs。

         (3)任何二目、三目运算符的左右两边都需要加一个空格。

      (4)if/for/while/switch/do 等保留字与括号之间都必须加空格。

      (5)换行规范:

        1) 第二行相对第一行缩进 4 个空格,从第三行开始,不再继续缩进,参考示例。

        2) 运算符与下文一起换行。

        3) 方法调用的点符号与下文一起换行。

        4) 在多个参数超长,在逗号后换行。

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

    4.OOP规范

      (1)静态方法与静态常量请使用 类名. 进行调用!

      (2)所有的覆写方法,必须加@Override 注解。

      (3)严禁使用过时的类或方法

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

      (5)所有的 POJO 类属性必须使用包装数据类型;所有的局部变量使用基本数据类型。

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

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

      (8)类内方法定义顺序依次是:公有方法或保护方法 > 私有方法 > getter/setter 方法。

      (9)循环体内,字符串的连接方式,使用 StringBuilder 的 append 方法进行扩展。

    5.集合处理

      (1)只要重写 equals,就必须重写 hashCode。(参见java基础随笔)

      (2)HashMap是允许null key和 null value的,并且它是线程不安全的

    6.并发处理

      待更新

    7.控制语句

      (1)每个switch都必须包含一个 default 语句并且 放在最后,即使它什么代码也没有。

      (2)if/else/for/while/do 语句中必须使用大括号。即使只有一行代码

      (3)不要在条件判断中执行其它复杂的语句,将复 杂逻辑判断的结果赋值给一个有意义的布尔变量名,以提高可读性。

    8.注释规约

      (1)类、类属性、类方法的注释必须使用 Javadoc 规范,使用/**内容*/格式(可以自定义注释模板,参见IDE配置随笔)

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

      (3)方法内部单行注释,在被注释语句上方另起一行(并且//后空一格),使用//注释。方法内部多行注释 使用/* */注释,注意与代码对齐。

      (4)好的命名、代码结构是自解释的,注释力求精简准确、表达到位。避免出现注释的 一个极端:过多过滥的注释,代码的逻辑一旦修改,修改注释是相当大的负担。

转载于:https://www.cnblogs.com/jiangbei/p/7364723.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572114.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go_指针的使用、数组指针和指针数组、指针与切片、指针与结构体、多级指针

指针: 指针是一个特殊的变量,因为它存储的数据是另一个变量的内存地址,指针本身也是有内存地址的指针的数据类型有int、float、bool、string、数组、结构体指针的作用就是可以通过变量/对象的内存地址去操作变量/对象 注意: 取址运…

Go_面向对象(抽象、封装、继承)

抽象 抽象是一种编程思维方式,是从多个事物中提取共性 例:产品经理和程序员都有工作的方法,但是工作内容不同,可以把工作抽象出来定义为一个方法,具体细节由调用者补充 银行存取款案例: 账号结构体取款方法…

Discrete Logging POJ - 2417(BSGS)

Discrete Logging POJ - 2417 题意&#xff1a;给P&#xff0c;B&#xff0c;N&#xff0c;求最小的L使得 BL≡N (mod P)&#xff0c;其中P是素数。 Baby Step Giant Step 1 #include <cstdio>2 #include <cstring>3 #include <iostream>4 #include <cma…

js 根据固定位置获取经纬度--腾讯地图

1.首先引入jq 和 腾讯地图js <script src"../js/jQuery.js"></script> <script charset"utf-8" src"http://map.qq.com/api/js?v2.exp"></script> 2.html代码部分 <body onload"init()"><button ty…

Golang——string字符串常用函数(Contains、join、Index、Repeat、Replace、Split、Trim、Fields)

更多的还是去官方文档里去看&#xff1a;https://studygolang.com/pkgdoc Contains&#xff1a; 判断字符串中是否包含指定字符串 演示&#xff1a; func main() {str1 : "itzhuzhu"result : strings.Contains(str1, "zhu")fmt.Println(result) }join&a…

[flask 优化] 由flask-bootstrap,flask-moment引起的访问速度慢的原因及解决办法

一周时间快速阅读了400页的《javascript基础教程》&#xff0c;理解了主要概念。解决了一个很久之前的疑问。 我的网站是使用flask框架搭建的&#xff0c;介绍flask web的一本著名的书&#xff08;之前提到过&#xff09;作者搭建个人博客时&#xff0c;向读者推荐了flask-boot…

Go_关键字、编译、转义字符

关键字&#xff1a; 关键字是指被go语言赋予了特殊含义的单词&#xff0c;共25个&#xff0c;关键字不能用于自定义名字&#xff0c;只能在特定语法结构中使用。 breakdefaultfuncinterfaceselectcasedefergomapstructchanelsegotopackageswitchconstfallthroughifrangetypec…

并发编程概念、程序线程进程、线程同步、互斥量、读写锁、协程并发

多线程&#xff1a; 多线程就是同时执行多个应用程序&#xff0c;需要硬件的支持同时执行&#xff1a;不是某个时间段同时&#xff0c;cpu切换的比较快&#xff0c;所有用户会感觉是在同时运行 并发与并行&#xff1a; 并行(parallel)&#xff1a;指在同一时刻&#xff0c;有多…

第4阶段——制作根文件系统之分析init_post()如何启动第1个程序(1)

本章学习如何启动第一个应用程序 1.在前面的分析中我们了解到&#xff0c;在init进程中内核挂接到根文件系统之后&#xff0c;会开始启动第一个应用程序: kernel_init函数代码如下: static int __init kernel_init(void * unused) //进入init进程 …

Golang并发——并发技术Goroutine和channel的使用、定时器、生产者消费者、条件变量、select

Goroutine: goroutine是Go并行设计的核心。goroutine说到底其实就是协程&#xff0c;它比线程更小&#xff0c;十几个goroutine可能体现在底层就是五六个线程&#xff0c;Go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存(大概是4~5KB)&#x…

Oozie协作框架

Oozie协作框架 一&#xff1a;概述 1.大数据协作框架 2.Hadoop的任务调度 3.Oozie的三大功能 Oozie Workflow jobs Oozie Coordinator jobs Oozie Bundle 4.Oozie的架构 控制流节点 起始&#xff0c;分支&#xff0c;并发&#xff0c;汇合&#xff0c;结束 动作节点action 5.O…

11.4 专利法与反不正当竞争法解读

第六条是对于职务作品的一个定性.它这个职务作品、职务发明创造和我们前面著作法所讲到的职务作品的处理方式基本一致.就是如果认定某一个作品它是属于职务作品、职务发明创造,那么这一个作品它的专利权应该是属于单位而不是个人.只有认定这个创造为非职务发明创造的时候,申请的…

一文入门网络编程:常见协议、通信过程、Socket、CS/BS、TCP/UDP

网络编程三要素&#xff1a;ip地址、端口、协议&#xff0c;在网络通信协议下&#xff0c;不同计算机上运行的程序&#xff0c;可以进行数据传输 常见协议&#xff1a; 传输层 常见协议有TCP/UDP协议。应用层 常见的协议有HTTP协议&#xff0c;FTP协议。网络层 常见协议有IP协议…

【Linux笔记(000) 】-- 系统启动过程

索引&#xff1a; 目录索引 一. 启动流程 BIOS --> MBR(Boot Code) --> 引导程序(GRUB) --> 加载内核 --> 执行Init --> runlevel 二. 内容详解 BIOS: Basic Input Output System , 基本输入输出系统 ,负责检查硬件,查找启动设备, 可启动设备在BIOS中定义。…

Golang——TCP、UDP实现并发(服务端与客户端)

Server端常用函数、接口&#xff1a; Listen函数&#xff1a;func Listen(network, address string) (Listener, error)network&#xff1a;选用的协议&#xff1a;TCP、UDP&#xff0c; 如&#xff1a;“tcp”或 “udp”address&#xff1a;IP地址端口号, 如&#xff1a;…

java中 将字符串时间 '2015-9-8 17:05:06' 转化为格式 '2015-09-08 17:05:06'

/** * 将字符串时间2015-9-8 17:05:06转化为格式2015-09-08 17:05:06 */import java.text.SimpleDateFormat; public class TestDate{ public static void main(String[] args) throws Exception{ String time "2015-9-8 17:05:06";//注意&#xff1a;时分秒必须都…

详解TCP协议三次握手四次挥手

三次握手&#xff1a; 三次握手表示建立通信阶段&#xff0c;在TCP协议中&#xff0c;在发送数据的准备阶段&#xff0c;客户端与服务器之间的三次交互&#xff0c;以保证连接的可靠&#xff0c;由于这种面向连接的特性&#xff0c; TCP协议可以保证传输数据的安全&#xff0c;…

Golang——实现文件传输

借助TCP完成文件的传输&#xff0c;基本思路如下&#xff1a; 发送方&#xff08;客户端&#xff09;向服务端发送文件名&#xff0c;服务端保存该文件名。接收方&#xff08;服务端&#xff09;向客户端返回一个消息ok&#xff0c;确认文件名保存成功。发送方&#xff08;客户…

Golang——HTTP编程请求和响应实现

请求&#xff1a; HTTP 请求报文由请求行、请求头部、空行、请求包体4个部分组成&#xff0c;如下图所示&#xff1a; 请求行&#xff1a; 请求行由方法字段、URL 字段 和HTTP 协议版本字段 3个部分组成&#xff0c;他们之间使用空格隔开。常用的 HTTP 请求方法有 GET、POST。…

zabbix v3.0安装部署【转】

关于zabbix及相关服务软件版本&#xff1a; Linux&#xff1a;oracle linux 6.5 nginx&#xff1a;1.9.15 MySQL&#xff1a;5.5.49 PHP&#xff1a;5.5.35 一、安装nginx&#xff1a; 安装依赖包&#xff1a; yum -y install gcc gcc-c autoconf automake zlib zlib-devel ope…