幾年前讀過Beyond Java,提到java的生產力太低,當時看不太懂作者提出的問題,例如強型別的宣告,自己覺得處處要宣告比較麻煩一點,不過這點會影響很大嗎?而作者大力推薦用ruby等語言,雖然有自己練習一下,可能還沒真正拿來開發過系統,所以沒有太大的感觸...
再去看看其他用ruby的使用者,都說只是想開心的寫程式,當時還以為是因為rails的關係,那年自己正在寫ORM及data mapper的東西,寫了一堆物件滿是覺得有點麻煩,看rails可利用指令去達成這些程式碼,不過這也跟程式語言本身無關呀。
原來如此
這幾年都用php開發,而最近有需要把一段php轉用.net實作,這才發現... 我的天啊,強型別這東西真是讓我想殺人!
再去看看其他用ruby的使用者,都說只是想開心的寫程式,當時還以為是因為rails的關係,那年自己正在寫ORM及data mapper的東西,寫了一堆物件滿是覺得有點麻煩,看rails可利用指令去達成這些程式碼,不過這也跟程式語言本身無關呀。
原來如此
這幾年都用php開發,而最近有需要把一段php轉用.net實作,這才發現... 我的天啊,強型別這東西真是讓我想殺人!
- 回傳值要宣告!(strong type, weak type) 這感覺很直覺,可是有時我不知道我要回傳什麼,聽起來很怪,不過太常用,而且用的很順,例如取user的總數,當失敗時,不想用exception(上層要try catch,很煩 註1),想回個error code及error message 的object就沒辦法了。
- 註1:不要說我懶,看看thinking in java作者寫的Does Java need Checked Exceptions? (他也覺得很煩)
- 再來php array,及 json用多了,要乖乖轉換成強型別的語言真的是要人命。php想加什麼就加,超級動態的亂加,可是.net方面,就得乖乖的宣告相對映的object,才能decode,如果有新增時,又得再去class定義,用到受不了,中途改用hashtable來存,又一直覺得用起來很不順手,再改回object,又定義到快起肖,這時才感受到弱型別真是好東西。
- 轉型
int count = 10;
System.out.println("index: " + String.valueOf(count));
得自己把count轉成string,雖然沒什麼,不過實際在寫還挺煩的 - overloading beyond java裡,有提到overloading很不方便,只因參數不同,就得新宣告一個method,在讀完的當下認為本來就該宣告,不同參數會做不同的事,怎麼能寫在同一個method。 不過最近還真的覺得何止不方便,超煩的,有時參數只當config用,給不給都可,但就被逼著再寫一個method
後記:跟同事聊過,強型別問題,不過同事只用過java,對這沒感覺,我也說不上來
Reference
- Beyond java (好.. 我承認我是看中文版「超越java」)
沒有留言:
張貼留言