这段时间(主要指4月底到5月初)写的bug超过以往总和,觉得很有必要停一下,找找原因。所谓前车之鉴后车之师,不能也不应该在同一地方跌倒N次吧;

为什么bug频出?

深究原因,并不是代码量大、功能多,反而是在原本的基础上增、删一些小功能和文件。客观原因暂且不提,总结下个人主观上存在的问题:

  • 太过自信,因为修改的功能小,相信不会有问题
  • 删除文件,而没有确定其他地方是否引用了这个文件
  • 测试不充分,修改某处功能可能会引起其他功能异常

如何改进

虽然已经开始写单元测试、集成测试,但这个需要最后完成了才显效果。在日常的开发、维护中,需要有意识的养成如下习惯:

1、删除文件要谨慎

在维护的过程中,也许发现某个文件、函数、代码块没有被引用,会删掉它。此时,首先应该全局搜索它是否被其他人使用,确定后再删除;然后,至少测试一遍。

2、开发流程守规范

在使用VUE开发的过程中,我遇到这样一个场景:

在某个单文件中,在method方法中需要用到一个全局变量,当时出于就近原则,在方法外设置了一个属性,代码如下:

  methods: {
__id: 0,
someFn() {
let __id = ++this.__id
if(error) {
if( __id === this.__id) console.log(error)
}
},

此时,error永远不会被打印!!!

为什么?在VUE中,methods中的属性都是function类型,不然会被省略,上面例子中__id = ++this.__id,它们的值都变成NAN

显然,这种方式在vue中是不被许可,自然要承受诅咒代价~

最新文章

  1. NoSQL数据库笔谈(转)
  2. 去除IE6浏览器下获得焦点的元素的虚线框的两个小办法
  3. 学习方法和阶段介绍 、 iOS界面开发引入 、 构造第一个App 、 视图控制器和视图 、 控件与事件 、 InterfaceBuilder
  4. 利用命令控制台cmd进入某个硬盘的某个文件夹的命令是什么?
  5. 基于Jquery的banner轮播插件,简单粗暴
  6. [WebGL入门]十九,遮挡剔除和深度測试
  7. Primes on Interval(二分 + 素数打表)
  8. ZigBee 技术简介
  9. BZOJ 2875: [Noi2012]随机数生成器( 矩阵快速幂 )
  10. 在qt中用tcp传输xml消息
  11. ZooKeeper安装、部署
  12. SVM公式推导笔记
  13. cmd输出控制台传递的参数
  14. quora 的东西就是不一样
  15. 当Elasticsearch遇见Kafka
  16. oc培训之变量课后练习
  17. centos6.6安装hadoop-2.5.0(四、hadoop HA安装)
  18. mysql 压缩方法
  19. Android——selector背景选择器的使用详解(二)
  20. javascript使用bind指定接收者

热门文章

  1. 学美工、平面设计、UI设计,哪个有前途?
  2. NAND FLASH和LCD电路图
  3. 根据数据库的表生成项目,项目变为hibernate项目(实际开发中常用)
  4. 17)maven-surefire-plugin
  5. NHibernate的搭建
  6. 循环读取list 的几种方法?
  7. $\frac{\pi}{\sin p\pi}$
  8. 动态载入DLL所需要的三个函数详解(LoadLibrary,GetProcAddress,FreeLibrary)
  9. Android-卖票案例static-不推荐此方式
  10. ListView的另一种可读性更强的ViewHolder模式写法