这多余吗?

时间:2019-07-10 18:43:07

标签: javascript google-apps-script triggers

这是多余的吗?有没有更简单的方法可以写这个?

  if(e.range.getSheet().getName() == 'Estimate'){  
    var thisss = SpreadsheetApp.getActive().getSheetByName('Estimate');
  }

2 个答案:

答案 0 :(得分:3)

是的。这称为WET解决方案。

  

DRY(不要重复自己)原则被描述为“每条知识在系统中必须具有单一,明确,权威的表示形式”。

简而言之,如果您跟踪代码的一个分支(例如,变量信息),则该分支应该在树/代码的根目录下只有一行,并且不得在代码的其他位置重复。

if(e.range.getSheet().getName() == 'Estimate'){  
  var sheet1 = SpreadsheetApp.getActive().getSheetByName('Estimate');
}

在这里,您有两个分支(e.range.getSheet()SpreadsheetApp.getActive().getSheetByName('Estimate'))到达同一工作表对象(sheet1)。可以修改为

var editedSheet = e.range.getSheet();
if(editedSheet.getName() === 'Estimate'){  
  //Do something with editedSheet here
}
  

违反DRY的行为通常被称为WET解决方案,通常被认为代表“两次都写两次”,“我们喜欢打字”或“浪费每个人的时间”。

答案 1 :(得分:2)

是的,这是多余的,而且时间效率也低。

如果您已经知道e.range.getSheet()返回的Class Sheet对象的名称等于'Estimate',则无需执行通常在执行方面很昂贵的Google Apps脚本服务调用时间。

要确定是否在消耗执行时间,应该查看执行记录。