Sử dụng local
trên biến có nghĩa là trạng thái trước đó cần được đẩy lên ngăn xếp ở đâu đó và khôi phục lại khi phạm vi cục bộ bị thoát. Sử dụng my
trên một biến chỉ đơn giản là tạo ra một biến hoàn toàn mới mà bóng biến trước đó có cùng tên - biến trước đó hoàn toàn bị ảnh hưởng, và không cần phải được lưu ở bất cứ đâu. Nó chỉ đơn giản là nằm trong chờ đợi khi phạm vi địa phương được thoát ra và nó có thể nhìn thấy một lần nữa.
Điều này đẩy/popping vào một ngăn xếp có nguồn lực; có rất nhiều công việc dưới mui xe để đảm bảo rằng nó hoạt động tốt. (Xem xét các trường hợp như ngoại lệ bị ném trong khi ở phạm vi địa phương hoặc xử lý tín hiệu đang được thực thi. Tôi chắc chắn bạn có thể nghĩ nhiều hơn.)
Ngoài hiệu quả hơn, sử dụng my
là hợp lý hơn nhiều. Là một lập trình viên giới thiệu biến cục bộ $ foo, bạn không cần phải lo lắng về lý do ngữ nghĩa cho phiên bản $ foo trước đó, dữ liệu nào có thể có trong đó, hoặc thực sự nếu có là một $ foo đã được tạo. Nếu đôi khi xuống đường, tuyên bố $ foo trước đó bị xóa, mã số local $foo
của bạn sẽ bị hỏng, nhưng my $foo
sẽ hoàn toàn hài lòng. Hãy là một lập trình viên tốt và giữ mã của bạn trong các phần được đóng gói tốt, có nghĩa là sử dụng phạm vi từ vựng nhiều nhất có thể. Có thể viết một ứng dụng lớn và không bao giờ cần các biến của gói/phạm vi toàn cục, đặc biệt khi bạn sử dụng các lớp OO được thiết kế tốt.
Hãy là người * * địa phương - cố gắng đọc * mã * của tôi. –
Không sử dụng địa phương so với của tôi bởi vì một là nhanh hơn so với khác; sử dụng bất cứ điều gì là chính xác nhất cho những gì bạn muốn đạt được (thường là của tôi). – ysth
Nói cách khác: không chỉ đếm thời gian một chương trình cần chạy, trên tất cả hãy đếm thời gian cần một lập trình viên để gỡ rối và sửa chữa nó. Lập trình viên đắt hơn nhiều so với máy tính chạy chương trình. – reinierpost