a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 208|回复: 2

[专业语言] JAVA认证:Java编程风格与命名规范整理说明

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
基本命名规范     包命名
; v& K' G; w  i  ]$ N    包名按照域名的范围从大到小逐步列出,恰好和Internet上的域名命名规则相反。6 ~! S8 @$ i# g9 j9 H% n
    由一组以“。”连接的标识符构成,通常第一个标识符为符合网络域名的两个或者三个英文小写字母。
- \& {; ], ~7 p    People  TestPage  XMLExample
0 [; _$ @2 e- f5 l( M/ u# t    类,接口命名
0 H! W1 v7 Y3 m3 C0 o    类的名字必须由大写字母开头而单词中的其他字母均为小写;如果类名称由多个单词组成,则每个单词的首字母均应为大写例如TestPage;如果类名称中包含单词缩写,则这个所写词的每个字母均应大写,如:XMLExample,还有一点命名技巧就是由于类是设计用来代表对象的,所以在命名类时应尽量选择名词。
, A8 y3 E, y& Z, Q    People  TestPage  XMLExample7 a5 I/ {* |; ?& ~5 w; W
    方法名. j# `) {) ~6 h- h! ?& {. T
    方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头。可以为动词或动词+名词组合。
* ]! ?8 a1 n1 s% i    设置/获取某个值的Method,应该遵循setV/getV规范
9 r' V; ?0 `% i    返回长度的Method,应该命名为length( H3 I* c7 \! o0 Z
    测试某个布尔值的Method,应该命名为isV
+ M: X( [4 w: `$ l    将对象转换为某个特定类型的Mehod应该命名为toF
6 A1 \# ~+ x+ X    getDate();  length();  isReady();  toOracleFormat();0 U6 ~" ^4 w$ I' E9 F( H* s2 {
    变量名
/ W& W" S2 `6 M6 T: k    1.普通变量命名应该采用首字母小写,其他字母首字母大写的方式。
) D! n0 w( h9 t, w. k# i0 T    2.final static变量的名字应该都大写,并且指出完整含义。如果一个常量名称由多个单词组成,则应该用下划线来分割这些单词如。
5 q& @# [, i' Y+ C8 o    NUM_DAYS_IN_WEEK  MAX_VALU, N7 I+ [" ^6 g5 d
    3. 如果需要对变量名进行缩写时,一定要注意整个代码中缩写规则的一致性$ S# h  h- O! i
5 F) T0 e$ t7 \0 `8 T: _
    context=ctx  message=msg
回复

使用道具 举报

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

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

</p>    4. 通过在结尾处放置一个量词,就可创建更加统一的变量8 k- d' X: G4 E$ }5 v( A
    First(一组变量中的第一个)  Last(一组变量中的最后一个)  Next(一组变量中的下一个变量)  Prev(一组变量中的上一个)  Cur(一组变量中的当前变量)4 @) u* x! s! q" C
    5. 无论什么时候,均提倡应用常量取代数字、固定字符串。也就是说,程序中除0,1以外,尽量不应该出现其他数字。
% U7 C% L2 ~& `- c# L7 {    6. 索引变量:i、j、k等只作为小型循环的循环索引变量。; P7 M, q# M+ Y) _* D) ^
    7. 逻辑变量:避免用flag来命名状态变量,用is来命名逻辑变量。, q2 F5 @* ]3 T0 N' T9 W. a; c
    if(isClosed){  dosomeworks;  return;  }  @; u% i4 x# z7 P9 N! e
    数组
% o6 d' m7 [" [- l4 `    总是使用以下方式定义数组:6 ]* a7 C1 _3 F+ r8 ?
    int[] arr = new int[10];: o# g  w3 D7 N" d7 C% c% S$ p
    禁止使用C语言的是形式:+ K$ E+ i1 T4 r9 c9 g; v% f
    禁止  int arr[] = new int[10];, b0 H+ @$ d# c3 |5 p) ]
    集合
, _9 V9 \# G% p; w    数组或者容器推荐命名方式为名词+s的方式,例如:' m" {- L# \) K6 }
% {! q* p$ v6 H. I/ B& T
    List persons = getPerson();  for(Person person : persons){  dosomeworks;  }
1 A9 X' ^$ u! d$ g: A    泛型! E7 O* p3 O; ^5 Q* l5 u
    应该尽量简明扼要(最好是一个字母),以利于与普通的class或interface区分& {$ d, v; W% Q  C  N; ?- X' x
    Container中的Element应该用E表示;Map里的key用K表示,value用V;Type用T表示;异常用X表示. x% }2 T/ c2 L/ `
    如果需要接收多个Type类型的参数,应该用邻接T的大写字母——例如S——来依次表示,当然也可以用T1, T2这样的方式9 K% Y# ?3 B) Q, g  }9 r
    public class HashSet extends AbstractSet {…}   public class HashMap extends AbstractMap {…}   public class ThreadLocal {…}   public interface Functor {       T val() throws X;   }$ a' D, r: X* y& U+ F3 {7 J- C
    推荐的命名
0 U2 h& v6 L* C  p6 @    1.当要区别接口和实现类的时候,可以在类的后面加上“Impl”。
, K1 z' W+ c$ W/ e. U% N    interface Container  class ContainerImpl; P+ x* Y- f7 a6 V; s
    2.Exception类最好能用“Exception”做为类命名的结尾
- Q. j, _2 ~- \/ p    DataNotFoundException  InvalidArgumentException8 J7 B2 y. F: m
    3.抽象类最好能用“Abstract”做为类命名的开头1 p3 O. A" s; w) h& Y8 m
    AbstractBeanDefinition  AbstractBeanFactory5 b1 f+ m7 _& R9 ~( F7 S7 C2 d
    4. Test类最好能用“Test”做为类命名的结尾5 E" e! J/ Y! R
    ContainerTest
4 I' m" L( Y7 T$ N5 r3 a    5.简称与缩写(不推荐使用)
1 B7 D' H4 c! Z    cp代表colorPoint   buf代表buffer   off代表offset   len代表length
" C6 a! {& J( \2 [7 t; q    除非是在循环中,否则一般不推荐使用单个字母作为变量名,不过也有例外,即约定俗成的单个字母
2 C' z( o6 Z: ~3 ]; B    b代表byte  c代表char  d代表double  e代表Exception   f代表float  i, j, k代表整数   l代表long  o代表Object   s代表String   v代表某些类型的特定值! j8 a! ^. V% A3 O9 t/ ~0 U
    代码风格% H: c3 t  }/ D* Q! u$ T, x
    花括号
; G9 E/ H% G7 d. p4 p3 ]* H- u    花括号统一采用以下格式:
/ F+ [4 X5 @8 L% {; A" P& `* R7 G    if(bool experssion){  dosomework;  }
- P0 `0 O1 g$ ]/ u    除非花括号中为空,不然任何情况下不能省略花括号,并且花括号必须换行,例如:
$ |$ P" J7 t% C" ~5 X. C$ v    if(i==0){  return;  }  while(true) {}; v  q" T9 h  U. h% y
    以下写法禁止出现:* d2 j/ U, h) C0 R; d2 ?# \
; l! }5 Z9 K3 t8 T7 @% a" l3 k
    禁止  if(i != 0) return;  禁止  if(i !=0) {return;}
回复 支持 反对

使用道具 举报

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

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

</p>    括号( s  f* @7 h) i$ I( }+ q/ s
    括号的前,后一个字符不需要空格,例如:
- `3 c, l5 {) g8 e    Person p = new Person(“Jack”, 17);
# e* V& P+ }* e    空格
. D' Z9 ?  [$ e: i$ _) h- S    逗号之后紧跟一个空格。
% M% p" D" ]9 P6 j( H# @    Person p = new Person(“Jack”, 16, “China”);! k2 ^7 |0 M; @3 N) {& y$ j/ O
    2. 二元操作符前后跟空格。
( M" ^0 {4 b4 D* t    int i = a + b – c * d;# G$ _+ `( h  e
    3. 一元操作符不需要空格,for语句分号后有空格。; v) {. X5 I* x3 q6 |
    for(int i = 0; I < 10; i++){  dosomework;  }3 ~) ?" g6 ~3 o& H. H5 k& R! a/ r
    4. 括号前后不需要空格( z* h: T6 r0 n: @( i
    类" b' X$ j* b" ]
    类的定义结构按照顺序为:
* w, h5 c7 w1 l& W5 h8 k, H& U    1) 常量
) F" H3 W) t& i    2) 成员变量
( f7 r) Z7 D  `' G6 z    3) 构造函数
; Y9 j9 E2 p5 _7 I    4) 成员函数
7 }* P  K2 G. D& W# ]" G    5) get和set方法
  T% l' S: D5 g$ I1 ?* {/ d    各个部分之间留出一个空行。
- n/ X; c/ o# S: e    例如:% F  ?' t" ?) R; |! T* C
    规范类模板:  A: j, k" [: H' ~
    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;  }  }1 y5 G* U( b6 }8 O; R. n
    2.构造函数. q& K" D. C0 a8 Z: H
    1) 参数为空的构造函数出现在最上方
. v; F8 u9 _- b    2) 有调用关系的构造函数相邻
; P. a- O7 R- p- Y    3) 参数尽量由少到多从上至下排序2 A: n8 _" {  _7 s
    3.使用成员变量4 q. _' v) ?( P2 A+ @' B; v9 y
    在类的方法内引用成员变量了命名冲突以外,不使用this。非特殊情况在类的方法内都不使用get和set方法存取成员变量。9 N2 B  z! P( d7 w3 M# F
    4.方法; W7 ^; E6 A, h6 ?5 E! d
    有调用关系的方法尽量放在相邻的位置,public和private方法可以交叉放置。
0 H7 \* n7 i6 j. F  M9 b, D    5.get和set方法,所有需要公开的成员变量都要符合良好的javabean规范,提供get和set方法,尽量使用IDE工具自动生成。
& M. z7 c/ \( C& m1 g0 `    Javadoc注释; r* Z- g, N2 e) P( P
    在每个程序的最开始部分,一般都用Javadoc注释对程序的总体描述以及版权信息,之后在主程序中可以为每个类、接口、方法、字段添加 Javadoc注释,每个注释的开头部分先用一句话概括该类、接口、方法、字段所完成的功能,这句话应单独占据一行以突出其概括作用,在这句话后面可以跟随更加详细的描述段落。在描述性段落之后还可以跟随一些以Javadoc注释标签开头的特殊段落,例如上面例子中的@auther和@version,这些段落将在生成文档中以特定方式显示
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 18:04 , Processed in 0.189180 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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