A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© luxinyu 中级黑马   /  2015-5-22 00:16  /  804 人查看  /  14 人回复  /   2 人收藏 转载请遵从CC协议 禁止商业使用本文

1命名规范
1.1 package (*)
包名全部由小写的ASCII字母组成,用“.”分隔。
在此项目中,所有的包均以“com.prosten.ticket”开头。
1.2 class (*)
类名应当是名词,每个内部单词的头一个字母大写。应当使你的类名简单和具有说明性。用完整的英语单词或约定俗成的简写命名类名。
【示例】public class UserManager
1.3 interface(*)
接口名应当是名词,每个内部单词的头一个字母大写。应当使你的接口名简单和具有说明性。用完整的英语单词或约定俗成的简写命名接口名。
【示例】interface TicketManagement
1.4 Class 成员属性及变量的命名 (*)
变量名全部由字母组成,头一个字母小写,以后每个内部单词的头一个字母大写。
变量名应该短而有意义。变量名的选择应该易于记忆。
一个字符的变量名应避免,除非用于临时变量。通常临时变量名的命名规则为:i,j,k,m,n用于整数;c,d,e用于字符。
【示例】private String lastName;
1.5 常量的命名(*)
Java 里的常量,是用static final 修饰的,应该用全大写加下划线命名,并且尽量指出完整含义。
【示例】static final String SMTH_BBS="bbs.tsinghua.edu.cn";
1.6 数组的命名(*)
数组应该总是用下面的形式来命名:
byte[] buffer;
1.7 方法的参数(*)
和变量的命名规范一致,且应使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字。
【示例】setCounter(int size){
this.size = size;
}
1.8 方法命名(*)
方法的命名应当使用动词,头一个字母小写,以后每个内部单词的头一个字母大写。
在方法名的选择上应意义明确便于记忆。
对于属性的存取方法,应使用getXXX()和setXXX()名称,以isXXX(),hasXXX()来命名返回值为boolean 类型的方法。
1.9 一般命名注意事项
用有意义的名字命名变量
首先,用完整的英语单词或约定俗成的简写命名变量。
【示例】firstName
zipCode
用复数命名Collection 类变量。Collection 包括数组,Vector 等。命名时使用复数:
【示例】customers
classmates
2 Java 源文件样式
Java(*.java) 源文件应遵守如下的样式规则:   
2.1 Class 代码布局:
版权声明
Package和Import语句
Javadoc 注释或者其它文件头注释
类或接口声明
Fields 声明
空行
构造函数
空行
克隆方法
空行
其它方法(不包括main)
空行
内部(Inner)类
空行
main()方法
2.2 版权声明
所有的源文件都应该以一个c风格的注释开始,以列出类名,版本信息,修改日期和版权声明。
【示例】/*
     * Class name :
*
* Version information :
*
* Date :
*
* Copyright 2003 Prosten Technology Co.,Ltd.
*
*/
其他不需要出现在 javadoc 的信息也可以包含在这里。
2.3 Package/Imports(*)
package 行要在 import 行之前,中间空一行。
将import 的classes 归类,按顺序罗列:
a. Java 标准类(java.*)
b. Java 扩充类(javax.*)
c. 第三方类
d. 你的应用程序的类
注意在第三方类里进行注释,说明它们的来源。如果 import 行中包含了同一个包中的多个类,则可以用 * 来处理。
【示例】package com.prosten.ticket.ticketmanagement;
import java.io.*;
import java.util.Observable;
import java.util.Date;
import javax.sql.*;
//Apache Xerces
import org.apache.xml.*;
import org.apache.xerces.dom.*;
//Application classes
import com.prosten.util.*;
这里 java.io.* 使用来代替InputStream 和 OutputStream 的引入。
2.4 Javadoc 注释
【示例】/**
* <p>Title: 类名</p>
* <p>Description:(说明用中文)/</p>
* @author:        
* @date:(最后一次修改的提交时间)
*/
2.5 Class Fields
类的成员变量:
【示例】protected int[] packets;
public 的成员变量必须以生成文档(JavaDoc) 的方式进行注释(/** … */)。
proceted、private 和 package 定义的成员变量如果名字含义明确的话,可以没有注释。
Field 定义可遵从以下顺序:
a. public 常量
b. public 变量
c. protected 常量
d. protected 变量
e. package 常量
f. package 变量
g. private 常量
h. private 变量
2.6 存取方法(getter,setter)
接下来是类变量的存取的方法。
2.7 构造方法(*)
重载的构造方法应该用递增的方式写(参数多的写在后面)。
【示例】public CounterSet(){
this(10);
}
public CounterSet(int size){
this.size = size;
}
2.8 克隆方法
如果这个类是可以被克隆的,就应实现 clone 方法:
【示例】public Object clone() {
try {
CounterSet obj = (CounterSet)super.clone();
obj.packets = (int[])packets.clone();
obj.size = size;
return obj;
}catch(CloneNotSupportedException e) {
throw new InternalError("Unexpected CloneNotSUpportedException: "
+ e.getMessage());
}
}
2.9 类方法
下面开始写类方法:
【示例】/**
* Set the packet counters
* (such as when restoring from a database)
*/
protected final void setArray(int[] r1, int[] r2, int[] r3, int[] r4)
throws IllegalArgumentException {
if (r1.length != r2.length || r1.length != r3.length
|| r1.length != r4.length) {
throw new IllegalArgumentException("Arrays must be he same size");
                        }
System.arraycopy(r1, 0, r3, 0, r1.length);
System.arraycopy(r2, 0, r4, 0, r1.length);
}
2.10 toString 方法
每一个类都最好定义 toString 方法:
【示例】public String toString() {
String retval = "CounterSet: ";
for (int i = 0; i < data.length(); i++) {
retval += data.bytes.toString();
retval += data.packets.toString();
}
return retval;
}
2.11 main 方法(*)
如果类中包含main(String[]) 方法, 那么它应该写在类的底部。
3 代码编写风格
3.1 语句
3.1.1 简单语句
每一行包含至多一条语句。
3.1.2 复合语句
复合语句是指附加形如"{……}"封套结构的语句。
封套内的语句要比复合语句多缩进一个层次。
开头的括号因该在起始复合语句同一行的末尾;结尾的括号应该新起一行并和起始的复合语句保持同样缩进。
应当对所有诸如if-else,while,for,try-catch结构的控制语句都使用大括号,即使是单个语句,只要它是控制结构的一部分。
【示例】if (condition) {
             statements;
} else {
             statements;
}        //if-else 语句
3.1.3返回语句
有值返回的返回语句不应该使用括号,除非某些情况下为了使得返回值更加明显。
【示例】return;
return myDisk.size();
return (size ? size : defaultSize);
3.2 位置控制
3.2.1 缩进
应当用四个空格作为缩排的单位。不要在源文件中保存Tab 字符(!!)。以免在使用不同的源代码管理工具时Tab 字符将因为用户设置的不同而显示为不同的宽度。
3.2.2 行的长度
避免行长超过80个字符,因为这样不好被大多数终端显示和工具处理。
3.2.3 折叠的行
当表达在一行放不下时,根据下面的一般原则打断它:
在一个逗号后打断。
在运算符前打断。
高层次的打断优于低层次的打断。
让新起的行与上一行同一层次表达的开头对齐。
如果上面的方法导致代码混乱或者代码减少了合适的页边空白,那么使用缩进8个空格代替。

【示例】下面的例子打断了方法调用:
someMethod(longExpression1, longExpression2, longExpression3,
longExpression4, longExpression5);
var = someMethod1(longExpression1,
someMethod2(longExpression2,longExpression3));

【示例】        下面两个例子打断了算术表达式。第一个较好,因为打断发生在较高层次上。
longName1 = longName2 * (longName3 + longName4 - longName5)
             + 4 * longname6;
【示例】        语句的行折叠通常用8空格,这是因为4空格会使主体部分看起来困难。
//USE THIS INDENTATION INSTEAD
if ((condition1 && condition2)
        || (condition3 && condition4)
        ||!(condition5 && condition6)) {
    doSomethingAboutIt();
}
3.3 空白处理
3.3.1 空行
空行通过分开局部相关的代码部分,增加了可读性。

在下列情况下总是使用两个空行:
源文件的不同部分之间
和接口定义之间

在下列情况下总是使用一个空行:
在方法之间
方法里面的局部变量声明和它的第一个语句之间
在块注释(参见4.1.1节)或单行注释(参见4.1.2节)之前
方法里面的逻辑部分之间,以提高可读性
3.3.2 空格
应该在下列情况下使用空格:
关键字和后面的括号之间应该使用一个空格。例如:
               while (true) {
                   ...
               }
注意在方法名和后面的括号之间不应该使用空格。这有助于分清关键字和方法调用。
逗号之后应该使用一个空格。
除了“.”之外的所有二元操作符应该用空格和操作数分开。对于一元操作符不使用空格。
【示例】        a = (a + b) / (c * d);
                    while (d++ = s++) {
                                        n++;
                    }
                    printSize("size is " + foo + "\n");
for语句中的表达式应当用空格分开。
【示例】        for (expr1; expr2; expr3)
强制类型转换应当跟随一个空格。
【示例】        myMethod((byte) aNum, (Object) x);
myMethod((int) (cp + 5), ((int) (i + 3)) + 1);

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

14 个回复

倒序浏览
总结的很棒!收藏了
回复 使用道具 举报
跟上课学的格式没好大的区别
回复 使用道具 举报
很详细啊。。。。。
回复 使用道具 举报
取名要见名知意
回复 使用道具 举报
很不错的说~
回复 使用道具 举报
zdh 中级黑马 2015-5-22 20:36:47
7#
好总结,拿来学习了
回复 使用道具 举报
整理的很好,谢谢了
回复 使用道具 举报
规范化,很严谨!
回复 使用道具 举报
其实在黑马敲大量代码后,这些东西都融入到本能中了
回复 使用道具 举报
我发现在企业中对于代码的规范要求很高啊
回复 使用道具 举报
顶个                           
回复 使用道具 举报
整理的不错哦
回复 使用道具 举报
学习学习
回复 使用道具 举报
感谢分享 学习了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马