Người ta có thể viết mã xấu trong bất kỳ ngôn ngữ. Có goto
ngôn ngữ không có nghĩa là ngôn ngữ là xấu.
Hãy xem xét các cấu trúc hiện có bằng các ngôn ngữ khác nhau - nghỉ ngơi , continue
, next
, cuối cùng , throw
. Thậm chí switch
Đây là tất cả các hình thức của một tính toán đi từ một cấp độ phạm vi đến cùng một mức độ phạm vi hoặc cao hơn.
Vấn đề với goto là khi nó đi vào một phạm vi sâu hơn của phạm vi hoặc nhảy các khung stack.
Người ta sẽ lưu ý Ví dụ 3 trong tài liệu được liên kết từ câu hỏi:
<?php
goto loop;
for($i=0,$j=50; $i<100; $i++) {
while($j--) {
loop:
}
}
echo "$i = $i";
?>
Điều này sẽ không hoạt động vì goto
đang cố gắng nhảy vào một phạm vi sâu hơn.
Không có gì sai với các hình thức goto bị hạn chế khác nhau, hãy là từ khóa có tên goto hoặc một số tên nhánh khác. Các lựa chọn thay thế (điều kiện xấu trong vòng lặp) thường có thể tồi tệ hơn. Như nó là, sử dụng goto đơn giản
Cá nhân, tôi không thích ví dụ được đưa ra như ví dụ # 1
<?php
goto a;
echo 'Foo';
a:
echo 'Bar';
?>
Tuy nhiên, điều này không gây ra vấn đề với ngôn ngữ ngoài việc cần thiết phải áp dụng một số kinh nghiệm học tập thể xác cho nhà phát triển, những người cố tình viết mã như thế này.
goto
trong nguồn hay không. Cho dù họ thường thấy trong mã thành ngữ hay không là một điều khác. Goto gây ra không có hại tuy nhiên.