java标准规范,使程序大众化

2024-03-03 21:08

本文主要是介绍java标准规范,使程序大众化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Java code standard
1.   介绍/说明
1.1  声明
本文档内容描述寰信通JAVA编码规范,凡是在寰信通开发的JAVA程序必须按照此文档规定.

1.2  为什么要有编码规范
编码规范对于开发人员来说是非常重要的,有以下几个原因:

一个软件的生命周期中,80%的花费在于维护

几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护

编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码

如果你将源码作为产品发布,就需要确任它是否被很好的打包并且清晰无误,一如你已构建的其它任何产品

2. 目标
为来自不同的项目组或个人提供标准的代码格式。
增加易读性。
 
3. 命名规定
命名规范使程序更易读,从而更易于理解。它们也可以提供一些有关标识符意图的信息,有助于开发人员理解代码。
3.1  包的命名
包的命名应该都是小写字母,单词之间用“.”分开。所有的JAVA文件必须建立在com.global包下。例如:
package com.global.water.system;
package com.global.cctv.system;
3.2  类的命名
 类的命名应该都是名词,第一个字母都要大写,其他每个单词的第一个字母都要大写。要用完整的单词,除非是被公认的单词缩写。例如:
class Container
class ShippingLine
3.3  接口的命名
 接口的命名应该都是名词或形容词,第一个字母都要大写,其他每个单词第一个字母都要大写。要用完整的单词,除非是被公认的单词缩写。例如:
interface ContainerOwner
interface Runnable
3.4  方法的命名
 方法的命名应该都用动词或是惯用短语描述,第一个字母都要小写,其他每个单词第一个字母都要大写。例如:
run()
changeLocationTo()
getContainerId()
3.5  变量的命名
 所有非静态变量名的第一个字母都要小写,其他每个单词的第一个字母都要大写。命名应尽量简单并且要有意义。变量名的选用应该易于记忆,能够指出其用途。尽量避免单个字符的变量名,除非是一次性的临时变量。临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c,d,e,它们一般用于字符型。变量名不应以下划线或美元符号开头,尽管这在语法上是允许的。下面是一些正确的变量命名例子:
int numOfContainers
String containerId;
Date today;
3.6常量命名
对于静态的final变量,在命名的时候每一个单词都要大写,单词之间用“_”分开。例如:
final static MIN_WIDTH = 4;
final static DEFAULT_CONTAINER_SIZE = 20;
3.7文件的命名
java源程序文件以.java结尾,编译后的文件以.class结尾。例如:
Container.java
Container.class
3.8  推荐的命名
3.8.1  类名推荐
当要区别接口和实现类的时候,可以在类的后面加上“Impl”。例如:
interface Container
class ContainerImpl
class Container3PImpl
class ContainerYICTImpl
3.8.2  Exception类名推荐
Exception类最好能用“Exception”做为类命名的结尾。例如:
DataNotFoundException
InvalidArgumentException
3.8.3  抽象类名推荐
抽象类最好能用“Abstract”做为类命名的开头。例如:
AbstractBeanDefinition
AbstractBeanFactory
3.8.4  Test类名推荐
Test类最好能用“Test”做为类命名的结尾。例如:
ContainerTest
3.8.5  工厂类方法推荐
工厂方法最好能把该方法做要创建的对象类型描述出来。例如:
public Container createContainer();
public Location newLocation();


4.Java文件组织
一个文件由被空行分割而成的段落以及标识每个段落的可选注释共同组成。超过2000行的程序难以阅读,所以一个java程序文件中的代码行数不能超过2000行,除非有特殊原因。
每个Java源文件都包含一个单一的公共类或接口。若私有类和接口与一个公共类相关联,可以将它们和公共类放入同一个源文件。公共类必须是这个文件中的第一个类或接口。
Java源文件还遵循以下规则,这个规则规定了java程序段落的顺序:
- 开头注释
- 包和引入语句
- 类和接口声明

5.   JAVA文件声明顺序
 类或接口应该按以下顺序声明:
 包的定义
            impot类(输入包的顺序、避免使用*)
·           输入包应该按照java.*.*,javax.*.*,org.*.* ,com.*.*的顺序import
·           在import的时候不应该使用* (例如: java.util.*)
            类或接口的定义
            静态变量定义,按public,protected,private顺序
            实例变量定义,按public,protected,private顺序
            构造方法
            方法定义顺序按照public方法(类自己的方法),实现接口的方法,重载的public方法,受保护方法,包作用域方法和私有方法。
建议:类中每个方法的代码行数不要超过100行。

内部类的定义

6.   JAVA文件格式缩进定义
6.1  缩进尺寸
用4个空格做为缩进尺寸。不建议用TAB代替,因为不同的Text Edit工具对TAB的设置是不同的。
6.2  行的尺寸
每行不要超过80个字符。
6.3  行的格式定义
当一行表达式不能在一行内显示,请按下列顺序要求拆行:
          在“(”或“=”符号后拆行,在“,”拆行,在一个操作符后拆行
 把并发的拆行放到同一级别上的缩进
 如果在拆行中再次拆分的时候遇到“(”,应该新拆出来的行放在更远的一个缩进级别上

例如:methodWithLongName(
          expression1, expression2, expression3,
          expression4, expression5);
var = method1(
        expression1, expression2,
        method2( expression3, expression4));

7.   注释
Java有两种注释方法。“/* This is a comment */”或 “// This is a comment”
第一种应该被用到写JavaDoc上,并且都用“/**”开头。
第二种适合于在做部分代码的注释,但只适合做非常短内容的注释。

8.   声明
8.1  变量声明
推荐每行声明一个变量,并加注释。例如:
int count;             // number of containers
int size;              // size of table
int count, size;        // AVOID THIS!
数组声明应该采用前缀方式。例如:
int[] table;
String[] args;

8.2  类或接口声明
      “{”和声明语句在同一行。
   如果不能在同一行显示,就将“extends”或“implements”进行拆行,并放在两个缩进级别后。
   “}”符号应该独自占一行。
例如:
public class Manager extends Employee {
   ...

 }
public class ChiefExecutiveOfficer
        extends Manager
        implements Person {

 }
8.3  方法声明
“{”和声明语句在同一行。
“}”符号应该独自占一行。

例如:
public int myMethod(int i, int j) {
 ...
}

9.   语句格式
9.1  return语句
return 后面的value在比较明显的时候不要用“()”。例如:
return;
return myDisk.size();
return (size ? size : defaultSize);
9.2  if, if-else, if-else-if-else 语句
例如:
if (condition) {
    statements;
}
if (condition) {
    statements;

}
else {
    statements;
}
if (condition) {
    statements;
}
else if (condition) {
    statements;
}
else if (condition) {
    statements;
}
9.3  for 语句
例如:
for (initialization; condition; update) {
    statements;
}

9.4  while语句
例如:
while (condition) {
    statements;
}
9.5  do-while语句
例如:
do {
    statements;
}
while (condition);
9.6  switch语句
 

例如:
switch (condition) {
case ABC:
    statements;
case DEF:
    statements;
    break;
case XYZ:
    statements;
    break;
default:
    statements;
    break;
}
9.7  try-catch语句
例如:
try {
    statements;
}
catch (ExceptionClass e) {
    statements;
}
finally {
    statements;
}

10. JavaDoc的格式定义
10.1  文件头
应该包括Copyright,文件版本等信息。例如:
/*
 * Copyright (C) 2004 北京寰信通科技有限公司.
 *
 * 本系统是商用软件,未经授权擅自复制或传播本程序的部分或全部将是非法的.
 * 
 * $$Id:$$
 * Date       Author      Description
 */
 10.2  类说明信息
定义文件描述,作者,版本。例如:
/**
 * Class description goes here.
 *
 *
 * @author <a href="weib@global-tec.net">xxx</a>
 * @version CVS $$Revision$$ $$Date$$
 */
10.3  变量定义
 定义变量描述。例如:
/**
 * Comment for <code>${field}</code>
 */
10.4  方法定义
 定义方法的描述,参数,返回值,参照文档,Exception。例如:
/**
  * description
  *
  * @param  方法,变量
  * @return
  * @exception
  * @see   //代表参考....
  * @since  //代表从什么版本起
  */

  

这篇关于java标准规范,使程序大众化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/770918

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定