在系统开发中,我们经常会见到为修复一个Bug,而另外产生一个新的Bug。对于这种司空见惯的现象,很多人技术人习以为常,甚至认为这是很正常的事情,这真是技术人的悲哀。作为一名技术人,应该认真分析问题的根源,并找到解决问题的方案,这才是一名合格的技术人。

 
    事实上,每当修复一个Bug,而产生一个新Bug时,85%的可能性是技术人乱用接口所致,10%的可能性是技术人没有理清系统的业务逻辑,只有5%的可能性是由于技术人粗心造成的。很多技术人开始发问,到底什么样的接口才是标准的接口。
 
    其实,标准接口的定义很简单,可以匹配某种功能,具有高内聚低耦合特性的一种规范。很多公司都定义了自己的一套编码规范以及接口规范,只不过在开发过程中,很多规范慢慢被技术人和谐了,而整个项目又没有代码走查过程,导致错误的代码越积越多,最终接口的耦合性越来越强,而里面的逻辑也越来越混乱。接下来,我们一起看一些接口乱用的例子。
 
    
  1. init : function (type) { 
  2.     this.inherited(arguments); 
  3.     this.reset(type); 
  4.     this.initParameter(type); 
  5. }, 
  6.  
  7. reset : function(type){ 
  8.     var bookStore = repository.getStore("Book"); 
  9.     this.ddlLib..editorWidget.set("store",bookStore); 
  10.     this.txtName.editorWidget.set("value",""); 
  11.     this.txtStatus.editorWidget.set("value",""); 
  12.      
  13.     if(type == "A"){ 
  14.         this.readStaus.editorWidget.set("value","Read"); 
  15.     }else
  16.         this.readStaus.editorWidget.set("value","Write"); 
  17.     } 
  18. }, 
  19.  
  20. initParameter : function(type){ 
  21.     this.ddlLib..editorWidget.set("value","first"); 
  22.     if(type == "C"){ 
  23.         this.readStaus.editorWidget.set("value","Read"); 
  24.     }else
  25.         this.readStaus.editorWidget.set("value","Write"); 
  26.     } 

 
    从上面的代码可以看出,在reset方法和initParameter方法中,都有对readStaus对象进行操作,此时如果调用init方法的话,readStaus会在initParameter中重写,即使传入了正确的Type : A,也会在initParameter中重写为None.
 
    这就是典型的乱用接口的情况,从方法名中应该可以看出,在系统初始化时,由reset重置所有的条件,initParameter根据其业务,进行不同的表单内容加载。不知哪个粗心大意的程序猿将本应在initParameter中执行的方法,放到了reset方法中。
 
    还有另外一种常见的乱用接口现象,就是在不满足当前业务时,就使用If Else强制更改接口。虽然If Else具有强大的适应性,但是If Else并不是为混乱接口而设计的。技术人不应该只是盲目的追求该Bug快,应该考虑修改一段代码是否会对原有的代码造成影响,是否会影响其它的业务逻辑。比如下面的代码。
 
  1. loadAttachments : function(event){ 
  2.     if(event.type === undefined){ 
  3.         return
  4.     } 
  5.      
  6.     ...  //此处省略加载附件的逻辑 
 
    某前端开发人员在修复某模块的Bug时,使用if else终止了当前循环。后来发现event.type并非必填参数,很多情况下,都是undefined返回。造成后面的代码无法执行。
 
    接口乱用的情况还有很多,以上只是两个常见的例子。作为一名技术人,应该主动去寻找自己技术的漏洞,并尽快去弥补这些漏斗,增加自己的技术实力,让技术人以技术而自豪!