ARTS(06)

1 Algorithm

2 Review

Semantic Versioning
在开发过程中,我们需要对软件进行版本设置,通常为x.y.z语义化版本表明版本号管理是具有语义信息的。其中x为主版本号Majory为次版本号Minor,z为补丁号Patch

  • Major版本号表明发生的API不兼容的问题;
  • Minor版本号表明增加了一下向后兼容的操作;
  • Patch版本号表明做了一些向后兼容的bug修复。

在开发中,可都会依赖外部的工具或者库,但是过紧或者过松的版本依赖都会产生问题,因此在这里我们使用语义化版本管理可以避免这个问题。

2.1 详细说明

  • 使用语义化版本的软件必须定义公共API,一旦API定义好,它就应该是准确和清晰明了的;
  • 版本使用X.Y.Z形式, X,Y,Z都是整数,也不能以0开头,每次版本更新都是自增的;
  • 一旦某一个版本发布了,那么软件的内容将不能做任何改变,任何改变都要做新的版本发布;
  • Major版本号为0,也就是0.y.z表明是刚刚开始开发,随时都会变化,这时候的公共API都视为不稳定的;
  • 版本1.0.0表明了公共的API;
  • 只有向后兼容的bug修复必须增加patch版本号;
  • 只有向后兼容的功能功能API发布必须增加Minor版本号;
  • 当向后不兼容的公共API发布后必须增加Major版本号;
  • 预发布版本可以在后面增加[0-9A-Za-z-]的标识符,预发布版本的优先级低于该版本号,通常表明该版本不保证满足兼容性要求,比如1.0.0-alpha
  • 元数据可以添加到版本号后面,用+连接,并且保证元数据满足[0-9A-Za-z-]要求,比如1.0.0-beta+exp.sha.5114f85;
  • 版本的优先级必须按照Major,Minor,Patchpre-release划分开来,其中元数据不作为版本号比较,通常优先级比较从左到右;

2.2 为什么这么做

首先,使用语义化版本,可以很好的帮助我们软件的使用者,能够和用户达到很好的交流方式;再者使用语义化版本,可以帮我们约束我们软件开发的流程,如果控制我们软件的升级和兼容。

2.3 补充说明

  • 任何时候以0.1.0作为软件开发的起点;
  • 如果软件在生产环境中使用,那么以1.0.0开始;
  • 如果软件每天都在快速开发,也就是公共API一直在改变,使用major0;
  • 一旦更新major版本号,就需要考虑影响范围,需要在cost/benifit之间权衡;
  • 为你的公共API提供更多的文档注释;
  • 如果在更新minor版本号的时候,发现了不兼容现象,那么请立即增加minor版本号,然后恢复兼容性问题,并且通知用户改不兼容的版本号是有问题的;
  • 如果我更新了我的软件依赖,但是不影响公共API,那么不需要更新major版本号;
  • 如果想要废弃一些公共API,需要做两件事:(1)在公共文档中说明该公共API将会被废弃;(2)增加一个minor版本号,标明该API将会被废弃,以便在下一个major版本平滑过渡;

3 Tips

在使用git中的reset命令的时候,假设使用--hard参数后,版本将会回退到特定的commit Id,使用git log命令将不会显示该commit id后的所有提交,那么如果要查看之前的提交,可以使用git reflog命令查看最近的所有操作,找到先要恢复的commit id,使用git checkout commitId, 将该提交切出来,注意目前的HEAD分支处于游离状态,需要使用git checkout -b branch-name将该游离的HEAD附属到branch-name分支上,待修复完毕后,从主分支上将其合并。

4 Share

清醒思考的艺术
这本书列出了一些思维上一些偏误,虽然有些观点值得商榷,但是这点观点让从另外一个角度审视我们的思考方式。

  • 幸存偏差:这个偏差在生活中广泛被使用,因为只有成功了的案例才会进入大众视野,而影响了对事实的判断;
  • 公地悲剧:如果一件事好处归个人,而成本却又集体承担,责任和义务统一才能避免这样的悲剧;
  • 结果偏误:根据事件的结果而评判当初的决定,通常也叫史学家错误;但是这样会带来不可知论,很多诸如复盘等方法就不起作用了
  • 锚定效应:对于一个未知的领域,可以使用我们已知的知识进行大胆预测,不要害怕出错;
  • 规避损失:人都有*厌恶损失*的偏好,所以在说服别人的时候,使用避免损失比获得收益更有价值;
  • 现成偏误:在解释世界的时候,人偏向于使用现成的例子来想象世界,而不是使用量化思维;
  • 确认偏误:将生活的中各种信息与我们已有的理论、世界观和信念相兼容,而且如果这些理论等越模糊,确认误差越大。(宗教就是使用这种方式),避免这样的方法:
    • 认真对待与我们认知不符合的现象;
    • 写下我们的信条,并且一一干掉他们。
  • 讨喜偏误:对于同一事物,如果表述它的人或者事物更让人讨喜,那么我们会犯下讨喜偏误;
  • 框架效应:对同一方案,有损失和收益两种概率。对于收益,人偏向*风险厌恶*;而对于损失,却是*风险偏好*,这个在股票市场常有的心态;
  • 因果关系:相互关系并不是因果关系,所以一些所谓的吉祥物则将相互关系当成了因果关系;
  • 光环效应:一个方面照亮了眼镜,由此推及到全部;
  • 社会性懈怠:团队中个人效率是无法看到的,那么团队效率并不是所有个人的效率之和;应该彰显团队中个人的效率。
  • 零风险偏误:在做选择的时候,更喜欢零风险的事情;
Comments
Write a Comment