Tôi đang viết một ứng dụng MATLAB có nhiều chức năng trải rộng trên các tệp khác nhau. Tôi có một logger, là một cấu trúc với một con trỏ hàm, và tôi sử dụng nó để ghi lại thông tin cho người dùng xem (nghĩa là, chức năng nào hiện đang thực thi, kết quả tính toán, v.v.). Lý do tôi sử dụng một cấu trúc cho logger của tôi và không chỉ đơn giản là fprintf()
là tôi có thể dễ dàng thay thế nó bằng trình ghi XML, trình ghi HTML, v.v. trong tương lai.Thay thế tốt nhất cho các biến toàn cục của MATLAB
Vì mã của tôi bao gồm nhiều hàm gọi nhau, tôi đã khai báo cấu trúc nhật ký của mình là toàn cầu, vì vậy tôi không phải chuyển nó cho tất cả các hàm của mình. Tuy nhiên, ở khắp mọi nơi tôi nhìn tôi thấy rằng các biến toàn cầu là hiện thân ác trong MATLAB và sẽ làm chậm chương trình của tôi xuống đáng kể.
Có cách nào để có các biến có sẵn trên các tệp mà không nhất thiết phải chuyển chúng dưới dạng thông số đầu vào và không bị xử phạt nghiêm trọng?
Vars toàn cầu không phải là "ác". Họ chỉ có thể tạo ra nhiều lỗi nếu bạn không phải là một lập trình viên có kinh nghiệm, chẳng hạn như quá tải các vars khác vv Ngoài ra, tôi không tin rằng có một hit hiệu suất cho globals trong Matlab. Nếu sử dụng globals làm cho cuộc sống của bạn "cực kỳ" dễ dàng hơn, sau đó sử dụng chúng. Chỉ cần cố gắng không làm cho nó trở thành một thói quen. – Jorge
@Jorge mọi lập trình viên, không chỉ những lập trình viên thiếu kinh nghiệm. Nhưng ngược lại, vâng. –
@Jorge - tiêu chí của bạn để sử dụng globals so với biến truyền vào phương thức là gì? – dzisner