如何确保我的代码最大compatibility/portability?
How to ensure maximum compatibility/portability of my code?
新版本的 MATLAB 引入了新的功能,例如 string class
允许创建字符串数组和使用双引号定义字符串的可能性 ""
(参见 answer) ,以及其他功能。
这是个好消息,因为这种功能让生活更轻松。但是,这也给table.
带来了问题
我经常与同事分享代码,他们不一定安装了最新版本的 MATLAB。如果他们 运行 我的代码使用较新的语法编写,它将在他们的机器中崩溃。
我可以将什么techniques/measures付诸实践以确保我的代码最大compatibility/portability?
This post 建议不要使用较新的功能,但是如果我不得不强迫自己使用较旧的语法,那么使用最新版本对我有什么好处?
使用旧语法和 checking for the MATLAB version 是我唯一的选择吗?
我会做以下事情:
确定您要支持的 MATLAB 版本。这可以是特定版本的 MATLAB(您用来开发代码的版本),也可以是一系列版本。这可能有上限和下限。
您在这里的决定可能基于您知道您的同事要求您支持的版本范围;或者它可能基于实际考虑。例如,我怀疑您是否愿意支持像 v5 这样的真正旧版本的 MATLAB,否则您将无法使用逻辑变量、元胞数组或维数大于 2 的数组。或者您可能真的想使用新的字符串数组,在这种情况下,您会将其限制为 R2017a 及更高版本,您的同事将不得不升级。
就最近的版本而言,真正大的界限是 R2008a(引入了新的面向对象代码)和 R2014b(引入了 Handle Graphics 2)。但是您的具体需求也可能决定其他界限。
在代码的开头,使用 ver
或 verLessThan
测试 MATLAB 的版本,如果不在该范围内则出错,并显示类似 'Unsupported MATLAB version'
.
在该版本范围内,您可以将自己限制在所有版本都存在的功能的最低公分母上,或者您可以偶尔使用 ver
或 verLessThan
根据版本在行为之间切换。
归根结底,如果您正在为其他人生产产品(而不是仅供您自己使用的代码),您需要对您的潜在客户拥有(或可以拥有)的平台进行一些研究说服安装),找到一系列大到足以满足您的大多数客户但又小到对您实用的平台,并支持这些平台。
很大程度上取决于你分享的意思"code with colleagues frequently"
如果您正在编写代码,而他们只是按照您提供的方式使用它,那么他们所要做的就是拥有最新的 MATLAB Runtime。这是免费的。然后你可以使用任何你想要的版本。
如果您和您的同事都在贡献代码,那么您肯定需要就使用哪个版本达成一致。
新版本的 MATLAB 引入了新的功能,例如 string class
允许创建字符串数组和使用双引号定义字符串的可能性 ""
(参见 answer) ,以及其他功能。
这是个好消息,因为这种功能让生活更轻松。但是,这也给table.
带来了问题我经常与同事分享代码,他们不一定安装了最新版本的 MATLAB。如果他们 运行 我的代码使用较新的语法编写,它将在他们的机器中崩溃。
我可以将什么techniques/measures付诸实践以确保我的代码最大compatibility/portability?
This post 建议不要使用较新的功能,但是如果我不得不强迫自己使用较旧的语法,那么使用最新版本对我有什么好处?
使用旧语法和 checking for the MATLAB version 是我唯一的选择吗?
我会做以下事情:
确定您要支持的 MATLAB 版本。这可以是特定版本的 MATLAB(您用来开发代码的版本),也可以是一系列版本。这可能有上限和下限。
您在这里的决定可能基于您知道您的同事要求您支持的版本范围;或者它可能基于实际考虑。例如,我怀疑您是否愿意支持像 v5 这样的真正旧版本的 MATLAB,否则您将无法使用逻辑变量、元胞数组或维数大于 2 的数组。或者您可能真的想使用新的字符串数组,在这种情况下,您会将其限制为 R2017a 及更高版本,您的同事将不得不升级。
就最近的版本而言,真正大的界限是 R2008a(引入了新的面向对象代码)和 R2014b(引入了 Handle Graphics 2)。但是您的具体需求也可能决定其他界限。
在代码的开头,使用
ver
或verLessThan
测试 MATLAB 的版本,如果不在该范围内则出错,并显示类似'Unsupported MATLAB version'
.在该版本范围内,您可以将自己限制在所有版本都存在的功能的最低公分母上,或者您可以偶尔使用
ver
或verLessThan
根据版本在行为之间切换。
归根结底,如果您正在为其他人生产产品(而不是仅供您自己使用的代码),您需要对您的潜在客户拥有(或可以拥有)的平台进行一些研究说服安装),找到一系列大到足以满足您的大多数客户但又小到对您实用的平台,并支持这些平台。
很大程度上取决于你分享的意思"code with colleagues frequently"
如果您正在编写代码,而他们只是按照您提供的方式使用它,那么他们所要做的就是拥有最新的 MATLAB Runtime。这是免费的。然后你可以使用任何你想要的版本。
如果您和您的同事都在贡献代码,那么您肯定需要就使用哪个版本达成一致。