南和县住房和建设局网站,做网站备案需要什么特殊材料,asp网站系统,网站要怎么做关键词摘要#xff1a; 本文带大家简单理解阿里巴巴Java开发手册中的规约内容以及P3C项目#xff0c;可以帮助开发者扫描出所有潜在的代码隐患。在中间也聊了一些对于不同语言设计的理解#xff0c;如何去看待语言的设计#xff0c;其实是我们去学习一个语言的核心。演讲嘉宾简介…摘要 本文带大家简单理解阿里巴巴Java开发手册中的规约内容以及P3C项目可以帮助开发者扫描出所有潜在的代码隐患。在中间也聊了一些对于不同语言设计的理解如何去看待语言的设计其实是我们去学习一个语言的核心。
演讲嘉宾简介澳明阿里巴巴高级开发工程师。本次直播视频精彩回顾戳这里以下内容根据演讲嘉宾视频分享以及PPT整理而成。本次的分享主要围绕以下三个方面一、手册简介二、聊聊语言三、P3C项目一、手册简介下面主要从三个方面介绍阿里巴巴为什么需要这个Java开发手册。第一个方面其实是协作效率的问题。众所周知秦朝统一时期推出了“车同轨书同文”的法令事实上这个法令背后的目的是让整个国家人民做事的方式进行统一。那么在现在比如对于一个公司而言一些规范的不一致可能会导致很多问题不仅仅是个人与个人之间甚至让部门与部门之间会出现不必要的沟通损耗和沟通壁垒。第二个方面其实是在系统质量方面。在阿里巴巴这种不规范编码导致的线上故障非常非常多在整个线上故障的比率也非常高。所以阿里巴巴希望能够统一整个集团的编码规范进而能够提升整体的系统质量。第三个方面工匠精神。阿里巴巴希望工程师们具备一个工匠精神。即希望工程师非常非常认真的对待编码过程及编码产物。因为无论怎么样设计Java开发手册它所包含的条目始终是有限的是一个死的东西更多的希望大家能够体会的是Java开发手册背后的思想因为背后的思想其实是可以举一反三灵活运用的。阿里巴巴希望工程师们可以具备这样一种工匠精神能够不断的认真打磨好自己的代码。目前Java开发手册分为七大部分下图中的七大部分在日常的开发中是非常通用的。大家可以依据这七条规约逐步逐步的从第一条规约低阶往高阶去进展。与大家平时开发项目一样比如说在最开始编码时可以参考编程规约然后我们在编程过程中考虑异常场景时那么可以考虑异常日志规约在写单元测试时可以参考单元测试规约比如说在整体的架构设计完毕并且代码开发完毕之后对于其非功能性需求比如安全方面的问题可以参考安全规约那么在与数据库进行交互时可以参考MySQL数据库规约有的时候在整个一个大的公司内部希望大家的工程结果能够统一这样的话大家在阅读别人的代码或者说复用别人的代码的时候会非常的直观和方便这时候可以参考工程规约最后一个设计规约指在设计软件设计程序和设计架构时可以参照一些规约。尽管我们的Java开发手册页数不是很多之所以称之为手册是希望大家方便阅读可以当做枕边书业余时间翻一翻。手册中除了一些制定的规约内容还提到了很多工程师会遇到的问题场景。这些问题场景中有一部分也结合了阿里巴巴近年来的真实案例目的是让大家能够更好的理解规约更重要的是理解规约背后的所体现的思想。这本Java开发手册虽然不厚但是相信对于刚入门学习Java的同学可以尝试阅读并体会肯定会对大家有所帮助并在编程规范的形成上有很大提高。二、聊聊语言1.面向对象语言与面向过程语言的区别大家应该知道Java是面向对象的语言也叫做OOP。那么面向对象语言和面向过程的语言有什么区别呢在实现某个动作时无论是使用面向对象语言或者面向过程的语言都可以实现那么为什么说面向过程比较直观比较方便呢?下面来简单举例说明。首先确定需求比如说想开一个门在面向过程的程序设计里很有可能是一个Open行为或者叫Open函数的一个动作的实现然后Open依赖的数据结构是Door对象那么这个开门的动作就非常简单直接Open the door。在面向对象的程序中直接将对象Door设计出来然后在赋予对象一些行为如Open。Open the door这是面向过程的代码可以认为Door其实是一个数据结构我们可以很方便的再添加面向过程的代码如添加新函数比如Close the door。那么在面向对象的代码中更多的是在不同的数据结构中实现Open这一功能。简而言之面向对象的语言更希望把操作的行为附加在不同的抽象类之上。下图中摘抄了我们的一本书《代码整洁之道》中的一段话“面向过程的代码便于在不改动既有数据结构的前提下添加函数面向对象代码便于不改动既有函数的前提下添加类。反之过程式代码难以添加新数据结构面向对象代码难以添加新函数因为必须修改所有类。对于面向对象比较南的事情对于面向过程的代码比较容易反之亦然。”2.异常行为我们相信大多数开发者都可以写出能够正常运行的代码这是大家非常非常擅长做的事情。但是并不是所有的开发者都能够把异常处理的非常非常好。因为大家喜欢写按既定的流程能够正确执行的程序但往往忽略了很多异常的情况。下面带大家从Java语言方面尝试理解一下它是如何对于异常行为进行抽象和设计的。举个简单例子从旅游坐飞机说起正常的流程应该是坐飞机起飞那么想象一下中途有哪些异常场景出现。第一种情况机场被恐怖份子袭击发生爆炸虽然机率非常低但也有可能发生。这种情况相当于发生非常严重的错误对应在平时开发过程中其实是系统级别的异常比如磁盘坏掉机器宕掉网络断掉。第二种假设机场是OK的但是在去机场的路上突然之间道路出现拥堵的情况本来30分钟的路程额外增加了1个小时的时间所以必须换成其他交通工具赶到机场。这种相当于编程时异常这类异常是可以有一些补救的措施的如刚刚的场景中换成其他交通工具从而继续让程序表现出我们理想的行为。系统异常与之不同的是系统异常场景中开发者是没有补救方法的几乎是无能为力的。第三种情况假设顺利到达机场但是护照被拒签无法登机与上面几种异常不同的是这种护照被拒签是可以被预测到的大家都知道是有这种可能的这种异常场景叫做预检时场景。最后一种在登机口准备登机时扫描器发生故障虽然这种异常也算作突发异常但是是可以登机的。因为这种异常最终会以一种信息方式让机场的维修师会来解决或者换另一个登机口登机这类异常叫做可透出异常。在Java中出现的异常其实可以对上上面的四种异常。首先第一层级会被抽象为错误和异常然后异常分为检查异常和未检查异常。大家如果把Java中的异常跟图中的异常进行结合相信大家会有一些新的输入和理解。三、P3C项目大家可能会困惑P3C到底是什么实际上P-3C是世界知名反潜机它有美国克洛希德公司在民用客机的基础上改进而来绰号“猎户”。“猎户”诞生至今已经40多年了尽管是一员老将但在海湾战争中它还是披挂上阵为多国部队提供了大量情报。因为它是非常经典的反潜机所以阿里巴巴也以它作为项目的代号其中的寓意是以Java开发手册为前提扫描出所有潜在的代码隐患。那么阿里巴巴为何要成立这个项目主要原因是因为如果单纯地制定了Java开发手册里面的一些规范它其实是类似于意识形态上的东西飘在空中通过口头传达这些规范很难落地仍然无法保证在开发过程中不会再犯此类错误。所以在阿里巴巴内部当时成立了P3C项目组希望依托于Java开发手册能够把内容以及平时的扫描还有IDE进行一些集成的工作从而让我们的开发人员能够保证遵循我们的Java开发手册进行工作。下图中给出了P3C项目地址放在了Github上。其中主要包含三个部分第一部分是就是开发手册的扫描问题的实现是基于PMD实现的。第二部分是IntelliJ IDEA plugin是一个Java IDE的插件。第三部分是Eclipse的插件。插件的部分会实时的在开发过程中扫描出的代码中不满足Java开发手册内容的一些代码。P3C项目目前非常火爆在刚刚宣布了开源之后整个社区活跃度是非常之高的。推荐大家也访问一下P3C项目首先大家可以下载都自己的IDE中集成起来这样会对大家平时编码的规范性有个很好的督促作用另外这里也给出了Java开发手册的在线免费下载版本和淘宝购买地址。作者mongolguier原文链接
本文为云栖社区原创内容未经允许不得转载。