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

时间:2017-11-15 16:32:32

标签: matlab backwards-compatibility

随着MATLAB的更新版本的推出,我们引入了更新的功能,例如允许创建字符串数组的string class以及使用双引号""(参见answer)定义字符串的可能性。其他功能。

这是一个好消息,因为这种功能让生活更轻松。但是,这也带来了一个问题。

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

我可以采用哪些技巧/措施来确保代码的最大兼容性/可移植性?

This post建议不要使用较新的功能,但如果我不得不强迫自己使用较旧的语法,那么使用最新版本的内容是什么?

使用旧语法和checking for the MATLAB version我唯一的选项吗?

2 个答案:

答案 0 :(得分:1)

我会做以下事情:

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

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

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

  2. 在代码开头,使用ververLessThan测试MATLAB的版本,如果不在该范围内,则会出错,并显示{{ {1}}。

  3. 在该版本范围内,您可以将自己限制为所有版本中存在的功能的最低公分母,或者您偶尔可以在'Unsupported MATLAB version'ver上使用测试根据版本在行为之间切换。

  4. 在一天结束时,如果您为他人制作产品(而不是仅由您自己使用的代码),您需要对潜在客户所拥有的平台(或可能是说服安装),找到一系列足够大的平台,以满足大多数客户的需求,但又小到足以让您真实,并支持这些平台。

答案 1 :(得分:0)

这很大程度上取决于你经常与同事分享“代码”的意思

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

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