作者NYOandQ (andQ)
看板java
标题Re: [J2SE] 变数命名与coding style问题
时间Tue Aug 25 09:07:36 2015
※ 引述《tnsshnews (tnsshnews)》之铭言:
: Dear all,
: 有几个关於变数宣告的问题想请教一下,
: 1. global的变数在class最开头的地方宣告完之後, 要马上给予初始值吗?
: 还是一率都在constructor给呢? 好处跟差别会是什麽呢?
宣告後给予初始值,在编译成class档时,也会移到constructor里,
所以两者一样,但在这边要注意两点观念
1.让物件建立後,即可直接被使用,避免还要让使用者额外去做
一些处理。
2.若变数建立较耗资源,则可考虑建一个getter,等该物件被呼叫时
才初始化。
所以变数在宣告就初始化,或在constructor里初始化,或constructor里
呼叫其他private method初始化,都行,注意以上两点即可。
: .....
: 2. 如果在一个method里面, 有多个变数要宣告, 但宣告完之後又要做一些处理,
: 那是要把宣告通通集中在最前面, 後面在一个一个处理, 还是宣告一个处理一个,
: 在宣告一个, 在处理一个呢?
: e.g
: public void test(){
: AAA aaa = new AAA();
: aaa.setxxx...
: aaa....
: BBB bbb = new BBB();
: bbb.setxxx...
: bbb....
: ...
: }
通常都是要用到时才宣告,但如果依你的例子,我会比较建议以下方式
public void createAAA()
{
AAA aaa = new AAA();
aaa.setxxx...
aaa...
return aaa;
}
public void createBBB()
{
BBB bbb = new BBB();
bbb.setxxx...
bbb...
return bbb;
}
public void test()
{
AAA aaa = createAAA();
BBB bbb = createBBB();
...
}
这样子的做法有几个好处
1.让test()着重在处理自己的逻辑,不需要去管AAA、BBB怎麽实作。
2.程式码尽量简单,阅读时容易理解,重构时也容易下手。
3.建立AAA跟BBB的程式码可以重复使用。
: 3. class的global变数一率都用private还是public好呢? 看到很多人都会用private,
: 然後再用get/set去设定值还有取值, 不知这是一种好习惯还是有什麽考量呢?
: 谢谢
private/protected/public/default
这几个的考量点主要在「封装」,将实作与界面分开,外界只需要知道
界面,不需要知道里面的实作,所以一般普遍的做法都是变数宣告为private,
然後外界有需要存取时就透过getter/setter来达成,但要注意的是,
真的要必要时才开放,例如考量外界需要透过getter取得变数来完成的功能,
是应该由外界来完成,还是让物件自己去完成。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.143.57.12
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1440464858.A.0A6.html