我係由 寫 Java 轉寫 Scala, 過來人身份,好明白 Java 有啲乜野做到做唔到

我又舉多個例


係 Java 我係咪要開多 3 個 method 做 overloading 然後總共 4個 Method

仲要個個都係 String Type ,要望實個次序唔好出錯喎,一錯次序又會出 Bug

只要你嘗試係 Java 世界諗下點 Impl 我 Scala 寫嘅同樣 Logic,你會發現 寫 Java Productivity 其實低咗好多
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

TOP

如果你用啲 Java都有好類似 Code 去同 Scala 比,係對 Scala 極度不公平。

我打 "7+7+7+7+7..." 係一個比 ...
hihihi123hk 發表於 2016-3-15 20:08

唔明你寫一樣野點解要寫到咁複雜
JAVA:
    static String greater10(int x){
            return String.format("%s And %s 10",x%2==0?"isEven":"isOdd",x>10?"Greater":"Smaller that or equal to");
    }

TOP

本帖最後由 hihihi123hk 於 2016-3-15 20:46 編輯
唔明你寫一樣野點解要寫到咁複雜
JAVA:
    static String greater10(int x){
            return String ...
evec 發表於 2016-3-15 20:35


真係對牛彈琴 ,我都唔想解釋, 嘅然你做到咁,咁你做番一模一樣嘅做以下幅圖吧



而家用例子去講 平時寫 Code 點處理啲 Logic ,一個 Pattern Matching ,

唔係叫你點樣砌番一模一樣嘅 Result
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

TOP

本帖最後由 evec 於 2016-3-15 21:08 編輯
真係對牛彈琴 ,我都唔想解釋



你做到再講吧,而家用例子去講 平時寫 Code 點處理啲 Logic ,一 ...
hihihi123hk 發表於 2016-3-15 20:38

真係唔知你想表達D咪,寫一D咁奇怪可讀性咁低的Code出來,上面就夾硬話METHOD抽一大堆String話JAVA更易錯唔夠CLEAN








不過可唔可以看清楚個Topic討論緊咪野,唔好太離題。

TOP

本帖最後由 hihihi123hk 於 2016-3-15 21:09 編輯
真係唔知你想表達D咪,寫一D咁奇怪可讀性咁低的Code出來,上面就夾硬話METHOD抽一大堆String話JAVA更易錯 ...
evec 發表於 2016-3-15 20:49


我估到你會咁講,所以我都打定一個 真正 Use Case ,Java 技窮係人之常情。

我認為絕對無離題,啲人成日話 HK no it ,根本你自己 Productivity 都唔夠人地高,咁點同人爭?



我絕對同意 Java 做到 Scala 同樣做到一樣嘅野。

但要記住 論速度,Scala 做到嘅必定會快過 Java 做到嘅。加上兩邊都係 行 JVM ,講緊一個 Java Project 隨時可以 Import Scala,用 Scala compile Scala +Java => 出番隻 Jar 出黎,放落邊度行都可以。 有興趣了解更多 Scala 嘅師兄都可以 PM 我,我都唔想見到 HKIT 陸沉


但我認為 Developer 雖要考慮嘅應該係 寫得
1.  Clean 唔 Clean
2. 易唔易 Main & Debug
3. Productivity 高唔高

我相信你自己都心
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

TOP

本帖最後由 evec 於 2016-3-15 21:12 編輯
我估到你會咁講,所以我都打定一個 真正 Use Case ,Java 技窮係人之常情。

我認為絕對無離題,啲人成日 ...
hihihi123hk 發表於 2016-3-15 21:04



    講Logic你的Code又唔知邊到精,講Pattern更加唔知咪野Pattern,正正常常係咁寫
  1.     static String greater10(int x){
  2.         if (x%2==0){
  3.             if (x>10)
  4.                 return "xxxxxxxxx";
  5.             else
  6.                 return "llllllll";
  7.         }else{
  8.             if (x>10)
  9.                 return "ddddddd";
  10.             else
  11.                 return "gggggg";
  12.         }
複製代碼
如果你想話要用CASE
  1. static String greater10case(int x){
  2.         switch (greater10(x)) {
  3.             case 1:
  4.                 return "xxxxx";
  5.             case 2:
  6.                 return "ddddd";
  7.             case 3:
  8.                 return "eeeee";
  9.             case 4:
  10.                 return "1111";
  11.             default:
  12.                 return "";
  13.         }
  14.     }

  15.     static int greater10(int x){
  16.         if (x%2==0){
  17.             if (x>10)
  18.                 return 1;
  19.             else
  20.                 return 2;
  21.         }else{
  22.             if (x>10)
  23.                 return 3;
  24.             else
  25.                 return 4;
  26.         }


  27.     }}
複製代碼

TOP

本帖最後由 hihihi123hk 於 2016-3-15 21:18 編輯
講Logic你的Code又唔知邊到精,講Pattern更加唔知咪野Pattern,正正常常係咁寫如果你想話要用CASE} ...
evec 發表於 2016-3-15 21:09



    如果你覺得咁樣寫係 Clean 過 我個Scala example

我都無話可說  

你可以再挑戰埋 #35 個「真實」 Example

#35 我寫出黎 我 Guarantee 到個 Logic 絕對無漏, Java 呢? 幾層 if case ,想番 Check 嗰陣仲要慢慢 Trace

講多少少心聲,我個人認為寫 Scala 係一定會少啲 Bug,因為 Java 要做到同樣效果要寫多好多野,只要個 Developer 一懶,就好容易做漏 Case 。相反 Scala 好輕鬆就做到啲,要清楚易名,花同樣時間做嘅 Coding ,必然會少啲 Bug

TOP

本帖最後由 evec 於 2016-3-15 22:20 編輯
如果你覺得咁樣寫係 Clean 過 我個Scala example

我都無話可說  

你可以再挑戰埋 #35 個 ...
hihihi123hk 發表於 2016-3-15 21:12


夾硬用CASE寫到亂曬大龍就係叫 少BUG,好講唔好聽你D CASE咁簡單的都己經看死人啦,你唔服的就投票以下CODE同你個CODE邊樣更好,CASE唔係咁樣來用的
  1.    class Account {
  2.         Boolean vip;
  3.         Account(Boolean vip) {
  4.             this.vip = vip;
  5.         }

  6.         String deposit(int amount, String type) {
  7.             boolean morethat1000 = amount > 1000;

  8.             switch (type) {
  9.                 case "CREDIT_CARD":
  10.                     if (!vip && morethat1000)
  11.                         return "Urgent contact this user";
  12.                     else
  13.                         return "All Credit card welcome with no limitation ";
  14.                 case "BANK_TRANSFER":
  15.                     if (!morethat1000)
  16.                         return "BANK_TRANSFER must > 1000";
  17.                     if (!vip)
  18.                         return "Only accept vip to do BANK_TRANSFER";
  19.                     return String.format("Accept amount = %d", amount);
  20.                 default:
  21.                     return String.format("cannot handle isVip= %b, amount= %d, type:%s", vip, amount, type);
  22.             }
  23.         }
  24.     }
複製代碼

TOP

原本唔想回, 見得啖笑都係回下你啦...
話分兩頭, 第1, 可唔可以migrate to Microservice, 唔係睇你用咩 L ...
vichui 發表於 2016-3-15 13:49


   
除咗第三,極度認同你嘅觀塘

如果你有第二嘅想法:你都認為易寫同易 Main 係兩回事

Java Compared with Scala 就係樣版

我都順免個下 Scala 有乜缺點。

Scala 最大缺點就係 Compile 得慢,因為本身 Language 太自由,Compiler 需要做多好野。

以前啲電腦運算能力咁弱,再加上做啲 Monolithic 嘅 System 出黎,幾十萬行 Code, 弱點蓋過優點

但而家時代唔同,幾千蚊嘅 Desktop 電腦已經有 i7 ,例如 整個 Project Compile time 就算相差 2倍 都唔會相差好遠

再加上有 Docker 加持令 Microservice 流行, 正正常常一個 Scala Project Compile time 普遍低於2分鐘

我前幾個 Post 嘅 Scala 例子 只係一啲皮毛,仲有大把深入嘅野可以做。我亦都相信你係未寫過 Scala 先會講話 Java 未 Out,

講多少少,
1.Scala 係 100% compatible with Java

2.所有 Maven / Gradle Project 都可以加一個 Scala compiler dependency ,再用 Scala compiler compile Java + Scala 出 .jar

3.所有 Java library 可以係 Scala import 之後用

仲有,有人話 Android 唔用 Java 用什麼,無錯就係用 Scala,唔信可以自己 Google

Thats why, 基本上新 Project 完全用 Scala 開波係無問題(如果你搵到人才

via HKEPC Ionic Reader v1.2.9 - iPhone

TOP

本帖最後由 hihihi123hk 於 2016-3-15 22:53 編輯
夾硬用CASE寫到亂曬大龍就係叫 少BUG,好講唔好聽你D CASE咁簡單的都己經看死人啦,你唔服的就投票以下CO ...
evec 發表於 2016-3-15 22:11


   
你呢個係正路 Java 做法 你可以數下自己用咗幾多個 if 、switch ,正常情況仲有 {} 包住。加上並不 Intuitive


我知 Intuitive 呢個字好抽象

比個情境題你:

假如有一個同事/新人,你叫佢例出 所有 Not Vip 嘅人 Deposit 喺點樣 Handle

我段 Scala Code ,只要新人有少少 Scala 知識,知道 _ 就係 Any,可以少於 5秒就例哂所有情況,會出啲乜野。因為啲 Code 本身做到 「self documented 」

你段 Java code 對於一個新人黎講, 有好高機會單靠 !vip 去認, 有極大機會 Miss 咗 "All credit card welcome...."

That is the difference

再有個情境題? 要例出 Deposit > 1000 點 Handle

比較已經好明顯

我再重申, Scala做到、Java 都會做到。結果一定係一樣,討論嘅位係邊一邊比較 Clean 、 Intuitive 、Elegant

只係一個咁簡單嘅 Logic 都相差咁遠,你試諗下一個萬幾行嘅 System?

via HKEPC Ionic Reader v1.2.9 - iPhone

TOP