Tôi sẽ không đồng ý với tất cả các bạn những người trẻ tuổi đánh cá về điều này.
Sử dụng return ở giữa một phương thức, void hoặc cách khác, là một thực tiễn rất tồi, vì những lý do đã được trình bày khá rõ ràng, gần bốn mươi năm trước, bởi quá cố Edsger W. Dijkstra, bắt đầu trong "Tuyên bố GOTO được coi là có hại ", và tiếp tục trong" Lập trình có cấu trúc ", của Dahl, Dijkstra và Hoare.
Quy tắc cơ bản là mọi cấu trúc điều khiển và mọi mô-đun phải có chính xác một lối vào và một lối ra. Một kết quả trả về rõ ràng ở giữa mô-đun phá vỡ quy tắc đó và khiến việc suy luận về trạng thái của chương trình trở nên khó khăn hơn nhiều, do đó, điều này làm cho việc nói chương trình có đúng hay không sẽ khó hơn nhiều (đó là một thuộc tính mạnh hơn nhiều so với "liệu nó có hoạt động hay không").
"Tuyên bố GOTO bị coi là có hại" và "Lập trình có cấu trúc" đã khởi động cuộc cách mạng "Lập trình có cấu trúc" trong những năm 1970. Hai phần đó là lý do chúng ta có các cấu trúc điều khiển if-then-else, while-do và các cấu trúc điều khiển rõ ràng khác ngày nay và tại sao các câu lệnh GOTO bằng ngôn ngữ cấp cao lại nằm trong danh sách Các loài nguy cấp. (Ý kiến cá nhân của tôi là chúng cần phải nằm trong danh sách Các loài tuyệt chủng.)
Điều đáng chú ý là Message Flow Modulator, phần mềm quân sự đầu tiên mà EVER đã vượt qua thử nghiệm chấp nhận trong lần thử đầu tiên, không có sai lệch, từ bỏ, hoặc nguyên văn "vâng, nhưng", được viết bằng một ngôn ngữ thậm chí không có một tuyên bố GOTO.
Cũng cần nhắc lại rằng Nicklaus Wirth đã thay đổi ngữ nghĩa của câu lệnh RETURN trong Oberon-07, phiên bản mới nhất của ngôn ngữ lập trình Oberon, khiến nó trở thành một đoạn sau của phần khai báo của một thủ tục đã nhập (tức là hàm), thay vì một câu lệnh thực thi trong phần thân của hàm. Sự giải thích của anh ấy về sự thay đổi nói rằng anh ấy đã làm điều đó chính xác vì biểu mẫu trước đó LÀ vi phạm nguyên tắc một lối ra của Lập trình có cấu trúc.