Classes are Useful

次の構造を持つことは非常に一般的です。

function foo() {
    let someProperty;

    // Some other initialization code

    function someMethod() {
        // Do some stuff with `someProperty`
        // And potentially other things
    }
    // Maybe some other methods

    return {
        someMethod,
        // Maybe some other methods
    };
}

これはリビーリングモジュールパターン(revealing module pattern)と呼ばれ、JavaScriptではかなり一般的です(JavaScriptのクロージャを利用しています)。

ファイルモジュール(グローバルスコープは良くないので、あなたは本当にそれを使うべきです)を使用している場合、あなたのファイルは事実上同じです。しかし、人々が次のようなコードを書くケースがあまりにも多くあります。

let someProperty;

function foo() {
   // Some initialization code
}
foo(); // some initialization code

someProperty = 123; // some more initialization

// Some utility function not exported

// later
export function someMethod() {

}

私は継承が大好きではありませんが、私は人々がクラスを使用することで、コードをより良く整理することができる、ということを発見しました。同じ開発者が直感的に次のように書きます:

class Foo {
    public someProperty;

    constructor() {
        // some initialization
    }

    public someMethod() {
        // some code
    }

    private someUtility() {
        // some code
    }
}

export = new Foo();

また、単に開発者のことだけでなく、クラスを使って、優れた視覚化を実現する開発ツールを作成することはずっと一般的であり、また、チームが理解し維持する必要があるパターンが1つ少なくなります。

PS:_shallow_なクラス階層に関して、それが大幅な再利用とボイラープレートの削減を提供する場合、私の意見には間違いがありません。

最終更新