编码修养系列---编写可移植代码必学篇


程序员尼克

一、文件名不超过14个字符

  • UNIX系统V衍生的操作系统规定,文件名应在14个字符以内
  • UNIX系统的BSD系列的操作系统规定,文件名应在15个字符以内
  • Windows NT几乎没有限制
  • 考虑到程序的可移植性,应该将文件名限制在14个字符以内

二、不要再文件名中使用特殊字符

  • 花里胡哨不要搞,不要在文件名中使用特殊字符或控制字符
  • 要我说,就用英文字符加下划线就够了

三、利用条件编译提高可移植性

  • 编写程序,经常需要移植到新的计算机环境或编译时环境时,都要修改代码,实在太麻烦了
  • 用多种条件编译指令编写独立的头文件,并添加到所有程序,就能度过难关:
/*    条件编译     */
#ifdef XENIX
#define NEWAPI 600
#define NEWTYPE iNUM
#else
#define NEWAPI 300
#define NEWTYPE liNUM
#dedif
....
  • 选择条件编译。得到的回报远远超过学习时间的投入。

四、了解编译器的限制

  • 不同编译器对嵌套深度、模块大小、允许的标识符长度的限制条件各不相同
  • 考虑移植的时候,就需要预先设定程序的边界值
    编译器限制相关编码方针示例:
  1. 一个模块的大小应限制在60KB以内
  2. 一个模块的长度应小于XXXX行
  3. 禁止使用整体大小超过640KB的数组
  4. 嵌套深度不得超过5层
  5. 标识符长度应限制在32个字符之内

五、需考虑数据类型大小可能变化

  • 举个最简单的例子,有的编译器认为char型可以保存负数,有的就不可以。有的编译器认为int和long型变量大小都是32位。
  • 数据类型大小、能否处理负数,均取决于制造商。
  • 经验丰富的程序员会在程序起始部分用sizeof()函数编写用于确认数据类型大小的代码
  • 而菜鸟程序员只会嫌弃sizeof()函数的繁琐
  • 如果一意孤行,导致数据溢出,系统瘫痪,谁来承担呢??

六、可移植性和高效性二选一

  • 鱼和熊掌不可兼得
侧重点 对系统的依赖程度 代表性的实现手段
重视效率 位字段、指针、二进制文件、移位运算、引用调用
重视可移植性 整数处理、数组、文本文件、乘2/除2运算、传值调用

七、用数组代替指针以提高可移植性

  • 使用指针后,不得不编写以来机器的程序
  • 要想提高移植性,就应该使用数组代替指针处理数据

八、选择可移植性更好的编程语言

  • 可移植性和可读性通常成正比
  • 只要不会引发严重的问题,最好选择可移植性更好的语言

九、不要插入低级语言编写的代码

  • 在c语言不便携带代码中插入汇编、机器语言代码,移植的时候可能会出问题。
  • 如果不得不使用低级语言实现特定功能,则应该用相应语言编写库,事先编译,然后以函数形式调用。

十、小结

本章从文件名、编译器、数据类型、编程语言等几个方面展开介绍移植性问题,让我在今后编写大型项目时有了很好的借鉴与认知!

猜你喜欢

转载自blog.csdn.net/weixin_43722052/article/details/111027446
今日推荐