界: Encapsulation
封裝是要劃定清楚的界限。在網頁瀏覽器中,這可能意味著確保您的行動程式碼不會被其他行動程式碼濫用。在伺服器上,這可能意味著區分經過驗證的資料與未經驗證的資料、區分一個使用者的資料與另一個使用者的資料,或區分允許使用者查看的資料與不允許查看的資料。
Poor Style: Non-final Public Static Field
Abstract
可以使用外部類別來變更非 final 的公用靜態欄位。
Explanation
一般來說,因為可使用任何外部類別來變更公用欄位,所以不要提供外部類別直接存取物件成員欄位的權限。良好的物件導向設計會使用 encapsulation 以防止向其他類別洩露實作的詳細資料 (例如成員欄位)。另外,如果系統假設無法變更該欄位,惡意程式碼就可能會惡意的變更系統行為。
範例 1:在下列程式碼中,
在此案例中,惡意程式碼可能會變更此錯誤程式碼並導致程式產生意外的行為。
範例 1:在下列程式碼中,
ERROR_CODE
欄位已宣告為公用與靜態欄位,但不是 final 欄位:
public class MyClass
{
public static int ERROR_CODE = 100;
//...
}
在此案例中,惡意程式碼可能會變更此錯誤程式碼並導致程式產生意外的行為。
References
desc.structural.java.poor_style_non-final_public_static_field