几年前,刚进入OriginLab公司。当时参与了Import File相关工作。我们这部分几乎所有的功能都是基于OriginC语言(下面简称OC)开发的。不单是是公司内部,连Origin的客户,都使用OC开发界面和附加功能。

有一天,我们收到一个客户的抱怨,说他在Origin 7.5写的关于Import File的OC代码,不能在Origin 8.0下运行通过。于是我们的Leader Justin找到我,要求我解决客户的问题。我仔细的分析了客户的OC代码,发现他使用了几个我们不曾公开的内部库函数(至于他为什么能获取关于此类函数信息,不得而知)。而在8.0里,我们已经抛弃了这些函数,因为他们已经被新的函数所替代。为了解决用户的问题,我们不得不将这些无用的函数放回库中,并保持其函数名称和参数列表与原来一致。

虽然最终这个问题得到了解决,但就其解决方法,我和Justin争论了一番。他认为无论如何都不应该修改客户的代码,8.0理应维护所有7.5上来出现的兼容性问题,这个明显的“向下兼容性”原则。我认为,应该要求用户修改OC代码,任何不标准的库函数调用,都不能得到新版本很好的支持,因为OC很难处理“向上兼容性”。这个争论短暂的持续一会,就停止了。我们互相都不能说服对方,这件事情不欢而散。

最近些日子,同样的问题再次出现。Origin 8.0 SR5版本发布。一个客户抱怨,他在SR4下写的Impor File相关OC代码,不能正确运行在SR5版本中。这次事情比较严重,因为SR4是一个正式版,我们没有任何理由要求修改他的OC代码,我们必须在将来的SR6中,加入对他的代码的支持,并且这个问题在SR5中已经很难修补了。这次问题的原因是同样的

“向上兼容性”的思考相关推荐

  1. java 向后兼容性_关于java:JDK“向上”还是“向后”兼容?

    向后二进制兼容性(或向下兼容性) - 使用旧版本库API构建的客户端在新版本(wiki)上运行的能力. 向上二进制兼容性(或向前兼容性) - 使用新版本的库API构建的客户端在旧版本(wiki)上运行 ...

  2. 有关import sun.audio.AudioPlayer(或者其它文件)的问题

    今天白天在工作中使用Eclipse编译代码的时候,在播放声音的代码中报了这么一个错误 import sun.audio.AudioPlayer; import sun.audio.AudioStrea ...

  3. 101条计算机经典名言(英汉对照版)

    "People always fear change. People feared electricity when it was invented, didn't they? People ...

  4. 腾讯Android自动化测试实战

    腾讯Android自动化测试实战 丁如敏 盛娟 等著 图书在版编目(CIP)数据 腾讯Android自动化测试实战 / 丁如敏等著. -北京:机械工业出版社,2016.10 ISBN 978-7-11 ...

  5. 经典幽默的计算机名言

    经典幽默的计算机名言 "人们总是害怕改变.电被发明出来的时候他们害怕电,是不是?他们害怕煤,害怕蒸汽机车.无知无所不在,并导致恐惧.但随着时间推移,人们终究会接受最新的科技." 正 ...

  6. 经典幽默的计算机名人名言

    经典幽默的计算机名人名言 "人们总是害怕改变.电被发明出来的时候他们害怕电,是不是?他们害怕煤,害怕蒸汽机车.无知无所不在,并导致恐惧.但随着时间推移,人们终究会接受最新的科技." ...

  7. 101条伟大的计算机编程名言

    "人们总是害怕改变.电被发明出来的时候他们害怕电,是不是?他们害怕煤,害怕蒸汽机车.无知无所不在,并导致恐惧.但随着时间推移,人们终究会接受最新的科技." 正如比尔盖茨曾经警告过一 ...

  8. 101条经典幽默的计算机编程名言

    如果您喜欢这些文章,欢迎点击此处订阅本Blog <script type="text/javascript"></script> <script sr ...

  9. 101条伟大的计算机编程名言 [ROYcms!NT]

    为什么80%的码农都做不了架构师?>>>    作者: 杜耀辉 发表于 2009-11-09 11:33 原文链接 阅读: 45 评论: 0 boxi译 "人们总是害怕改变 ...

最新文章

  1. 六种 主流ETL 工具的比较(DataPipeline,Kettle,Talend,Informatica,Datax ,Oracle Goldengate)...
  2. 深入解析windows XP/2003:内核模式和用户模式
  3. 【机器学习基础】数学推导+纯Python实现机器学习算法4:决策树之ID3算法
  4. 通过反射获取私有构造方法并使用
  5. Java学习小程序(10)三个等级的才字母游戏
  6. 边缘计算的爆发为安防全产业带来了怎样的变化?
  7. Golang 笔记 2 函数、结构体、接口、指针
  8. Kotlin的匿名方法实现接口回调
  9. 清华linux网络编程视频,清华大学视频课件:基于Linux的C++(自主模式)
  10. macos复制粘贴快捷键 快速_苹果MAC系统复制粘贴快捷键是什么?
  11. win7在网上邻居上看不到别的电脑如何解决
  12. 踏歌智行筹备A股上市:正招募首席财务官,投资方包括宝通科技等
  13. ADP网站服务器,手把手帮您win7系统搭建adp本地服务器的方案
  14. WLAN 双链路+HSB高可靠性
  15. 通过U盘安装系统时,提示无法在驱动器分区上安装windows的解决办法
  16. 微信小程序把view居中_初识微信小程序
  17. bit, byte, short int占用的字节数简单解释
  18. Simulink —— RC Servo原理和控制模型
  19. 二进制数字频带传输2DPSK系统的设计
  20. 51单片机(十六)AD/DA

热门文章

  1. Team Communication
  2. Sat-Hacking(4):Starlink路由器逆向分析-上篇
  3. chap4组合逻辑电路
  4. 文物鉴定与鉴赏杂志文物鉴定与鉴赏杂志社文物鉴定与鉴赏编辑部2022年第22期目录
  5. APM应用性能管理监控使用体验--appdynamics
  6. 什么是OutOfMemory以及各区内存溢出
  7. NUIST LevOJ P1684 炼丹术
  8. 自己做量化交易软件(41)小白量化实战14--美国17年周期蝉与指标参数设计技巧
  9. xp系统启动oracle9i,Windows XP系统Oracle 9i的安装和卸载图解-Oracle
  10. swoole的原理和实际开发注意问题