2011年5月7日 星期六

5-4. 檔案與 class 的關係

在 Java 中,source code 的檔案名稱,以及目錄階層,與你的 class name 與 package 需要相對應。這是你在撰寫 Java 程式時需要注意的。

Java 規定 public class 需要放在與 class 同名的檔案中,目錄結構需要與 package 結構相同。

這樣規定的好處,是可以一目了然,看出原始碼的結構。但壞處是,常常我們會發現,Java 的檔案數很多,目錄層次也很多。最常感到無奈的是,你無法在一個 Java 原始檔案中看到兩個 public class,常常為了一個新的 public class,需要再產生一個 Java 檔案。

不僅僅 source code,甚至所編譯出來的 class file,Java 也會按照 package 的方式,將 class files 放置到對應 package 的目錄中。JVM 因此可以按照目錄,找尋到所需要的 class。

這種與檔案結構相對應的構想,有好也有壞,我們不適合去評判。

在 Scala 中,已將這樣的規定移除。在 Scala 程式中,你可以在一個檔案中宣告多個 class,甚至這些 class 是不同的 package。Package 命名也不再與目錄層次相對應。

將這種規定,讓人有鬆綁的感覺,確實適合 Scala 宣傳其快速開發的格調,但好像就比較不嚴謹。

可是雖然 Java 嚴謹,但這樣命名的規定,相信大多數人卻也看不出實質好處在何處。所以,Scala 移除這樣的規定,對大部分人而言,應該是好事一樁。

雖然,Scala 把 class 命名與檔案目錄對應的規定移除,但這只是 source code 的部份,對於編譯出來的 classfile,Scala 仍依循 Java 的規定,否則 JVM 該如何找到所需的 class 呢?這是你該曉得的。

沒有留言:

張貼留言