我想在功能A之后运行功能B,但是在运行它时使用功能A中的一些变量。为了这个练习,我们不想声明全局变量。
在两个函数中都写入这些变量(方案A),或者在函数A中具有局部变量并将它们作为参数传递给函数B(方案B)会是“更好”的代码吗?
这是这两种情况的表示:
方案A
function A() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var cell = sheet.getCurrentCell();
cell.setValue("Hello World");
}
function B(cell) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var cell = sheet.getCurrentCell();
var txt = "New Text";
cell.setValue(txt);
}
场景B
function A() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var cell = sheet.getCurrentCell();
cell.setValue("Hello World");
B(cell);
}
function B(cell) {
var txt = "New Text";
cell.setValue(txt);
}
在我最近从事的一个项目中,我有很多变量,场景B对我来说似乎更“干净”,但我真的不知道是否应该这样做。
我知道这是基本知识,但是我对使用JavaScript进行编码还很陌生,我对此一无所知。任何帮助,将不胜感激!
上面的代码在Google Apps脚本中。
谢谢:)
怎么样:
function A() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var cell = sheet.getCurrentCell();
cell.setValue("Hello World");
return cell;
}
function B(cell) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var cell = sheet.getCurrentCell();
var txt = "New Text";
cell.setValue(txt);
}
function runMe() {
B(A);
}
A和B是不同的功能。 B是参数化功能。因此,逻辑应该类似于如果我们已经具有单元格值,则调用B,如果我们没有单元格,则调用A。
现在,对您的问题是的,选项B更具吸引力,因为它可以避免代码重复。但是我看不到在场景A中从A调用B的目的。
[我认为
,如果编写一个单独的函数来获取单元格,使代码遵守one function one purpose(SRP)
,那会更好。下面是工作片段:
//a function that return default cell value if called
function GetCell(){
let ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getActiveSheet();
return sheet.getCurrentCell();
}
function A() {
let cell=GetCell(); //get cell value by calling function
cell.setValue("Hello World");
}
//function B execute successfully with parameter or without parameter.
function B(cell) {
if(typeof cell == "undefined") {
cell=GetCell();
}
var txt = "New Text";
cell.setValue(txt);
}