我正在學習電梯。當我讀到有關模板,我明白,他們有很多的事情不是在編譯時typechecked:電梯和類型安全
- 模板可能包含
- SiteMaps的可能是指 不存在的頁面不存在的片段引用
- 片段調度方法採取字符串參數,我們可以很容易地發現錯字
是否有替代品,使這個問題不太嚴重,即外部代碼檢查或選擇在圖書館,這將允許做相同的,但在類型安全的方式?或者可能存在另一個更嚴格的網絡框架(可能是其他語言)。
我正在學習電梯。當我讀到有關模板,我明白,他們有很多的事情不是在編譯時typechecked:電梯和類型安全
是否有替代品,使這個問題不太嚴重,即外部代碼檢查或選擇在圖書館,這將允許做相同的,但在類型安全的方式?或者可能存在另一個更嚴格的網絡框架(可能是其他語言)。
類型檢查是強類型語言(如Scala或Java)的編譯時功能,允許驗證簽名和類型之間的關係。當期望一個類型爲Meat的參數或者將一個String賦值給一個Int類型的變量時,這些檢查將阻止您傳遞一個類型爲Banana的參數。通常,在動態語言(如Ruby或Javascript)中,這是不可能的
你在找什麼不是一個類型檢查器。你不想驗證你的程序在語法上是正確的,而是說它的行爲是正確的,並且解決方案稱爲自動化測試。
你完全可以寫代碼在語法上是正確的,但行爲錯誤:
public boolean isTrue(boolean value){
return !value;
}
如果你認爲它周圍的其他方式,你會如何測試一個編譯時模板的正確性,其需要填寫一些數據?
<!-- importing a snippet depending on the value of a variable -->
<import src="${snippetName}.xml"/>
你不能,因爲編譯時你所有的變量都沒有任何價值。這就是爲什麼自動化測試非常重要,編寫測試用例爲您的應用程序不能被編譯時檢查替代。
對我來說,類型檢查是關於在編譯時發現錯誤的。理論上可以檢查許多未經升降檢查的東西。 – 2012-07-11 14:31:32
Typechecking在這裏描述:http://en.wikipedia.org/wiki/Type_system。您所指的是靜態代碼分析,正如您所說的那樣,它可能會將某些運行時錯誤轉化爲編譯時錯誤。然而,編寫一個靜態代碼分析器並不難,嘗試一下... – Edmondo1984 2012-07-11 14:36:45
類型檢查是一種輕量級的靜態分析形式。康斯坦丁想要的是非常可行的。 – 2012-07-11 22:53:55
我相信對於大多數這樣的情況,編寫基於正則表達式的驗證器可能很容易。但是,雖然沒有這樣的事情,你可以嘗試測試你的代碼 - 正確的測試應該能夠捕獲所有這些錯誤。 – Rogach 2012-07-11 14:37:19