zoukankan      html  css  js  c++  java
  • 痛苦的版本对齐(外篇) 是否能够避免版本对齐

    痛苦的版本对齐(外篇) 关联因素图 http://www.cnblogs.com/yvivid/p/3543702.html

    ======================

    版本对齐你是永远都需要面对的,即使所有代码(包括编译工具)都是自己写的。

    一、版本对齐常常遇到的困难情况:

    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节 最短子数组练习题
    第二章 排序 || 第18节 有序矩阵查找练习题
    tensorflow 之tf.nn.depthwise_conv2d and separable_conv2d实现及原理
    tensorflow 之常见模块conv,bn...实现
    机器学习中的训练数据不平衡问题
    一些智力题
    Pytoch 抽取中间层特征方法
    娱乐一下
    java访问ad域
  • 原文地址:https://www.cnblogs.com/yvivid/p/3550971.html
Copyright © 2011-2022 走看看