use strict
tạo ra lỗi nếu bạn sử dụng tham chiếu tượng trưng (ví dụ: chuỗi để biểu thị tên biểu tượng). Nó tạo ra một lỗi nếu bạn sử dụng một biến mà không khai báo nó (điều này khuyến khích việc sử dụng các biến 'l2ical' my
'lexical, nhưng cũng hài lòng nếu bạn khai báo đúng gói globals). Nó cũng tạo ra một lỗi nếu bạn để lại các barewords treo xung quanh trong kịch bản (chuỗi unquoted, về cơ bản, theo định nghĩa của Perl của dấu ngoặc kép). Với 'strict
', bạn có thể bật hoặc tắt bất kỳ loại nào trong số ba loại độ nghiêm ngặt và tôi làm như vậy trong các khối có phạm vi. Đó là cách thực hành tốt nhất để cho phép các mức độ nghiêm ngặt, mặc dù thỉnh thoảng mã hợp pháp yêu cầu một số tính năng của nó bị tắt cục bộ. Tuy nhiên, người ta phải suy nghĩ lâu dài và khó khăn về việc liệu điều này có thực sự cần thiết hay không và liệu giải pháp của họ có lý tưởng hay không. Bạn có thể đọc về độ nghiêm ngặt trong POD của Perl được gọi là 'nghiêm ngặt'.
use warnings
tạo thông điệp cảnh báo dựa trên nhiều tiêu chí, được mô tả trong POD 'perllexwarn'. Những cảnh báo này không liên quan gì đến việc phải tuân thủ các quy định nghiêm ngặt, mà đúng hơn là, hãy theo dõi "người dùng" phổ biến nhất có khả năng gặp phải trong lập trình của họ. Cách tốt nhất là sử dụng cảnh báo khi viết kịch bản. Trong một số trường hợp, thư có thể không mong muốn, một danh mục cảnh báo nhất định có thể bị tắt cục bộ trong phạm vi. Thông tin bổ sung được mô tả trong 'cảnh báo'.
use diagnostics
làm cho các cảnh báo tiết lộ chi tiết hơn, và trong môi trường phát triển hoặc học tập, đặc biệt là trong số những người mới đến, điều đó rất mong muốn. Chẩn đoán có lẽ sẽ bị loại bỏ khỏi 'sản phẩm cuối cùng', nhưng trong khi phát triển chúng có thể là một bổ sung thực sự tốt cho các thông điệp ngắn được tạo ra bình thường. Bạn có thể đọc về chẩn đoán trong chẩn đoán của Perl POD "."
Không có lý do gì để buộc bản thân chỉ sử dụng một trong các tùy chọn trên hoặc cách khác. Đặc biệt, sử dụng cảnh báo và sử dụng nghiêm ngặt nên nói chung cả hai đều được sử dụng trong các chương trình Perl hiện đại.
Trong mọi trường hợp (ngoại trừ chẩn đoán, bạn chỉ sử dụng để phát triển), các cảnh báo hoặc cảnh báo riêng lẻ có thể bị vô hiệu hóa. Hơn nữa, lỗi của chúng có thể bị mắc kẹt với eval{ .... }
, với các khối try/catch của Try::Tiny
và một số cách khác. Nếu có một mối quan tâm về một tin nhắn cho một kẻ tấn công tiềm năng thêm thông tin về một kịch bản, các tin nhắn có thể được chuyển đến một logfile. Nếu có một nguy cơ cho biết rất nhiều logfile tiêu thụ không gian, có một vấn đề lớn hơn trong tầm tay, và nguồn gốc của vấn đề nên được giải quyết hoặc trong một số trường hợp hiếm hoi chỉ đơn giản là có tin nhắn bị vô hiệu hóa.
Chương trình Perl hiện nay phải tuân thủ nghiêm ngặt/cảnh báo là một phương pháp hay nhất.
Lý do bỏ phiếu? –
Tôi không bỏ phiếu để đóng, nhưng tôi nghi ngờ đó là bởi vì cảnh báo và nghiêm ngặt làm những việc hoàn toàn khác nhau. Nó không phải là một trong hai hoặc câu hỏi - sử dụng cả hai. –
Cảm ơn bạn đã chỉnh sửa. [@ starblue: để chỉnh sửa tiêu đề và @tchrist để thêm thẻ phụ] –