2012-07-11 36 views
5

Tôi đang học nâng ngay bây giờ. Khi tôi đọc về mẫu, tôi đã hiểu rằng họ có rất nhiều thứ mà không typechecked lúc biên soạn:Nâng và loại an toàn

  • Templates có thể chứa tham chiếu đến đoạn không tồn tại
  • Sơ đồ trang web có thể tham khảo các trang không tồn tại
  • Snippet phương pháp công văn lấy thông số chuỗi nơi chúng ta có thể dễ dàng thực hiện một typo

có bất kỳ lựa chọn thay thế để thực hiện vấn đề này ít nghiêm trọng, tức là kiểm tra mã bên ngoài hoặc các tùy chọn trong thư viện mà sẽ cho phép làm như vậy nhưng theo một kiểu cách thức an toàn? Hoặc có thể có một khuôn khổ web khác nghiêm ngặt hơn trong quan hệ này (có thể bằng ngôn ngữ khác).

+0

Tôi tin rằng đối với hầu hết các trường hợp như vậy, có thể dễ dàng viết trình xác thực dựa trên regexp. Nhưng trong khi không có điều như vậy, bạn có thể thử kiểm tra mã của bạn - thử nghiệm thích hợp sẽ bắt tất cả các lỗi đó. – Rogach

Trả lời

1

Loại kiểm tra là tính năng biên dịch thời gian của các ngôn ngữ được nhập mạnh như Scala hoặc Java cho phép xác minh chữ ký và mối quan hệ giữa các loại. Các kiểm tra như vậy sẽ ngăn cản bạn truyền một tham số kiểu Banana khi tham số kiểu Meat được mong đợi, hoặc gán một String cho một biến kiểu Int. Thông thường, bằng các ngôn ngữ động như Ruby hoặc Javascript, điều này là không thể

Những gì bạn đang tìm kiếm không phải là trình kiểm tra loại. Bạn không muốn xác minh rằng chương trình của bạn có cú pháp đúng, nhưng đúng hơn là nó hoạt động đúng và giải pháp cho điều đó được gọi là kiểm tra tự động.

Bạn đang hoàn toàn có thể viết mã mà là cú pháp đúng, nhưng hành xử sai:

public boolean isTrue(boolean value){ 
     return !value; 
} 

Nếu bạn nghĩ rằng nó phải là cách khác xung quanh, làm thế nào bạn sẽ thử nghiệm một thời gian biên dịch đúng đắn của một template cần phải được lấp đầy với một số dữ liệu?

<!-- importing a snippet depending on the value of a variable --> 
<import src="${snippetName}.xml"/> 

Bạn không thể, vì tất cả các biến của bạn tại thời gian biên dịch hoàn toàn không có giá trị. Đó là lý do tại sao thử nghiệm tự động là quan trọng và viết các trường hợp kiểm tra cho ứng dụng của bạn không thể được thay thế bằng các lần kiểm tra biên dịch.

+2

Đối với tôi, typechecking là về việc tìm kiếm lỗi tại thời gian biên dịch. Và nhiều thứ không được kiểm tra trong thang máy có thể được kiểm tra. –

+0

Typechecking được mô tả ở đây: http://en.wikipedia.org/wiki/Type_system. Bạn đang đề cập đến phân tích mã tĩnh, như bạn đã nói có thể biến một số lỗi thời gian chạy thành các lỗi biên dịch thời gian. Tuy nhiên, nó không tầm thường khi viết một trình phân tích mã tĩnh, hãy thử nó ... – Edmondo1984

+2

Kiểm tra kiểu là một dạng phân tích tĩnh nhẹ. Những gì Konstantin muốn là khá khả thi. –

Các vấn đề liên quan