Google Apps Script:
Рефакторинг

Как:

В Google Apps Script обычный сценарий, который выигрывает от рефакторинга, это упрощение громоздких скриптов, которые взаимодействуют с Google Sheets или Docs. Изначально скрипты могут быть написаны быстро и грязно, чтобы быстро получить результаты. Со временем, по мере роста скрипта, он становится неудобоваримым. Давайте рассмотрим пример рефакторинга для лучшей читаемости и эффективности.

Оригинальный скрипт:

function logSheetNames() {
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  for (var i = 0; i < sheets.length; i++) {
    Logger.log(sheets[i].getName());
  }
}

Эта функция регистрирует название каждого листа в Google Таблицах. Хотя она работает нормально, она использует устаревшие практики JavaScript и не обладает ясностью.

Рефакторинг скрипта:

function logSheetNames() {
  const sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  sheets.forEach(sheet => Logger.log(sheet.getName()));
}

В рефакторинговой версии мы переключились на использование const для переменных, которые не изменяются, делая нашу цель более ясной. Мы также использовали метод forEach, более современный и краткий подход к итерации по массивам, улучшая читаемость.

Пример вывода (для обоих скриптов):

Вывод в Logger будет выглядеть примерно так, предполагая, что ваш документ Google Таблицы имеет два листа с названиями “Расходы” и “Доходы”:

[20-04-2023 10:00:00: INFO] Расходы
[20-04-2023 10:00:01: INFO] Доходы

Рефакторинговый скрипт достигает того же результата, но более чистый и легче понять с первого взгляда.

Глубокое погружение

Рефакторинг в Google Apps Script частично наследует свои принципы из более широкой практики программной инженерии. Он стал более узнаваемым и структурированным как концепция в конце 1990-х годов, особенно благодаря фундаментальной книге Мартина Фаулера “Рефакторинг: Улучшение дизайна существующего кода” (1999), которая предоставила комплексное руководство по различным техникам рефакторинга. Хотя конкретика рефакторинга может варьироваться в зависимости от языков программирования из-за их синтаксических и функциональных различий, основная цель остаётся той же: улучшение кода без изменения его внешнего поведения.

В контексте Google Apps Script ключевым аспектом, который следует учитывать во время рефакторинга, являются квоты и ограничения на сервисы, налагаемые Google. Эффективно рефакторингованный код не только лучше читается, но также работает быстрее и надежнее в рамках этих ограничений. Например, пакетные операции (Range.setValues() вместо установки значений в каждую ячейку по отдельности) могут значительно сократить время выполнения и потребление квот.

Важно отметить, однако, что для некоторых сложных проектов Google Apps Script может оказаться недостаточным из-за этих самых ограничений. В таких случаях, рассмотрение альтернатив, таких как Google Cloud Functions или новый собрат Apps Script — AppSheet, может предложить лучшую масштабируемость и функциональность.

В конечном итоге, хотя рефакторинг является критически важным навыком в поддержке и улучшении проектов Google Apps Script, понимание ограничений среды и рассмотрение альтернативных решений не менее важны для создания эффективного, надежного и поддерживаемого кода.