10. 程式習慣
10.1 提供實體變數和類別變數的權限
沒有好理由的話,不要讓任何的實體變數或是類別變數是 public 的。通常
,實體變數不需要被直接的設定或是獲得 -- 通常是作為方法呼叫的邊際效
應。
一個適當的 public 實體變數的例子是當這個類別是一個沒有行為的基本的
資料結構時。換句話說,如果你可能會使用 struct 來代替類別的話 (如果
Java 支援 struct 的話) ,那讓類別的實體變數是 public 就是適當的。
10.2 引用類別變數和方法
避免使用物件來存取類別(static)變數和方法。使用類別名稱來代替。例如
:
classMethod(); // OK
AClass.classMethod(); // OK
anObject.classMethod(); // 避免!
10.3 常數
12
會出現在 for 迴圈中當作計數值的數值常數 (直譯
字) ,除了 -1,0,和 1 之外,不應該直接編寫。
10.4 變數指定
避免在單一敘述中指定好幾個變數為同一個值。那會不容易閱讀。例如:
fooBar.fChar = barFoo.lchar = 'c'; // 避免!
不要在可能很容易會跟相等運算子搞混的地方使用指定運算子。例如:
if (c++ = d++) { // 避免! ( Java 不允許)
...
}
應該寫成
if ((c++ = d++) != 0) {
...
}
不要為了改善執行效率而使用嵌入式的指定。這是編譯器的工作。例如:
d = ( a = b + c) + r; // 避免!
應該寫成
a = b + c;
d = a + r;
10.5 雜項慣例
10.5.1 小括號
在表示式中包含了混和的操作子時,使用大量的小括號來避免優先權的問題是
一個不錯的作法。即使操作子的優先權對你來說看來很清楚,對別人來說可能
不是如此 -- 你不應該假設其他的程式設計師對優先權的瞭解跟你一樣好。
if (a == b && c == d) // 避免!
if ((a == b) && (c == d)) // 使用
10.5.2 傳回值
試著讓你程式的架構符合意圖。例如:
if (booleanExpression) {
return true;
} else {
return false;
}
應該以下列取代
return booleanExpression;
相同的,
if (條件) {
return x;
}
return y;
應該寫成這樣
return (條件 ? x : y);
10.5.3 在條件運算子中 "?" 之前的表示式
如果在 ?: 運算子的 ? 之前出現的表示式中包含了二元運算子,那它應該被
小括號刮起來。例如:
(x >= 0) ? x : -x;
10.5.4 特別註解
在註解中使用 XXX 來標出一些假的但是仍有用的東西。使用 FIXME 來標示
出一些有問題而且壞掉的東西。
Personal notes ~
2007年5月11日 星期五
訂閱:
張貼留言 (Atom)
追蹤網誌清單
IT Info
Reference
標籤
- 代討論
- 防盜
- 常規表示式(regular expression)
- 進度
- 電子地圖
- 網站搬家程式
- Ajax Library
- Application of Perl
- C#
- CakePHP
- Coding Convention
- CSS
- Data injection
- DBI
- Debug
- Diff Browser
- Effect : Slideshow
- Engineering - Desing Pattern
- framework
- Framework - CodeIgniter
- Functions
- Imgick
- jquery
- JS Framework
- JS Library
- JS Object : Statement
- Linux
- Mapping Other Language
- Need to Turnning
- NetBeans
- OOAD-MVC
- open source suit software
- Performance
- Perl Installation
- PHP Class
- PHP rpc Java
- PHP to PERL
- Presentation
- RIA
- Serculity
- Service
- SQL injection
- Tips
- Tools
- Variable
- Versus
- WCF
- WebSite Thumbnail
- XML
- ZK Ajax
網誌存檔
-
▼
2007
(80)
-
▼
5月
(51)
- check class
- exec() check
- POST 方法上傳
- foreach
- Group , Join
- fetch query result
- kkwi
- 20070522 Mysql Driver 編碼問題
- ignore_user_abort() ...
- 換掉別人的網站首頁
- php
- CakePHP使用手冊-命名規則?
- CakePHP使用手冊-暫存機制(Cache)
- CakePHP使用手冊-安全性元件(Security Component)
- CakePHP使用手冊-要求處理元件
- CakePHP使用手冊-資料過濾
- CakePHP使用手冊-Session元件(Session Component)
- CakePHP使用手冊-權限控制表(ACL)
- CakePHP使用手冊-插件(Plugin)
- CakePHP使用手冊-資料檢驗
- CakePHP使用手冊-全域函式與常數
- CakePHP使用手冊-AJAX Helper
- CakePHP使用手冊-Helper
- CakePHP使用手冊-HTML Helper
- CakePHP使用手冊-View
- CakePHP使用手冊-Component
- CakePHP使用手冊-何謂model?(二)
- CakePHP使用手冊-Controller
- CakePHP使用手冊-何謂model?(一)
- CakePHP使用手冊-Scaffold(鷹架)
- CakePHP使用手冊-安裝
- CakePHP使用手冊-設定
- CakePHP使用手冊-基礎觀念
- CakePHP使用手冊-簡介
- CakePHP使用手冊-序
- CakePHP 譯序
- Data injection
- SQL injection
- Java 程式碼慣例 -- 第十一章 程式碼範例
- Java 程式碼慣例 -- 第十章 程式習慣
- Java 程式碼慣例 -- 第九章 命名慣例
- Java 程式碼慣例 -- 第八章 空白
- Java 程式碼慣例 -- 第七章 敘述
- Java 程式碼慣例 -- 第六章 宣告
- Java 程式碼慣例 -- 第四章 縮排
- Java 程式碼慣例 -- 第五章 註解
- Java 程式碼慣例 -- 第二章 檔案名稱
- Java 程式碼慣例 -- 第三章 檔案組織
- Java 程式碼慣例-導論
- CakePHP Basic Setup and Views
- 用PHP函数解决SQL injection
-
▼
5月
(51)
沒有留言:
張貼留言