痛苦的版本对齐(外篇) 是否能够避免版本对齐
来源:互联网 发布:mac默认打开方式设置 编辑:程序博客网 时间:2024/06/04 23:27
版本对齐你是永远都需要面对的,即使所有代码(包括编译工具)都是自己写的。
一、版本对齐常常遇到的困难情况:
1、基于成熟平台构建,这种问题相对较少;尤其是商业软件。
2、基于多个开源平台构建,这种问题就比较多;
例1:软硬件结合项目中,两个核心器件的软件驱动不是基于同一个基础框架构建。
A模块为核内异构多核通信的框架,B模块为主处理器主要外设驱动。如果两软件是基于较大差异的linux版本,整合就是必须的。
例2:关于python 2.x 和 3.x 的迁移困难。
常被吐槽的就是,基于python开发的多个外部模块,需要构建到一起时,发现是基于不同的版本。总是很难拼接。
我看是学习python,主要用到的是python3.x,但发现科学计算方面,主要成果还是基于2.x。linux平台上应用基于python2.x也更多。
二、不是个人或小公司的独有的问题,
各个模块的版本对齐,是技术研发的一项重要工作内容。
即使是成熟公司,在内部也常常需要面对各个技术平台如何整合的问题。
三、如何尽量减少自己代码的版本对齐问题。
最后,说完被外部影响的版本不对齐,再说说,自己在持续的开发中,如何不给自己留版本错位的陷阱。
例如:
自己开发了一个函数, 进行数据排序功能,命名为 int sort(list data),进行从小到大的排序。
但用一段时间后,发现需要 编写另一个需要从大到小的排序。
你有两个选择:
- 重新写一个函数,从大到小排列。但如果都这样,函数会越来越多。
- 对原来函数调整一下功能(毕竟两个排序共同点更多)。
如果你选择在原函数增加功能,就发现一个问题,但是没有保留排序方式传递的就接口。
如果命名为, int sort(list data, byte sorttype) 就更好了。
但你已经调用了很多这个接口函数的代码怎么办?
尤其是对于强类型约束的编程语言(如C),是非常麻烦处理的一件事情。
对于运行时检测的语言,一般可以通过默认设定解决,比如定义时:int sort(list data, byte sorttype = LittleEnd)
【回顾】在使用 Visual Studio、linux开发时,是否常常见到 调用函数传递参数为 NULL的场景。
这大部分都是用于后续演进保留的。
- 痛苦的版本对齐(外篇) 是否能够避免版本对齐
- 项目19.2 能够对齐的数据
- 自定义View--文字两端能够对齐的TextView,文字右端能够对齐的TextView
- 强制老版本SDK编译的应用使用Android 4.4的对齐唤醒机制
- 对齐
- 对齐
- 对齐
- 对齐
- 对齐
- 对齐
- C/C++中避免系统的字节对齐
- 预处理-分节7(如何避免内存对齐的影响)
- 在IE6、ie7下input选择框与文字对齐 和ie更高版本无法一致的解决办法
- 在cocos lua中,相对于任意节点的对齐方式。(函数 源码 可直接使用) lua 3.x版本
- 检测4K是否对齐
- 实现字符串的对齐(左对齐、右对齐、居中)
- 结构体对齐的方式(自动对齐和手动对齐)
- 字对齐、半字对齐、字节对齐的理解
- 我不知道我的选择对不对,但我决定坚持——发发牢骚
- POJ 1985 Cow Marathon 树的直径
- XML内容中有单引号和双引号的解决
- 【CTSC 2008】 网络管理 --树链剖分+树状数组+Trie树
- Google账户二次验证取消
- 痛苦的版本对齐(外篇) 是否能够避免版本对齐
- 写在2014
- SYS and SYSTEM Users
- SICP 习题 (1.28)解题总结
- 【js组件】修改cityselect已适应项目
- java设计模式学习笔记6 观察者模式
- 这周结束了
- VC项目配置基础 (VC6.0 和VC2005)
- HDU 1890 Robotic Sort (Splaytree 区间翻转)