欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java入门基础之常规的命名方法和变量的值及其引用

程序员文章站 2024-03-06 16:38:50
 java: 命名的讲究 1、类名 类名通常以名词结尾。而且在类名中要体现它是以保存数据为主还是提供功能为主。例如 connectionbuilder 这个类...

 java: 命名的讲究

1、类名
类名通常以名词结尾。而且在类名中要体现它是以保存数据为主还是提供功能为主。例如 connectionbuilder 这个类我们都可以猜到它的主要功能是创建 connection 对象,

以动词-er/or 结尾的类名,至少应该包含一个以该动词开头的方法。例如 connectionbuilder 这个类,它至少应该包含一个以 build- 开头的方法。有了这种默契,别人就能更方便的使用这个类。

2、增删改查方法的命名
以对 person 类的增删改查为例——
创建一个 person对象的方法一般命名为 createperson()/newperson(),
添加方法命名为 addperson(),修改方法命名为 updateperson(),
删除方法命名为 deleteperson()/removeperson(),
根据主键查询的方法命名为 getperson()/queryperson()。
根据其他条件来查询,要指出具体的条件类型,例如 getpersonbyname() 或 getpersonbyage()。

方法的名称要统一。例如一开始用的是 deletexxx 而不是 removexxx,那么整个项目都应该这样用下去。

3、计数方法
计数方法通常命名为 getnumberofxxx()/getxxxcount()。例如 getnumberofrows(),getquestioncount()。

4、返回 boolean 值的方法
在 javabean 中,返回 boolean 属性必须用 isxxx() 命名。

检查某个属性是否为空或者某条记录是否存在的方法,通常命名为 hasxxx(),例如 hasresult()。

检查对象状态的方法通常以 is+形容词 命名。例如 isclosed(),isready()

5、返回集合对象的方法
返回集合对象的方法应该体现出复数形式,例如 getpersons(),也可以体现容器类型,例如 getpersonlist()。

6、不要简化单词
不要写 gethislist(),而要写 gethistorylist();不要写 usrno,而要写 usernumber。一个简单的原则是要能够把这个名字读出来。

7、参数命名应该精确
createuser(string str1, string str2) 看起来很难懂,但要是写成 createuser(string username, string password) 就很好懂了。

8、返回值命名为 result
在一个方法中将返回值命名为 result,能够让方法的脉络更清晰。

9、接口
接口命名没有什么专门的原则,和类名一样要能够准确体现接口的功能。
 
有人喜欢在接口名字前面加 i。完全可以。不管加不加,都要保证整个项目的统一性。


java: 变量的值和引用
广义的说,在 java 中,凡是可以指向一个对象或包含一个值的标识符,都可以称为变量。

变量的内容,有可能是一个值,也有可能是指向一个对象的引用。

当变量的类型为基本型别(short, byte, int, long, float, double, boolean, char)时,变量的内容是一个值;当变量的类型为 object 及其子类时,变量的内容是指向一个对象的引用。例如:

int a = 3; 
string s1 = "hello!"; 
string s2 = s1; 

这时变量 a 的内容就是 3,变量 s1 的内容就是指向一个字符串对象的引用,s2 则和 s1 一样指向该对象。如果执行了下面的语句:

a = 4; 
s1 = "hello again!"; 

这时变量 a 的内容被改成了 4,s1 的内容改成了指向另一个字符串对象("hello again!")的引用。s2 则还是指向原先的那个字符串("hello!")。

接下来谈方法的调用。方法的调用是传值的。例如下面这个方法:

void f(int i, string s) { 
  i = 100;   // i 的值改成了 100 
  s = "hi!";  // s 现在指向字符串 "hi!" 
} 

当调用 f(a, s1) 时,变量 a 和 s1 的值被赋给参数 i 和 s,然后才执行 f 方法。也就是说,无论 i 和 s 怎么变,都不会影响 a 和 s1 的值。

接下来是一个稍微复杂的例子。首先定义一个方法:

void f(int i, list list) { 
  i = 10; 
  list.add("hello!"); 
} 

假设再执行下面的句子:

int a = 3; 
list l = new arraylist(); 
f(a, l); 

那么执行之后是什么结果呢?
i 和 a 是两个不同的变量,i 的值变了不会影响 a,所以 a 的值还是 3;
list 和 l 是两个不同的变量,但它们指向同一个 list 对象。f 的执行过程中给这个 list 对象添加了一个元素,那么执行完之后,通过 l 变量我们可以取到这个元素:

l.get(0); // "hello!" 

但如果 f 这样写:

void f(int i, list list) { 
  i = 10; 
  list = new arraylist(); 
  list.add("hello!"); 
} 

那么 list 首先引用到另一个 list 对象去了,改变的是另一个 list 对象的内容,所以变量 l 指向的 list 对象没有改变,l.size() 仍然是 0。

像这样的概念,初学者可能容易混淆;但只要多练习,很快就能熟悉了。