java温习笔记02:编码规范

来源:互联网 发布:海外淘宝代购好做吗 编辑:程序博客网 时间:2024/05/07 10:32

作用

提高代码可读性、健壮性,为后续维护和开发人员快速理解代码。

命名规范

匈牙利表示法:
- Package:一个小写单词组成。eg: package com.abc.util;
- class类:大写字母开头,其他字母小写的单词组成(对于标识符而言,所有单词紧靠一起,大写中间单词的首字母)。eg:public class ThisAClassName{}
- 变量:小写字母开头,其他单词大写首字母。eg:userName
- 参数:同变量一致。
- 数组:byte[] buffer;int[] abc;禁止int abc[]
- 方法的参数:使用有意义的参数命名(尽量使用与要复制的字段一样的名字)。eg:SetCounter(int size){ this.size=size}
- Static Final变量:应该都大写,并指出完整含义。
eg:/**
*DBConfig PATH
**/
public static final String DB_CONFIG_FILE_PATH=”com.abc.db.dbconfig”;

默认代码编写格式

  • 缩进:2个空格,禁用tab字符。因为不同源代码管理公里的tab可能是不同宽度。
  • 页宽:80字符。
  • {}:大括号单独一行。
  • ():小括号内,不得出现空格。禁止使用毫无意义的括号。

变量定义规范

  1. 注意数据类型的强制转换
  2. 声明变量同时对变量进行初始化
  3. 局部变量和公共变量不可同名
  4. 向公共变量传递数据时,禁止越界或赋不合理值
  5. 定义并明确公共变量含义、作用、取值范围及公共变量间的关系
  6. 构造只能有一个模块或函数可以修改创建,其他函数只能访问的公共变量。防止多个不同模块共同修改创建同一公共变量的现象。
  7. 去掉没有必要的公共变量。

注释

  1. 单行注释://
  2. 多行注释:/……./
  3. 文档注释:/* …/
    使用javadoc为类生成文档,被java编译器认可的方法,使其文档化。
    • @version:对类的说明,模块版本。
    • @auther:对类的说明,作者。不建议使用,代码不应该被个人拥有。
    • @see:相关主题,对类、属性、方法的说明参考。
      对方法的说明
    • @param:对方法中某参数的说明。
    • @return:方法返回值。
    • @exception:方法可能抛出的异常。

实际操作技巧

  • byte数组转换到characters:“abc”.getBytes();
  • 初始化数组:objectArguments = new Object[] { arguments};
  • Utility类:指仅提供方法的类,应被申明为抽象的的来防止被继承或被初始化。
  • 枚举:JAVA 对枚举的支持不好。eg:
    class Colour {
    public static final Colour BLACK = new Colour(0, 0, 0);
    public static final Colour RED = new Colour(0xFF, 0, 0);
    public static final Colour GREEN = new Colour(0, 0xFF, 0);
    public static final Colour BLUE = new Colour(0, 0, 0xFF);
    public static final Colour WHITE = new Colour(0xFF, 0xFF, 0xFF);
    }
    这种技术实现了RED, GREEN, BLUE 等可以象其他语言的枚举类型一样他们使用的常量。 可以用 ‘==’ 操作符来比较。但是这样使用有一个缺陷:如果一个用户用这样的方法来创建颜色BLACK
    new Colour(0,0,0)
    那么这就是另外一个对象,’==’操作她的符就会产生错误。 equal() 方法仍然有效。由于这个原因,这个技术的缺陷最好在在中,或者只在自己的包中使用。
  • exit():除了在 main 中可以被调用外,其他的地方不应该调用。因为这样做不给任何代码代码机会来截获退出。一个类似后台服务地程序不应该因为某一个库模块决定了要退出就退出。
  • 异常:申明的错误应该抛出一个RuntimeException或者派生的异常。 顶层的main()函数应该截获所有的异常,并且打印(或者记录在日志中)在屏幕上。
  • 垃圾收集:JAVA使用成熟的后台垃圾收集技术来代替引用计数。但是这样会导致一个问题:你必须在使用完对象的实例以后进行清场工作。java是不能自动完成变量的清场工作的。必须象下面一样写:
    FileOutputStream fos = new FileOutputStream(projectFile);
    project.save(fos, “IDE Project File”);
    fos.close();
  • Clone:(暂时没搞懂作用)
    下面是一种有用的方法: implements Cloneable
    public
    Object clone()
    {
    try {
    ThisClass obj = (ThisClass)super.clone();
    obj.field1 = (int[])field1.clone();
    obj.field2 = field2;
    return obj;
    } catch(CloneNotSupportedException e) {
    throw new InternalError(“Unexpected CloneNotSUpportedException: ” + e.getMessage());
    }
    }
  • final 类:绝对不要因为性能的原因将类定义为 final 的(除非程序的框架要求)。如果一个类还没有准备好被继承,最好在类文档中注明,而不要将她定义为 final 的。这是因为没有人可以保证会不会由于什么原因需要继承她。
  • 访问类的成员变量:大部分的类成员变量应该定义为 protected 的来防止继承类使用他们。

java文件格式

  • 每行只允许写一条语句。
  • 版权信息:java文件开头处,/*Copyright © xxx All right reserved. /
  • Package/Imports:先写package,再写import,标准包在本地包之前,按字母排序。若import行中包含了同一个包中的不同子目录,用*表示。

有关性能

写代码的时候,从头至尾都应该考虑性能问题。时刻应该提醒自己要注意代码的效率。比如:如果没有时间来实现一个高效的算法,那么应该在文档中记录下来,以便在以后有空的时候再来实现。

-不要在循环中构造和释放对象
- 使用 StringBuffer 对象:在处理 String 的时候要尽量使用 StringBuffer 类,StringBuffer 类是构成 String 类的基础。String 类将 StringBuffer 类封装了起来,(以花费更多时间为代价)为开发人员提供了一个安全的接口。当构造字符串时,应用StringBuffer来实现大部分的工作,当工作完成后将 StringBuffer 对象再转换为需要的 String 对象。
eg:若一个字符串必须不断地在其后添加许多字符来完成构造,那么应该使用 StringBuffer 对象和append() 方因为用 String 对象代替 StringBuffer 对象的话,会花费许多不必要的创建和释放对象的 CPU 时间。
- 避免太多的使用 synchronized 关键字:避免不必要的使用关键字 synchronized,应在必要的时候再使用,这是一个避免死锁的好方法。

JSP编码规范

  • 整个jsp/jsp bean表示层应当尽可能的瘦和简单化。

  • 记大多数的JSP都应当是只读的视图,而由页面bean来提供模型。

  • 应当一起设计JSP和JSP bean

  • 在尽可能合理的情况下,把业务逻辑从JSP中移走。具体于HTTP的逻辑(如,对Cookie的处理)属于bean或支持类中,而不是JSP中。

  • 尽量把条件逻辑放在控制器中而不是放在视图中。

  • 为JSP、包含的文件、JSP Bean和实现扩展标记的类使用遵循标准的命名惯例。如:
    jsp控制器 xxxxController.jsp
    被包含的: jsp _descriptiveNameOfFragment.jsp
    jsp页面模型bean: Bean 如loginBena.java
    jsp会话bena: xxxxSessionBean
    标记类 : xxxxTag,xxxxTagExtraInfo

  • 应当在JSP中避免使用页面引入指令。import指令会促使类的实列化而不是jsp bean的实例化:
    不用:<%@ page import = “com.java.util.*” %>
    而用:<% java.util.List l = new java.util.LinkedList(); %>

  • jsp不应该直接去访问请求参数。bean应当执行这样的处理过程并且输出所处理的模型数据。

  • jsp不应当访问属性文件,或者使用JNDI。bean可以访问属性。

  • 如果jsp bean具有的所有的属性不能够从页面请求中被映射到,就要尽力在标记中设置属性。

  • 应当避免设计既显示表单又处理结果的页面。

  • 在jsp中避免代码重复。把要重复的功能放在一个包含的jsp、bean或标记扩展中,使得它能够被重用。

  • jsp bean应当永远不要去产生HTML

  • 在jsp中应该避免使用out.pringln()发放来产生页面内容。

  • jsp层不应该直接访问数据,这包括JDBC数据库访问和EJB访问。

  • 在长度上,scriptlests的代码最好不要超过5行。

  • 除了jsp bean之外,jsp不应当去实例化复杂的可读写的对象。如果这样的话,就有可能在jsp中去执行不适当的业务逻辑。

  • jsp bean中不应当包含大量的数据。

  • 如果使用了和

0 0
原创粉丝点击