--------------------------------------------------------------------------------
标题: 跨平台的 C++ 代码移植要点
作者: 叶飞虎
日期: 2010.09.06
--------------------------------------------------------------------------------
1. 分层设计
隔离平台相关的代码, 就像可测试性一样, 可移植性也要从设计抓起。一般来说, 最上
层和最下层都不具有良好的可移植性:
1). 最上层是 GUI, 大多数 GUI 都不是跨平台的, 如: Win32 SDK 和 MFC
2). 最下层是操作系统 API, 大部分操作系统 API 都是专用的
如果这两层的代码散布在整个软件中, 那么这个软件的可植性将非常的差, 这是不言自
明的。那么如何避免这种情况呢? 当然是分层设计了:
1). 最底层采用 Adapter 模式, 把不同操作系统的 API 封装成一套统一的接口(如:
KYLib 库), 至于封装成类还是封装成函数, 要看实际情况而定。如果在开发第
一个平台时就采用 KYLib, 可以大大减少移植的工作量。
2). 最上层采用分离界面表现与内部逻辑代码的模式, 把大部分代码放到内部逻辑里
面, 界面仅仅是显示和接收输入, 即使要换一套 GUI, 工作量也不大。这同时也
是提高可测试性的手段之一, 当然还有其它一些附加好处。所以即使你采用 QT
或者 GTK+ 等跨平台的 GUI 设计软件界面, 分离界面表现与内部逻辑也是非常
有用的。
2. 注意平台的特性
a. 目录分隔符: 在Windows下用 '\\', 在Linux下用 '/'。