高效的Java代码:更好地将变量作为函数中的参数传递,或复制变量?

问题描述 投票:0回答:2

我想在功能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脚本中。

谢谢:)

javascript variables google-apps-script parameter-passing
2个回答
0
投票

怎么样:

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);
}

0
投票

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);
 }
© www.soinside.com 2019 - 2024. All rights reserved.