a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 114|回复: 1

[其他] JAVA技巧:Java编程风格与命名规范整理说明

[复制链接]
发表于 2012-8-4 12:28:23 | 显示全部楼层 |阅读模式
基本命名规范     包命名
) O. u3 }: u# _9 d5 V    包名按照域名的范围从大到小逐步列出,恰好和Internet上的域名命名规则相反。
8 q+ X& Z8 _  _! c- R    由一组以“。”连接的标识符构成,通常第一个标识符为符合网络域名的两个或者三个英文小写字母。( z3 A2 E  Q" K& H
    People  TestPage  XMLExample( v3 p0 t6 O0 r( Q! [3 ?* @
    类,接口命名
$ v" ?6 A* ]- V) l+ k/ [8 i1 M    类的名字必须由大写字母开头而单词中的其他字母均为小写;如果类名称由多个单词组成,则每个单词的首字母均应为大写例如TestPage;如果类名称中包含单词缩写,则这个所写词的每个字母均应大写,如:XMLExample,还有一点命名技巧就是由于类是设计用来代表对象的,所以在命名类时应尽量选择名词。, T0 K& ]) m3 f: }3 C0 x7 q
    People  TestPage  XMLExample
, [* O$ M2 ~6 a) z    方法名
1 }: F! p+ ^7 L' y( S* R/ S/ J. B/ K    方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头。可以为动词或动词+名词组合。
8 V) G6 f7 M. A" Z) j    设置/获取某个值的Method,应该遵循setV/getV规范) G, R3 ~& H2 B  W" ]9 C* q: M
    返回长度的Method,应该命名为length
/ q5 @# h9 S# M" T    测试某个布尔值的Method,应该命名为isV" x( Z3 C- c2 ?: K+ s8 C3 B0 ]2 G- D
    将对象转换为某个特定类型的Mehod应该命名为toF6 }! k' J! z$ g5 }# n5 y* d, k8 Q
    getDate();  length();  isReady();  toOracleFormat();6 q2 |- \; |/ Y( ]
    变量名
2 C& c6 W' P! F) o2 d    1.普通变量命名应该采用首字母小写,其他字母首字母大写的方式。$ n: G% D" W0 d( r# o# K5 \
    2.final static变量的名字应该都大写,并且指出完整含义。如果一个常量名称由多个单词组成,则应该用下划线来分割这些单词如。9 p3 B: Z* a% S9 @  m! `
    NUM_DAYS_IN_WEEK  MAX_VALU
, `& E9 k" u$ R- f) l0 |    3. 如果需要对变量名进行缩写时,一定要注意整个代码中缩写规则的一致性4 \$ b* x' m3 E  H
    context=ctx  message=msg
6 h) d7 k6 x  m9 }& d5 @    4. 通过在结尾处放置一个量词,就可创建更加统一的变量
1 J- q2 q2 B0 P# _: a6 m    First(一组变量中的第一个)  Last(一组变量中的最后一个)  Next(一组变量中的下一个变量)  Prev(一组变量中的上一个)  Cur(一组变量中的当前变量)1 w% u9 k- I0 [9 F
    5. 无论什么时候,均提倡应用常量取代数字、固定字符串。也就是说,程序中除0,1以外,尽量不应该出现其他数字。
( A2 j' Q0 |2 C8 Z& [    6. 索引变量:i、j、k等只作为小型循环的循环索引变量。
+ {7 Y! D4 s% `+ t! M% ]    7. 逻辑变量:避免用flag来命名状态变量,用is来命名逻辑变量。
/ r- v( b9 _" W8 N4 c$ x, r    if(isClosed){  dosomeworks;  return;  }  ~0 |3 c0 F7 `( b. a2 k
    数组
6 ?& g, F- {: v0 B% s/ c( \    总是使用以下方式定义数组:! ]4 y/ ?  `4 f. K' A, |
    int[] arr = new int[10];; G2 a. l+ T/ c/ j
    禁止使用C语言的是形式:
9 Q, x# F( e9 c8 x9 ^5 Y* s9 j& v3 o    禁止  int arr[] = new int[10];7 V* p( w" ?% ~9 P/ z( }: S
    集合
0 D+ }/ p) [2 f0 E- m4 @    数组或者容器推荐命名方式为名词+s的方式,例如:
6 t9 m! D' q$ S3 j7 a6 N2 Y/ A5 T9 ~: ]3 \
    List persons = getPerson();  for(Person person : persons){  dosomeworks;  }' ]8 g2 r, B6 P" g. O1 k" j
    泛型0 h- ?- K. C4 O6 s" z
    应该尽量简明扼要(最好是一个字母),以利于与普通的class或interface区分
) |/ J  |. _% ]7 a    Container中的Element应该用E表示;Map里的key用K表示,value用V;Type用T表示;异常用X表示! a; Q* _$ \- t  V0 Y% ^# x+ r% k5 U
    如果需要接收多个Type类型的参数,应该用邻接T的大写字母——例如S——来依次表示,当然也可以用T1, T2这样的方式
( b6 h. w. q* F5 B    public class HashSet extends AbstractSet {…}   public class HashMap extends AbstractMap {…}   public class ThreadLocal {…}   public interface Functor {       T val() throws X;   }( q" ^- M4 o$ B
    推荐的命名
  e- Z! c" ^) r& C; t8 F$ _1 A    1.当要区别接口和实现类的时候,可以在类的后面加上“Impl”。% n; M& r- z4 i" n, a
    interface Container  class ContainerImpl
( }4 n6 A5 R" e$ y    2.Exception类最好能用“Exception”做为类命名的结尾; i0 u" N! V3 ^+ f
    DataNotFoundException  InvalidArgumentException! B* E4 P; U2 C1 D
    3.抽象类最好能用“Abstract”做为类命名的开头
. B! X' ~/ v: l  P& S3 B( z    AbstractBeanDefinition  AbstractBeanFactory' [9 S, c( E9 {3 }+ o
    4. Test类最好能用“Test”做为类命名的结尾  j: B, h: G) R- x6 Q8 \# I
6 g& H) y2 U9 z8 E
    ContainerTest
回复

使用道具 举报

 楼主| 发表于 2012-8-4 12:28:24 | 显示全部楼层

JAVA技巧:Java编程风格与命名规范整理说明

</p>    5.简称与缩写(不推荐使用)( n7 V: E0 l: L. q5 X. Y1 c
    cp代表colorPoint   buf代表buffer   off代表offset   len代表length
) y, |6 E. H2 P3 ?' f    除非是在循环中,否则一般不推荐使用单个字母作为变量名,不过也有例外,即约定俗成的单个字母8 b8 A) J1 o! O: j2 m
    b代表byte  c代表char  d代表double  e代表Exception   f代表float  i, j, k代表整数   l代表long  o代表Object   s代表String   v代表某些类型的特定值
2 @- I. }! M, I; f0 I" ?, Y    代码风格
% A" C* E8 e; P. Q* n    花括号8 @# z: w# c9 b9 D& t5 d7 P
    花括号统一采用以下格式:
& v7 W) _; v' a% [0 A    if(bool experssion){  dosomework;  }
* O4 S# \% n0 s/ S7 n    除非花括号中为空,不然任何情况下不能省略花括号,并且花括号必须换行,例如:- N$ S# H3 Y: R. H4 M7 |; p8 B
    if(i==0){  return;  }  while(true) {}8 |) \  [) q8 d0 D$ R; j: o( J9 N
    以下写法禁止出现:
& B. G8 [/ o  K# o    禁止  if(i != 0) return;  禁止  if(i !=0) {return;}
" s; I; O, |! }1 d    括号$ V; F: B2 P& i/ r8 G& ^
    括号的前,后一个字符不需要空格,例如:4 B1 V# B* P5 j/ e) ~
    Person p = new Person(“Jack”, 17);
7 {/ `" g9 _- [. ?, Z    空格
9 {& }6 U, D! x/ q; T2 |    逗号之后紧跟一个空格。
3 J2 |) E) y! S    Person p = new Person(“Jack”, 16, “China”);
3 g1 J9 q; w7 z" Q    2. 二元操作符前后跟空格。+ R3 j0 X% {. P- Z
    int i = a + b – c * d;& w! M9 X9 O* r( b/ I: S6 \: ~
    3. 一元操作符不需要空格,for语句分号后有空格。
/ Q# b" n# J+ E# b7 e2 \1 o2 J    for(int i = 0; I < 10; i++){  dosomework;  }: S3 I. i3 w! D8 s& u
    4. 括号前后不需要空格2 m( `$ t7 o2 a* v% \" R
    类* ]. Z+ |, [, O0 I" P2 i1 T: T
    类的定义结构按照顺序为:5 v2 x$ L2 v" i$ @* t4 b+ K
    1) 常量1 O) r% r7 C5 d( c" a  I- U  M
    2) 成员变量
* {' C! |; F; o& @2 r" K# S    3) 构造函数
, c! C- [# U* W    4) 成员函数
5 n  a7 h* E* M( Z8 x( s    5) get和set方法( m' g! j% v7 L) t6 W; z( P
    各个部分之间留出一个空行。) u5 w  o( t, `7 w! o
    例如:
' C3 F: c' Y! }4 \5 @* g    规范类模板:
2 D1 Y% O5 U0 D, a4 s    class Person{      private final static int MAX_AGE = 100;       private String firstname = “Jack”;       public Person(){}  public Person(String firstname){      this.firstname = firstname;  }   public void doExercise(){      dosomeworks;      run();  }  private void run(){      dosomeworks;  }   public getFirstname(){      return firstname;  }  public setFirstname(String firstname){      this.firstname = firstname;  }  }
: q+ G. @0 F2 u& D    2.构造函数  \7 ~, O1 l! h  p. C% L1 \' x
    1) 参数为空的构造函数出现在最上方% ~! K' g/ p1 d: X5 l
    2) 有调用关系的构造函数相邻# P; H; B$ m& ~
    3) 参数尽量由少到多从上至下排序
+ y2 e) `: o  o8 q    3.使用成员变量
: o# L6 s* |$ \8 }. [6 a    在类的方法内引用成员变量了命名冲突以外,不使用this。非特殊情况在类的方法内都不使用get和set方法存取成员变量。
( M$ }; e$ [4 c" j    4.方法
. y5 D' L' j' @4 M) d( R. e7 F8 t    有调用关系的方法尽量放在相邻的位置,public和private方法可以交叉放置。
. W! E, T3 c+ Z    5.get和set方法,所有需要公开的成员变量都要符合良好的javabean规范,提供get和set方法,尽量使用IDE工具自动生成。
4 f7 u, a& q# R    Javadoc注释
2 k/ l8 U' Q# K* l: \! l+ m    在每个程序的最开始部分,一般都用Javadoc注释对程序的总体描述以及版权信息,之后在主程序中可以为每个类、接口、方法、字段添加 Javadoc注释,每个注释的开头部分先用一句话概括该类、接口、方法、字段所完成的功能,这句话应单独占据一行以突出其概括作用,在这句话后面可以跟随更加详细的描述段落。在描述性段落之后还可以跟随一些以Javadoc注释标签开头的特殊段落,例如上面例子中的@auther和@version,这些段落将在生成文档中以特定方式显示
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-21 17:53 , Processed in 0.221465 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表