依存性注入を使用すると、オブジェクトの外部にあるオブジェクトとスコープを直接参照することを回避できます。代わりに、注入された依存関係を参照します。
グローバル関数ライブラリの場合のベスト プラクティスを知りたいです。現在、関数をサーバー スコープに格納しています。私のプロジェクトをすぐにオープンソースにして、他の開発者が簡単に理解できるようにしたいと思っています。私は、アプリケーションの単体テストをより簡単に記述し、より疎結合にしたいと考えています。
グローバル関数を使用するすべてのオブジェクトにサーバー スコープを挿入する必要がありますか?
または、ルールに例外を設けて、これらの関数を参照するときに「server.functions.myFunction()」スコープをコンポーネントに直接配置する必要がありますか?
コード例を次に示します。
方法 1:
<cfcomponent>
<cffunction name="init">
<cfscript>
server.functions.myFunction();
</cfscript>
</cffunction>
</cfcomponent>
方法 2:
<cfcomponent>
<cffunction name="init">
<cfargument name="serverScope" type="struct" required="yes">
<cfscript>
variables.serverScope=arguments.serverScope;
variables.serverScope.functions.myFunction();
</cfscript>
</cffunction>
</cfcomponent>