2013-11-25 17 views
6

Tôi đã làm việc trên một mô hình Simulink gần đây và đang sử dụng các khối GotoFrom để giữ cho một hệ thống rất bận rộn trở thành một mớ dây xoắn. Tôi đã được thông báo rằng tôi đã không sử dụng GotoFrom khối khi chúng được coi là phong cách xấu (ít nhất, theo chủ nhân của tôi).Trong Simulink, là Goto và Từ khối thường được coi là phong cách xấu?

Trong khi tôi giữ dây phải được kết nối bất cứ khi nào có thể, tôi tin rằng các khối GotoFrom có thể cải thiện đáng kể khả năng đọc của hệ thống/hệ thống phụ nếu mô hình sẽ dẫn đến nhiều dây chéo; đặc biệt nếu các khối có thể được mã hóa màu (ví dụ: màu tím Goto khối sẽ chuyển sang tất cả các khối màu From màu tía).

Tôi muốn cung cấp hình ảnh của hệ thống con mà tôi đang làm việc, nhưng tôi không chắc chắn tôi có thể đặt nó ở đây. Bản thân hệ thống con có khoảng 12 khối hệ thống con (và có thể sau này) bên trong nó, mỗi khối có hai đầu ra kiểu bus. Đầu ra đầu tiên của mỗi hệ thống con đi đến khối Bus Creator và đầu ra thứ hai của mỗi hệ thống con sẽ chuyển đến khối Bus Creator thứ hai. Vì hệ thống con được căn chỉnh theo chiều dọc và Bus Creator s ở bên phải, điều này dẫn đến nhiều sợi dây chéo. Tôi đang sử dụng các khối GotoFrom để dọn dẹp hệ thống.

Tôi có thể cung cấp hình ảnh về mô hình nhỏ hơn nhưng tương tự mà tôi đã đặt cùng nhau cho câu hỏi này. Small Simulink system depicting crossed wires. Đối với một hệ thống có thứ tự 12 hệ thống con, điều này trở nên rất bận rộn. Tôi đang sử dụng các khối GotoFrom để kết nối các hệ thống phụ và Bus Creator mà không có nhiều dây chéo.

Tôi tin rằng chủ nhân của tôi có thể mang dấu hiệu của việc sử dụng các câu lệnh goto từ các ngôn ngữ dựa trên văn bản và áp dụng nó cho Goto/From khối trong Simulink. Nói chung, đang sử dụng các khối GotoFrom theo cách này (hoặc bất kỳ cách nào) được coi là kiểu xấu?

+0

'Các khối Goto' không nhất thiết phải là kiểu xấu. Cùng với xe buýt, họ là một cách tiếp cận hợp lệ để tránh một mớ dây. – Karlo

Trả lời

7

Ban cố vấn ô tô Mathworks đã xuất bản một số mô hình guidelines (PDF) bao gồm việc sử dụng Goto/From. Các quy tắc họ liệt kê là:

  1. Đừng có hệ thống con được nổi, ví dụ: tất cả các đầu vào/đầu ra cổng được kết nối qua Goto s. Một trong những điều tuyệt vời về Simulink là khả năng xác định lưu lượng tín hiệu chỉ với một kiểm tra trực quan cursory, không phá hủy điều này bằng cách liên kết mọi thứ với Goto s. Ít nhất có một vòng tua chuyển tiếp và một vòng phản hồi giữa các hệ thống phụ được kết nối bằng đường tín hiệu.

    • Ý kiến ​​cá nhân của tôi về tín hiệu phản hồi là tất cả chúng phải được kết nối với đường tín hiệu, nhưng tôi chắc chắn bạn có thể đưa ra các trường hợp vẽ tất cả chúng.

  2. Nguyên tắc thứ hai là về phạm vi của thẻ Goto; giữ mức hiển thị local càng nhiều càng tốt.

    • tôi cảm thấy thiết lập tầm nhìn đến scoped là chấp nhận được cũng chừng nào bạn không sử dụng các chi tiết phù hợp với From hơn một vài mức hạ lưu từ Goto. Tôi chưa đi qua một nhu cầu hợp pháp cho một thẻ toàn cầu Goto.

Vì vậy, tất cả Goto sử dụng không phải là xấu, và bạn nói đúng rằng nó có thể cải thiện khả năng đọc trong một số trường hợp. Điều đó đang được nói, tôi không nghĩ rằng Gotos là hợp lý cho hình trên. Tôi nhận ra nó chỉ là một ví dụ, nhưng tôi nên chỉ ra rằng nếu các xe buýt được tạo ra là virtual thứ tự của các đầu vào tại tác giả không quan trọng, và sắp xếp lại đầu vào khối Bus Create và Mux có thể làm việc kỳ diệu cho dễ đọc.

Vấn đề với các nguyên tắc ở trên là có chỗ cho họ và các nhà phát triển trong nhóm của bạn có thể làm điều đó. Ngay cả khi mọi người siêng năng về việc theo dõi họ lần đầu tiên, bạn có thể chạy một loạt các nguyên tắc này một ngày, một thời gian dài kể từ bây giờ, khi bạn vẽ lại phần đó của mô hình để tinh chỉnh/thêm chức năng. Sắp xếp lại đầu vào và đầu ra có thể đặc biệt khó chịu ở giữa việc triển khai một số tính năng mới thú vị. Đó có thể là lý do chủ nhân của bạn chọn áp đặt lệnh cấm. Nó là bất tiện trong một số trường hợp, nhưng dễ thực thi hơn.

+0

Cảm ơn bạn đã nhập! Bạn đã làm cho tôi nhận ra rằng có một cách rất đơn giản để giữ cho các tín hiệu vượt qua tất cả các nơi mà không cần sử dụng Goto và Từ khối. – celestialorb

Các vấn đề liên quan