sproutcore のビルド ツールについて学習しているときに、「protocols」という名前のディレクトリ内のファイルをビルドに含めることを許可する以下の構成オプションに出くわしました。
:load_protocols => {Boolean}
しかし、私の主な質問は、このprotocols
ディレクトリとは何ですか? その意味は何ですか?
sproutcore のビルド ツールについて学習しているときに、「protocols」という名前のディレクトリ内のファイルをビルドに含めることを許可する以下の構成オプションに出くわしました。
:load_protocols => {Boolean}
しかし、私の主な質問は、このprotocols
ディレクトリとは何ですか? その意味は何ですか?
今日、職場の先輩から返事が来ました。コミュニティと共有したい
プロトコルは、メソッドをクラスに含めずに JSDoc で文書化できるようにするために存在します。
たとえば、SC.ResponderProtocol は mouseDown のようなメソッドを文書化します。SC.View サブクラスに mouseDown を実装すると、それが呼び出されます。しかし、それを実装しない場合、SC.View にはデフォルトの (空の) 実装がなく、ノーオペレーション メソッド呼び出しを行うためのオーバーヘッドが追加されるだけです。
プロトコル ディレクトリはそれらをまとめる場所として存在しますが、実装は単なるプレースホルダーであり、実際にはどこでも使用されないため、製品ビルドには含まれません。
プロトコルは、実装のないさまざまなインターフェイスです。オブジェクトが特定のメソッド セットを実装すると予想される場合は、そのためのプロトコルを定義します。これは、プロトコル ディレクトリに配置されます。