GAS 文件:如何使全球空间免受污染?

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

如何清理全局空间而无需创建 +1000 行

.gs
文件

  • 下面是我的一些文件/文件夹的两张照片。注意滚动条可以滑动多低(30+ GAS 文件)↓

Files and folders used in my projectenter image description here

  • 在 Apps 脚本中,
    .gs
    文件无法像
    .js
    模块一样手动混合,这意味着我无法
    import
    export
    (对吗?),也无法控制搜索补全时显示的内容;
  • 如果我将其包装在一个界面中,我通常会得到超过 1000 行代码,这使得整个项目难以阅读;
function groupOfFunctions() {
    this.doThis = function() { /* hundreds of lines */ };
    this.doThat = function() { /* hundreds of lines */ };
    // ...
    this.subFunc_N = function() { /* hundreds of lines */ };
    return this; // <-- makes tired face after this
};
  • 为了避免这种情况,该项目的组织方式是所有功能都依赖于全球空间;
  • 新问题:最终,我的全球空间被大量函数严重污染;

enter image description hereenter image description here

  • 场景是:我通常会忘记函数的作用,甚至忘记它们的存在(很多时候我编写了一些已经准备好的东西,但丢失了
  • 我没有在 Youtube 视频、论坛中的问题或互联网上任何类似的地方找到谈论如何处理它的内容,所以问题是:

如何清理全局空间而不必创建 +1000 行

.gs
文件

欢迎文章、博客、视频等。

google-apps-script module code-organization project-organization global-scope
1个回答
0
投票

多年后,在回顾我自己的问题后,我得出的结论是:

  • 不需要那么多文件,也不需要那么多功能。大多数文件都是由诸如“学生,课程”之类的类组成,在像这个这样简单的项目中可能缺少这些类。我了解到,项目必须尽可能简单,并且应该明智地将时间花在相关任务上。
  • 适当的封闭和适量的抽象肯定会消除全球空间的污染。 Apps Script 的
    globalThis
    乍一看看起来有些过分;然而,使用情况告诉我,按
    ctrl
    +
    space
    后列出的每个项目都经过精心设计,变得简单,因为您会经常使用它们。

我曾经编写如下所示的代码:

function getSpreadSheet() {//code...};
function getStudentsSheet(){//code...};
funcrion getStudentsDataRange(){
    return getStudentsSheet().getDataRange()}
function getStudentsSheetValues(){
    return getStudentsSheetDataRange().getValues()};
function logValues() {
    console.log( getStudentsSheetValues() );
};

虽然可能很简单:

function logValues() {
    const id = '...'
    const values = SpreadsheetApp
        .openById(id)
        .getSheetByName('Students')
        .getDataRange().getValues();
    console.log(values);
}

有一点是少即是多,尤其是在抽象和继承方面。简单是关键。

© www.soinside.com 2019 - 2024. All rights reserved.