可移植代码是不紧密耦合到一个特定平台的代码,或者尽可能松散地耦合到特定于平台的API.它是"便携式的",因为将它从一个平台移动到另一个平台所需的工作量很低.
当您打算在各种平台上编写旨在供大量受众使用的代码时,便携式代码是可取的.
可移植性主要是编译语言中的一个问题,因为解释型语言通常依赖于解释器在运行时提供统一的接口.通过依赖于诸如backticks
或exec
在本地环境中执行命令的功能,而不是通过可能具有不同平台特定实现的库访问相同功能,仍然很可能在解释语言中编写特定于平台的代码.
库通常非常关注可移植性,因为它们的主要目的是跨平台提供一致的API.
编写可移植代码涉及最小化代码必须"达到"的位置数量,并触及标准API之外的底层操作系统.通常,您将封装此类访问权限,以便代码库中只有一个位置,必须从平台移植到平台,而批量保持不变.
可移植代码很容易迁移到其他平台 - 无论是其他编译器还是其他操作系统,只需进行最少的更改即可促进迁移。
理想情况下,这可以通过仅使用标准(系统提供的头文件中定义的类型、函数、定义,在另一个系统上这些头文件可能由编译器/操作系统供应商修改以适合该系统)来实现。
有时使用标准是不够的,需要在整个代码中使用(通常很难看的)#ifdef。
我的陈述假设使用类似 C/C++ 的语言。许多其他语言本质上更具可移植性。