
获得徽章 0
- React v16.7发布了,可是没有预期的Hooks正式发布,只是包含一些bugfix。没有就没有吧,这次没有等下次,不过,我们依然从React的声明中看到一些很有启发性的观点。
我们知道,根据语义化版本(semantic versioning)的规则,版本分为major、minor和patch部分,假设目前React版本是v16.6.0,现在有了一些代码改变要发布,如果有breaking change,那就应该改变major,也就是v17.0.0;如果只是增加新的功能,那就改变minor,也就是v16.7.0;如果只是fix bug,不改变原有行为,那就只需要改变patch,也就是发布v16.6.1。
既然这次只是bugfix,为什么React要发布v16.7.0,而不只是发布v16.6.1呢?
因为React认为只有很小的代码改变才能当做patch发布,如果一个改变虽然只是fix bug,但是牵涉的代码改变很多,依然应该当做minor版本发布。
可以说,React的这种观点非常地正!
这世界上有很多项目的package.json里类似这么写的"react": "~16.6.0",这代表了对一个小版本的信任,因为这会匹配所有16.6.x版本,所以,一定要确保patch非常非常非常非常非常靠谱,绝对不要引入新的bug。即使我们的代码有100%的代码覆盖率,即使我们有严格的代码审核流程,即使我们在发布之前做足dogfooding,依然不能完全杜绝bug,因为每一行代码的改变都可能引入bug,如果代码改变太多,我们就不应该冒险当做一个patch发布,一旦有意外bug引入,这会毁了很多项目的。
React的确有一个很严谨的开发团队,值得我们学习。展开评论24 - 很多初级开发者都会犯一个错误,就是觉得只要某个语言某个框架有某个功能,那自己就一定要用上。这是错误的,因为有人给我们工资是让我们开发出高质量代码,不是让我们把能用的功能全用一遍。
没有任何语言任何框架是完美的,都有糟糕的设计,如果你在开发过程中发现自己把所有功能都用了一遍,那里肯定也用了糟糕的设计。513