iT邦幫忙

9

5個Java案例說明程式碼"精簡"與"短"的差異

案例一:縮排與分段的差異

//一行版class Demo1{public static void main(String[] args){//do something}}
//精簡版
class Demo1 {
    public static void main(String[] args) {
        //do something
    }
}

一行版的程式碼在這個範例直接變成註解了!雖然是個極端的案例,不過也直接點出分段與縮排的重要性。現今的潮流,許多的程式碼甚至連括弧與分號都能省略,不過這都是建構在縮排分段的寫作基本功,本來就是程式設計師該具備的DNA。

案例二:註解

/**
 * @author Darwin Juan
 * 目的: 此類別為用來執行 PrintObjectUtils類別所設定的項目,並打印在列印文件上
 * Date: 2018/2/12
 */
public class PrintCheckUtils {}

註解的功用就是讓程式設計師本身或其他共同開發人能夠快速知道這段程式碼的功用;而且不論註解寫多少行,編譯器都會乎略,不用擔心影響執行效能。因此有沒有註解都不影響程式執行面,只差在「有寫,後續維護人員會感謝你!」; 「沒寫,後續維護人員會詛咒你!」這樣而已。
在Java中,註解還有Annotation可用。在IDE中,移到對應物件或方法下就會跳出一些說明框。此外,Annotation在一些開源框架中尚有其他用途,有興趣的可以去探究探究,Spring是不錯的標的!

案例三:電腦根據程式碼到底做了什麼

//一般認為很笨的程式碼
class Stupid {
    public static void main(String[] args) {
        System.out.println("Hello, world !"); 
        System.out.println("Hello, world !");
        System.out.println("Hello, world !");
    }    
}
//一般認為很聰明的程式碼
class Smart {
    public static void main(String[] args) {
        for (int i=0; i<3; ++i) System.out.println("Hello, world !");
    }
}

怎麼看都覺得聰明版的程式碼比較像是可以拿高薪的程式設計師寫的,事實則不然!實際上笨的程式碼在電腦中真的只單純的列印出三行Hello, world; 反觀聰明的程式碼則是除了印出三行Hello, world外,還多判斷了i是否小於3這件事3次。其實案例三也是資訊界面試有名的問題,其他還有給你任意三邊判斷是否能構成三角形,記得回答餘弦定理喔!

案例四:新語法的使用

(for迴圈版)

for (int i=0; i<10 ; ++i) System.out.print(arr1_10.get(i) + " ");

(for迴圈威力加強版-忘記是Java 5還是6以後)

for (int i: arr1_10) System.out.print(arr1_10.get(i-1) + " ");

(Lambda版-Java 8以後)

arr1_10.forEach(i -> System.out.print(i + " "));

Java 8 有了Lambda表示式之後,程式碼的清晰度相對提高不少,程式碼也可以精簡不少;不過由於是新語法(???先把Java 10丟一邊吧!),真的就要等日久見人心了(目前還沒看到值得一提的負面教材),不過個人是樂見Lambda被加入Java這個大家庭!

案例五:願不願意多站在使用者的角度多寫一些

public String num2Ch(Double number) {
    // 做些事將數字轉中文大寫 ex : 123 -> 壹佰貳拾參;
}

原則上是這段就行了,但如果看到以下程式碼接續著:

public String numInt2Ch(Integer number) {
    this.num2Ch(Double.parseDouble(number.toString()));
}
public String numFloat2Ch(Float number) {
    this.num2Ch(Double.parseDouble(number.toString()));
}
...

千萬別認為這些程式碼是多餘的,因為寫出這些的設計師,就是比一般人多站在使用者的角度上幫使用的人做好一些防呆機制,領高薪自然就是天經地義的事了。

總結:

其實程式語言本身並沒有好壞優劣的區分,端看使用的人。寫程式功力的精進,先要知道自己在寫什麼(案例1,2),再知道電腦根據你寫的做了什麼(案例3);當上面兩步都覺得自己可以獨當一面時,進一步再往使用者想要的是什麼邁進吧!
其實會有比較優劣這些想法,多半是被一些商業補習班、證照班招生用語: 語法好上手,程式比較短,...,所影響!
想學好程式,心定下來找個坑先跳下去,熟悉實作到獨孤求敗時,再找另一個坑跳下去,待久了就是你的!套句等價交換的原則:想要得到什麼,就付出什麼吧,例如時間!


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
小魚
iT邦大師 1 級 ‧ 2018-04-29 18:36:23

等價交換,
用Java換C的程式
/images/emoticon/emoticon39.gif

"龜甲文"表示:先把侵權費跟訴訟費付一付先,再來談後續! XD

我要留言

立即登入留言