Matlab 如何确保代码的最大兼容性/可移植性?

Matlab 如何确保代码的最大兼容性/可移植性?,matlab,backwards-compatibility,Matlab,Backwards Compatibility,在较新版本的MATLAB中,引入了较新的功能,例如允许创建字符串数组的字符串类,以及使用双引号定义字符串的可能性”(请参阅),以及其他功能 这是个好消息,因为这类功能使生活更轻松。然而,这也带来了一个问题 我经常与同事共享代码,他们可能不一定安装了最新版本的MATLAB。如果他们运行我用新语法编写的代码,它将在他们的机器上崩溃 我可以在实践中采用哪些技术/措施来确保代码的最大兼容性/可移植性 建议不要使用较新的功能,但是如果我不得不强迫自己使用较旧的语法,那么使用最新版本对我有什么好处呢 是否使

在较新版本的MATLAB中,引入了较新的功能,例如允许创建字符串数组的
字符串类
,以及使用双引号定义字符串的可能性
(请参阅),以及其他功能

这是个好消息,因为这类功能使生活更轻松。然而,这也带来了一个问题

我经常与同事共享代码,他们可能不一定安装了最新版本的MATLAB。如果他们运行我用新语法编写的代码,它将在他们的机器上崩溃

我可以在实践中采用哪些技术/措施来确保代码的最大兼容性/可移植性

建议不要使用较新的功能,但是如果我不得不强迫自己使用较旧的语法,那么使用最新版本对我有什么好处呢


是否使用较旧的语法和我仅有的选项?

我将执行以下操作:

  • 决定要支持哪些版本的MATLAB。这可以是MATLAB的特定版本(用于开发代码的版本),也可以是一系列版本。这可能有上限和下限

    您的决定可能基于您知道您的同事需要您支持的版本范围;也可能是基于实际考虑。例如,我怀疑您是否希望支持像v5这样的旧版本的MATLAB,否则您将无法使用逻辑变量、单元数组或维数大于2的数组。或者您可能真的想要使用新的字符串数组,在这种情况下,您将把它限制在R2017a及以上,您的同事将不得不升级

    就最新版本而言,真正大的界限是R2008a(引入了新的面向对象代码)和R2014b(引入了Handle Graphics 2)。但你的特殊需求也可能决定其他界限

  • 在代码开始时,使用
    ver
    verLessThan
    测试MATLAB版本,如果不在该范围内,则出错,并显示类似
    'Unsupported MATLAB version'
    的消息

  • 在该版本范围内,您可以将自己限制为所有版本中存在的功能的最低公分母,也可以偶尔使用
    ver
    verLessThan
    上的测试,根据版本在行为之间切换


  • 在一天结束时,如果你正在为其他人生产产品(而不是只供自己使用的代码),你需要对潜在客户拥有的(或可以被说服安装的)平台进行一些研究,找到一系列足以满足大多数客户需求但又足够小、适合你的平台,并支持这些平台。

    这在很大程度上取决于“经常与同事共享代码”的含义

    如果您正在编写代码,而他们只是按照您提供的方式使用代码,那么他们所要做的就是拥有最新的代码。这是免费的。然后,您可以使用您想要的任何版本


    如果你和你的同事都在贡献代码,那么你肯定需要就使用哪个版本达成一致。

    真的没有办法以非基于意见的方式回答这个问题。您可以为客观的兼容性问题生成一个解决方案,但最终由您决定是否花费精力来容纳不想升级的人。@excaza谢谢您的提示。我认为值得一提的是,
    codeCompatibilityReport
    是在R2017b中引入的。