Java良好的命名规则以及代码风格可以看出来一个程序员的功底,好多公司也会注重这方面,他们招聘员工在有些时候往往就是根据一个人的代码风格来招人,所以下面就就我知道的代码风格作简要的说明一下。Java命名一般为选择有意义的名字,能快速地传达该类的用途,同时参照java驼峰命名法来命名。

1:工程(project)都是小写,不加点,不加下划线,不用特殊符号就行了,但千万不要用中文,后果严重会乱码或错误的!

2:包(package):用于将完成不同功能的类分门别类,放在不同的目录(包)下,包的命名规则:对于包名:每个字母都需要小写,每一个公司都有自己公司的特有的包,所以公司就将公司域名反转作为包名。比如 www.sohu.com 包名com.sohu;该包下的Test类的全名是:com.sohu.Test.java 。

如果定义类的时候没有使用package,那么java就认为我们所定义的类位于默认包里面(default package)。另外,package 行要在import 行之前,import 中标准的包名要在本地的包名之前,而且按照字母顺序排列。如果import 行中包含了同一个包中的不同子目录,则应该用 * 来处理。例如:

package hotlava.net.stats;

import java.io.*;

import java.util.Observable;

import hotlava.util.Application;

这里 java.io.* 是用来代替InputStream and OutputStream 的。

3:类( class ):首字母大写,如果一个类由多个单词构成,那么每个单词的首字母都大写,而且中间不使用任何的连接符。尽量使用英文。如 class ConnectionFactory....

4、接口(Interface):采用完整的英文描述符说明接口封装,所有单词的第一个字母大写。习惯上,名字后面加上后缀 able, ible 或者 er。例如:Contactable,Prompter。当要区别接口类和实现类的时候,可以在类的后面加上“Impl”。如:接口类:UserInterface.java   接口实现类:UserInterfaceImpl.java

  5:属性、方法:首单词全部小写,如果一个方法由多个单词构成,那么从第二个单词开始首字母大写,不使用连接符。命名时应该使其简短而又有特定含义,简洁明了的向使用者展示其使用意图。如:addPerson , ageOfPerson

  6:常量:所有单词的字母都是大写,如果有多个单词,那么使用下划线链接即可。

如:public static final int AGE_OF_PERSON = 20; //通常加上static

7:约定变量(临时变量):通常i、j、k、m和n代表整型变量;c、d和e代表字符型变量。循环计数变量通常采用字母 i,j,k 或者 counter。

8:组件(Component):使用完整的英文描述来说明组件的用途,末端应接上组件类型。例如:okButton,customerList,fileMenu。

9:类中常用方法的命名:

a) 、类的获取方法(一般具有返回值)一般要求被方法名使用被访问字段名,前面加上前缀get,例如getFirstName(), getLastName()。

b)、类的布尔型的判断方法一般要求方法名使用单词 is 做前缀,如isPersistent(),isString()。或者使用具有逻辑意义的单词,例如equal 或equals

c)、类的设置方法(一般返回类型为void):被访问字段名的前面加上前缀 set,例如setFirstName(),setLastName(),setWarpSpeed()

d)、类的普通方法一般采用完整的英文描述说明成员方法功能,第一个单词尽可能采用一个生动的动词,第一个字母小写,例如 openFile(), addAccount()。

e)、 构造方法应该用递增的方式写(比如:参数多的写在后面)。例如:

public CounterSet(){}               public CounterSet(int size){ this.size = size;}

f)、 toString 方法:一般情况下,每一个类都应该定义toString 方法,其格式为:public String toString() {…}

g)、 一般应考虑置入一个main()方法,其中包含用于测试那个类的代码,如果包含了main() 方法, 那么它应该写在类的底部。

10:数组的命名:由于受c/c++影响大多人习惯用这种方式命名:byte buffer[]; 但实际上数组应该总是用下面的方式来命名: byte[] buffer;

11:其他代码中注意部分:

b、如果需要对变量名进行缩写时,一定要注意整个代码中缩写规则的一致性。例如,如果在代码的某些区域中使用intCnt,而在另一些区域中又使用 intCount,就会给代码增加不必要的复杂性。建议变量名中尽量不要出现缩写。

c、对于枚举全大写,用下划线分割,如: public enum Events { ORDER_PAID, ORDER_CREATED }

d、对于下列代码

if(a > b) {

  return true;

}else{

  return false;

}

这样看着多此一举何不直接用

return a > b;

if(a > b){

  return a;

}else{

  return b;

}

何不直接这样让人看着简单明了

return a > b ? a : b;

e、空格的使用

如下: a + b = c; b - d = e; return a == b ? 1 : 0;

不要如下: a+b=c; b-d=e; return a==b?1:0;

  f、逗号的使用

如下: call(a, b, c); 不要如下: call(a,b,c);

  g、注释的使用

块级别注释,单行时用 //, 多行时用 /* .. */。这样让人看着简直就能明白你的代码表达出来的意思。让别人能够读懂你的代码。

  h、每个if while for等语句,都不要省略大括号{}

看下面的代码: if (a > b) a++; 如果在以后维护的时候,需要在a > b 时,把b++,一步小心就会写成: if (a > b) a++; b++; 这样就错了,因为无论a和b是什么关系,b++都会执行。 如果一开始就这样写: if (a > b) { a++; } 相信没有哪个笨蛋会把b++添加错的。而且,这个大括号使作用范围更明显,尤其是后面那行很长要折行时。

i、善用TODO:

在代码中加入 //TODO: ,大部分的ide都会帮你提示,让你知道你还有什么事没有做。比如: if (order.isPaid()) { //TODO: 更新订单 }

j、不要再对boolean值做true false判断

比如: if (order.isPaid() == true) { // Do something here } 不如写成: if (order.isPaid()) { //Do something here }

k、减少代码嵌套层次

代码嵌套层次达3层以上时,一般人理解起来都会困难。下面的代码是一个简单的例子:

public void demo(int a, int b, int c) {

   if (a > b) {

     if (b > c) {

      doJobA();

    } else if (b < c) {

       doJobB()

    }

   } else {

     if (b > c) {

       if (a < c) {

        doJobC();

      }

     }

  }

}

减少嵌套的方法有很多:

  • 合并条件
  • 利用 return 以省略后面的else
  • 利用子方法

比如上例,合并条件后成为:

public void demo(int a, int b, int c) {

  if (a > b && b > c) {

    doJobA();

  }

  if (a > b && c > b) {

    doJobB();

  }

   if (a <= b && c < b && a < c) {

    doJobC();

  }

}

如果利用return 则成为:

public void demo(int a, int b, int c) {

   if (a > b) {

     if (b > c) {

      doJobA();

      return;

    }

    doJobB()

    return;

  }

  if (b > c) {

     if (a < c) {

     doJobC();

         }

   }

}

利用子方法,就是将嵌套的程序提取出来放到另外的方法里。

[JAVA第二课] java命名规则的更多相关文章

  1. Java第二天——标识符命名规则、Java的知识、快捷键的使用、Scanner获取值的常用方法

    1.标识符命名规则 字母.下划线.数字.美元符号($)由这四个部分组成. 标识符=首字母+其他 首字母:字母.下划线.美元符号($) 其他:字母.下划线.数字.美元符号($) 注意: 1.首字母不能为 ...

  2. C#,java,C++ 等变量命名规则

    命名规则: 必须以“字母” .“_”或“@”开头,不要以数字开头. 后面可以跟任意“数字”,“字母”,“下划线”. ---注意:自己起的名字尽量避免与系统中的关键字重复.不推荐重新定义相同的变量名. ...

  3. Java编程规范(命名规则)

    1.目的 编程规范是对编程的一种约定,主要作用是增强代码的可读性和可维护性,便于代码重用. 2.命名规则 首先要求程序中的各个要素都遵守命名规则,然后在编码中严格按照编码格式编写代码.命名规则包括以下 ...

  4. java第二课,java基础2

    关键字:            在java中被赋予了特殊含义的单词,具有特殊用途.   标识符:               由字母,数字,下划线(_),美元符($)组成,不能以数字开头,不能是jav ...

  5. Java第二课 项目的导入和导出

    Java项目的导入和导出 项目的导入和导出1)导入 右击myeclipse或eclipse的左侧有项目那一栏空白部分或者是File--Import,然后选择Import--General--双击Exi ...

  6. (疯狂java)第二课

    (本文章只是为了好玩,没有别的意思,有理解错误之处,恳请提醒,谢谢) 三.数据类型和运算符 想了一下今天看的内容好像依然大脑停留在用C语言去理解java,感觉有点奇怪,为啥本章叫数据类型和运算符,上来 ...

  7. java 第二课 标识符

    Java 标识符为字母.数字.下划线.dollar符 变量不能以数字开头 包名小写 类.接口首字母大写 方法首字母小写 全局变量首字母小写 局部变量首字母大写 常量大写,单词间用下划线隔开 Java中 ...

  8. java第二课:运算符和表达式

    1.取模%,如果余数为零,则判断可以整除.2.余数永远小于除数.3.自增运算符++或自减运算符--单独使用时,前++.--后++.--效果是一样的4.先加一,后使用,前++:先使用,后加一,后++5. ...

  9. 【原创】Python第二章——标识符命名规则

    在Python中,一切都是对象,包括常量数据类型,如整数数据类型(1,2,3...),字符串数据类型("ABC").想要使用这些对象,就要使用它的对象引用.赋值操作符,实际上是使得 ...

随机推荐

  1. [js高手之路]Node.js+jade抓取博客所有文章生成静态html文件

    这个周末,恶补了一下jade模板引擎,就为生成静态html文件,这篇文章需要知道jade以及看过我的上篇文章,我先给出他们的参考链接: [js高手之路]Node.js模板引擎教程-jade速学与实战1 ...

  2. 内置open()函数对外部文件的操作

    >>> file=open('c://333.csv','r') 一些基本打开关闭操作 >>> s=file.read() >>> print s ...

  3. Oracle--新建用户以及赋予的权限

    1, 以dba方式登录Oracle 2, 创建用户,Users-->New ... 输入用户名和密码 3, 赋予connect/resource角色 4, 赋予该用户 对视图操作的相关权限 以下 ...

  4. spark、storm与Hadoop

    1. Storm是什么,怎么做,如何做的更好?Storm是一个开源的分布式实时计算系统,它可以简单.可靠地处理大量的数据流.Storm有很多应用场景,如实时分析.在线机器学习.持续计算.分布式RPC. ...

  5. popOver 弹出框简单使用

    1.仿QQ弹出框 1.1用到的知识点 1.1.1如何调整弹出框的大小(这里弹出的也是控制器) 这里已经有讲解过http://blog.csdn.net/iostiannan/article/detai ...

  6. JAVA设计模式总结之23种设计模式

    上一篇总结了设计模式的六大原则<JAVA设计模式总结之六大设计原则>,这一篇,正式进入到介绍23种设计模式的归纳总结. 一.什么是设计模式                         ...

  7. 第5章 不要让线程成为脱缰的野马(Keeping your Threads on Leash) ---干净的终止一个线程

    干净的终止一个线程  我曾经在第2章产生一个后台线程,用以输出一张屏幕外的 bitmap 图.我们必须解决的一个最复杂的问题就是,如果用户企图结束程序,而这张bitmap 图尚未完成,怎么办?第2章的 ...

  8. C++ 虚函数 、纯虚函数、接口的实用方法和意义

    也许之前我很少写代码,更很少写面向对象的代码,即使有写多半也很容易写回到面向过程的老路上去.在写面向过程的代码的时候,根本不管什么函数重载和覆盖,想到要什么功能就变得法子的换个函数名字,心里想想:反正 ...

  9. 【Linux笔记(002) 】-- centos7 文档操作基本命令

    一.cd -- ChangeDirectory a) 切换到 /DemoLM/ 文件夹 b) 回到用户 Home 根目录:是哪个账户登录的就会进入哪个用户的根目录 二.pwd -- PrintWork ...

  10. Hive简记

    在大数据工作中难免遇到数据仓库(OLAP)架构,以及通过Hive SQL简化分布式计算的场景.所以想通过这篇博客对Hive使用有一个大致总结,希望道友多多指教! 摘要: 1.Hive安装 2.Hive ...