zoukankan      html  css  js  c++  java
  • [JAVA第二课] java命名规则

        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。例如:ContactablePrompter当要区别接口类和实现类的时候,可以在类的后面加上“Impl”。如:接口类:UserInterface.java   接口实现类:UserInterfaceImpl.java

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

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

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

        7约定变量(临时变量):通常ijkmn代表整型变量;cde代表字符型变量。循环计数变量通常采用字母 ij或者 counter

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

        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++; 这样就错了,因为无论ab是什么关系,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();

             }

       }

    }

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

     

     

     

     

  • 相关阅读:
    uboot如何检测XC2440是从Nand或Nor启动
    uboot中的快捷菜单的制作说明
    Android存储数据方式
    SharedPreferences详解
    (转载)Android理解:显式和隐式Intent
    使用 Fresco加载图片
    script "text/template"
    网页动画插件---Super Scrollorama , TweenMax 和skrollr
    Android控件之HorizontalScrollView 去掉滚动条
    android编程取消标题栏方法(appcompat_v7、Theme.NoTitleBar)
  • 原文地址:https://www.cnblogs.com/gaojupeng/p/4732316.html
Copyright © 2011-2022 走看看