Ký hiệu Hungary chỉ có ý nghĩa trong các ngôn ngữ mà không có loại do người dùng định nghĩa . Trong một ngôn ngữ chức năng hoặc OO hiện đại, bạn sẽ mã hóa thông tin về "loại" giá trị vào kiểu dữ liệu hoặc lớp chứ không phải vào tên biến.
Một số câu trả lời tham khảo bài viết Joels . Tuy nhiên, xin lưu ý rằng ví dụ của anh ta là trong VBScript, không hỗ trợ các lớp do người dùng định nghĩa (ít nhất là trong một thời gian dài). Trong một ngôn ngữ với các loại do người dùng xác định, bạn sẽ giải quyết vấn đề tương tự bằng cách tạo loại HtmlEncodingString và sau đó để phương thức Write chỉ chấp nhận điều đó. Trong một ngôn ngữ được gõ tĩnh, trình biên dịch sẽ bắt gặp bất kỳ lỗi mã hóa nào, trong một kiểu gõ động, bạn sẽ có một ngoại lệ thời gian chạy - nhưng trong mọi trường hợp bạn được bảo vệ chống lại việc viết các chuỗi không được mã hóa. Các ký hiệu Hungary chỉ biến lập trình viên thành một trình kiểm tra loại người, với loại công việc thường được xử lý tốt hơn bởi phần mềm.
Joel phân biệt giữa "hệ thống" và "ứng dụng", trong đó "hệ thống" được mã hóa các loại tích hợp như int, float, v.v. và "ứng dụng" "mã hóa" các loại ", đó là thông tin meta cấp cao hơn về biến làm thay đổi loại máy, Trong ngôn ngữ chức năng hiện đại hoặc OO, bạn có thể tạo các loại do người dùng xác định, do đó không có sự phân biệt giữa loại và "loại" theo nghĩa này - cả hai đều có thể được biểu thị bằng hệ thống loại - và "ứng dụng" Tiếng Anh chỉ là dư thừa như "hệ thống".
Vì vậy, để trả lời câu hỏi của bạn: Các hệ thống chỉ có thể hữu ích trong một ngôn ngữ được gõ không an toàn, yếu, trong đó, ví dụ việc gán giá trị float cho một biến int sẽ làm sập hệ thống. Ký hiệu Hungary được phát minh đặc biệt vào những năm sáu mươi để sử dụng trong BCPL , một ngôn ngữ cấp thấp khá không thực hiện bất kỳ loại kiểm tra nào. Tôi không nghĩ rằng bất kỳ ngôn ngữ nào nói chung sử dụng ngày nay đều có vấn đề này, nhưng ký hiệu vẫn tồn tại như một loại lập trình sùng bái hàng hóa .
Ứng dụng có thể có ý nghĩa nếu bạn đang làm việc với một ngôn ngữ không có các loại do người dùng xác định, như VBScript cũ hoặc các phiên bản đầu tiên của VB. Có lẽ cũng là phiên bản đầu của Perl và PHP. Một lần nữa, sử dụng nó trong một languge hiện đại là sùng bái hàng hóa thuần túy.
Trong bất kỳ ngôn ngữ nào khác, tiếng Anh chỉ là xấu xí, dư thừa và mong manh. Nó lặp lại thông tin đã biết từ hệ thống loại và bạn không nên lặp lại chính mình . Sử dụng tên mô tả cho biến mô tả ý định của trường hợp cụ thể này của loại. Sử dụng hệ thống loại để mã hóa các bất biến và thông tin meta về "các loại" hoặc "các lớp" của các biến - tức là. các loại.
Điểm chung của bài viết Joels - để có mã sai nhìn sai - là một nguyên tắc rất tốt. Tuy nhiên, một sự bảo vệ tốt hơn chống lại các lỗi là - khi có thể - có mã sai được trình biên dịch tự động phát hiện.