Google Apps Script:
Uudelleenkoodaus

Kuinka:

Google Apps Scriptissä, yleinen skenaario, joka hyötyy refaktoroinnista, on kömpelöiden skriptien yksinkertaistaminen, jotka vuorovaikuttavat Google Sheetsin tai Docsin kanssa. Alun perin skriptejä saatetaan kirjoittaa nopeasti ja likaisesti tulosten saamiseksi nopeasti. Ajan myötä, kun skripti kasvaa, se muuttuu hankalaksi. Käydään läpi esimerkki paremman luettavuuden ja tehokkuuden saavuttamiseksi refaktoroinnilla.

Alkuperäinen skripti:

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

Tämä funktio kirjaa jokaisen Google Spreadsheetissä olevan arkkin nimen. Vaikka se toimii hyvin, se käyttää vanhentuneita JavaScript-käytäntöjä ja kaipaa selkeyttä.

Refaktoroitu skripti:

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

Refaktoroidussa versiossa olemme vaihtaneet käyttämään const muuttujia muuttumattomille arvoille, tekevän tarkoituksemme selvemmäksi. Olemme myös käyttäneet forEach-metodia, modernimpaa ja tiiviimpää tapaa iteroivaan taulukoiden läpi, parantaen luettavuutta.

Esimerkkitulostus (molemmille skripteille):

Loggerissa näyttäisi jotakin tältä, olettaen että Google Sheets -dokumentissasi on kaksi arkkiä nimeltä “Expenses” ja “Revenue”:

[20-04-2023 10:00:00: INFO] Expenses
[20-04-2023 10:00:01: INFO] Revenue

Refaktoroitu skripti saavuttaa saman tuloksen, mutta on siistimpi ja helpompi ymmärtää ensisilmäyksellä.

Syväsukellus

Refaktorointi Google Apps Scriptissä perii osittain sen periaatteet laajemmasta ohjelmistotekniikan käytännöstä. Se tuli tunnetummaksi ja rakenteellisemmaksi käsitteeksi 1990-luvun lopulla, erityisesti Martin Fowlerin merkittävän kirjan “Refactoring: Improving the Design of Existing Code” (1999) ansiosta, joka tarjosi kattavan oppaan erilaisille refaktorointitekniikoille. Vaikka refaktoroinnin erityiskohdat voivat vaihdella ohjelmointikielten välillä niiden syntaktisten ja toiminnallisten erojen vuoksi, ydin tavoite pysyy samana: parantaa koodia muuttamatta sen ulkoista käytöstä.

Google Apps Scriptin kontekstissa refaktoroinnissa tärkeä näkökohta on Googlen asettamat palvelukiintiöt ja rajoitukset. Tehokkaasti refaktoroitu koodi ei vain lueta paremmin, vaan se myös toimii nopeammin ja luotettavammin näiden rajoitusten puitteissa. Esimerkiksi eräoperaatiot (Range.setValues() sijaan arvojen asettaminen yksi solu kerrallaan) voivat merkittävästi vähentää suoritusaikaa ja kiintiönkulutusta.

On tärkeää huomata, että tietyissä monimutkaisissa projekteissa Google Apps Script saattaa jäädä lyhyeksi juuri näiden rajoitusten vuoksi. Tällaisissa tapauksissa vaihtoehtojen, kuten Google Cloud Functions tai Apps Scriptin uudempi sisar, AppSheet, tutkiminen voisi tarjota parempaa skaalautuvuutta ja toiminnallisuutta.

Lopulta, vaikka refaktorointi on kriittinen taito Google Apps Script -projektien ylläpidossa ja parantamisessa, ympäristön rajoitusten ymmärtäminen ja vaihtoehtoisten ratkaisujen harkitseminen on yhtä tärkeää tehokkaan, luotettavan ja ylläpidettävän koodin toimittamisessa.