
获得徽章 0
- 最近推特上关于TypeScript的讨论很多,其实我的观点一向都是这样:有些工具的确能够解决问题,但是从没有一种工具解决所有人的问题,如果这个工具能够解决你的问题,那你就用啊,但是千万不要因为这个东西“很热”就去用它,不考虑自身条件滥用工具,不会有好结果的。419
- 虽然一般来说应该尽量避免重复代码,避免copy+paste代码,但是至少有一个场景下,copy+paste也不失为一种好办法,那就是在编写单元测试的时候,强求多个test case重用代码,往往把测试代码搞得更复杂,让后来人难以理解,还不如copy+paste呢。评论16
- 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