顯示具有 Java 標籤的文章。 顯示所有文章
顯示具有 Java 標籤的文章。 顯示所有文章

2014年3月9日 星期日

Clean Code - Meaningful Names

在coding的過程中,

命名一直是大家常常討論的事情,

不論是package、class、jar、file、document、properties等等,

這邊分享一些書中提到的觀念,

我想寫程式的方式每個人都有自己的想法,

看到別人提出的論點可以多聽多看多了解,

覺得好的可以學起來用,

但不認同的也可以提出來討論,

畢竟這也不是聖經或是spec,

不會有人逼你一定要用,

在此將一些覺得不錯的條列如下:

1. 名符其實

每一段Code中的所有變數,應該要可以解答所有讀者的疑惑,

可以比較以下兩段程式碼,第二段會比第一段容易理解每個變數代表的涵義,

很常看到在宣告m這種變數後,再寫一段註解解釋m是什麼意思,

如果這樣的話,不如直接宣告為month更顯得淺顯易懂。
        int m;
        String str;
        List<Integer> list=null;
 
        int month;
        String memberName;
        List<Integer> memberList=null; 

2. 有意義的區別

不要使用會讓人搞不清楚的命名,例如Member和MemberInfo兩個類別,

直覺上看起來是一樣的,或是使用a、an、the這種名稱,

像account和theAccount,或Item和ItemObject。

3. 可被搜尋

當一個變數或常數在程式中很常用到,最好給一個容易被搜尋到的名稱來代替,

比較以下兩段程式碼,for迴圈中的數字,

當使用變數名稱取代後,會更好搜尋及了解涵義。
  int sum = 0;
  for (int i = 0; i < 10; i++) {
   sum += i * 2;
  }

  int total_item_count = 10;
  int item_exchange = 2;
  for (int i = 0; i < total_item_count; i++) {
   sum += i * item_exchange;
  }

4. 類別和方法的命名

類別的命名盡量使用名詞,例如Member、Account、Item等等,

方法的名稱則使用動詞,例如save、update、delete、add等等,

取出使用get,設定修改用set,判定或flag使用is。

5. 避免雙關語

有時候你會常常使用add這樣的名稱,

不論是增加、插入、附加等等,

但你可以考慮用add、insert、append等等的命名來區別這其中的差異,

可以幫助讀者更好理解。

2013年6月27日 星期四

String vs StringBuilder vs StringBuffer

以前沒有考慮執行效率時

在做字串處理的時候都使用String,

如果你的字串處理需要常常變換長度和內容的話,

String s="";
for(int i=1;i<=a;i++){
 s+="2";
}

計算質數的作法

當初就有打算在工作一段時間後,

要回去看以前自己寫的高中生解題,

實在蠻汗顏的,

以前的我會這樣寫,

for(int i=1;i<=b;i++){
 time=0;
 for(int j=1;j<=i;j++){
  if(i%j==0){
   time++;
   if(time>2){
    break;
   }else if(j==i){
    System.out.println(i+" ");
   }
  }
 }
}

2013年6月25日 星期二

abstract class vs interface

對於從事JAVA的開發人員來說,

抽象類這個概念應該並不陌生,

但實際上這兩個的差異似乎又說不上來,

最近剛好有朋友問到這個部分,

索性就把自己研究的心得分享一下。

程式面的差異

2013年4月2日 星期二

POI-Excel 2007實作

此篇介紹使用POI套件建立excel檔案

使用的版本為poi-3.8-20120326

將樣式建立一個lib可供擴展及取用

我把建立時會用到的部分都詳列註解在上面

希望可以協助在使用上有問題的user

如果有需要提示下載的部分

可參考另一篇檔案下載

code如下:

2013年4月1日 星期一

日期差距、時間差距、兩日期相差多久

最近處理到ASP的日期函數DateDiff,

發現JAVA竟沒有如此好用的API,

只好由自己模擬一個來使用,

我將日期差距和時間差分作兩個function,

請注意日期的部分,

若是2012/12/20和2013/01/01相減的話,

日期加減計算

最近在Coding的過程經常使用到日期運算,

網路上的日期計算也有不少範例,

在此分享一個自己寫的method,

有需要的人就參考看看吧!~