Java开发规范(公司规范) 下载本文

Java开发规范

第1章 序言

本规范的目的在于:建立一个可行可操作的编程标准、约定和指南,以规范公司java代码研发工作。

2013年为公司的质量年,为了提高公司研发能力,该规范的制定是为了规范java代码开发,提高java开发质量,从代码的层面规范并提高java项目的研发水平。该规范由运营中心技术小组制定,运营中心技术小组将结合PMD检查工具以及相应的检查工具,组织技术监控人员对重点项目以及新的java项目定期检查,对代码质量进行评估,对代码质量较差限期整改,并报运营中心备案作为项目考核依据。

本规范适用于2013年公司java代码研发规范。本规范的内容包括两个方面:java开发一般规范,以及java代码开发安全性规范。Java代码开发一般规范主要从java基本语法,代码格式,耦合性以及设计方面,以及代码质量因子等进行描述;java代码开发安全性规范主要从sql注入,资源注入,跨站脚步,安全边界违例,系统信息泄露进行描述。

为了方便并配合PMD检查工具等相应检查工具,方便开发者针对违规代码进行调整,本规范中java一般开发规范描述形式将结合PMD,并提供示例代码,其形式如下:

? 规范描述: ? PMD规则名称: ? PMD级别(注1): ? 违规示例代码:

? 合法示例代码:

本规范中java安全开发规范部分将结合具体项目,对出现安全隐患的代码进行分析,以及相应的解决办法和思路上进行分析,其具体格式如下:

? 风险及危害: ? 应对措施: ? 非安全代码示例 ? 安全代码示例

本规范解释权归运营中心技术小组,属于运营中心为了提供公司研发水平以及质量的一系列措施中的一部分,在后续的版本中将根据具体需要进行修改以及调整。

注1:PMD级别分为5级 Error high 必须修改 Error 不修改的项需要进行说明 Warning high 代码中该项每千行代码不能多于2%; Warning 参考 Information 参考 注2:对于Error级别需要项目组通过以下文字说明: 文件名 代码行数 触发PMD规则 不修改原因 技术小组审核意见 技术小组审核后给出相应的整改意见,对于有争议的问题,可直接与运营中心技术小组领导成员沟通。

第2章 要求

气象局项目组的所有java开发人员,编写的代码必须满足第三章的所有规范(每个标题为一个规范)。项目组成员之间每周或每月互相检查对方编写的代码,若发现问题,要求对方及时更正。项目经理应该随时抽查、并最终审查代码,保证代码的规范性。

第3章 java一般性研发规范

3.1 代码格式

3.1.1

包、类、方法的命名规范:

? 规范描述:

包,类,方法命名只能为27个英文字符以及数字,不能包括特殊字符例如-,_,$等;

包命名,首字符必须小写; 类命名,首字符必须大写; 方法命名,首字符必须小写; 常量命名,必须全部大写;

变量,以及属性命名,首字符必须小写; 在类中非创建方法其命名应避免与类名一致; 在类中属性的命名应避免与类名一致; 在同一类中属性命令应避免与方法命名一致;

在方法中命名临时变量时应避免与方法的参数名一致; ? PMD规则名称: AvoidDollarSigns PackageCase

ClassNamingConventions MethodNamingConventions

SuspiciousConstantFieldName

VariableNamingConventions

MethodWithSameNameAsEnclosingClass AvoidFieldNameMatchingTypeName MisleadingVariableName ? 规则级别:

Error High warn High warn High warn High warn High Error High Error High

Error High ? 违规示例代码:

1、常量、变量命名

public static final int my_num = 0; //常量应大写 public String MyTest = \变量命名,首字符小写

DataModule DMTest = new DataModule();//变量命名,首字符小写 2、方法命名

public class Foo {

public void FooStuff() { } }

3、类命名:首字符应大写 public class foo {}

4、非法使用特殊字符命名

public class Fo$o { // yikes! }

5、非创建方法命名应避免与类名一致 public class MyClass {

// this is bad because it is a method public void MyClass() {}

// this is OK because it is a constructor public MyClass() {} }

6、方法中临时变量的命名应避免与其参数一致: public void bar(String m_baz) { // Bad int m_boz = 42; // Bad }

7、在类中属性的命名应避免与类名一致: public class Foo extends Bar {

// There's probably a better name for foo int foo; }

8、在同一类中属性命名应避免与方法命名一致: public class Foo { Object bar; // bar is data or an action or both? void bar() { } }

? 合法代码示例:

1、常量、变量命名:

public static final int MY_NUM = 0; // public String myTest = \