私は連動する部品 (サーバー、クライアント、ライブラリなど) を多数備えた製品を開発しています。そのうちの 1 つは、ユーザーが独自のクライアント側コード (Flickr API のようなもの) にリンクする小さなライブラリです。 Google マップ API)。そのライブラリを組み込むと、連動するすべてのビットが魔法のように接続されます。したがって、API の簡素化は主要かつ重要な目標です。
私がユーザーに公開する API には、合計 2 つのクラスと 7 つのパブリック メソッドがあります。簡単にピージー、レモン絞り。
しかし、そのシンプルさは注意深く作られた幻想です。私が配布しているライブラリは、実際には別のライブラリに依存しており、独自の 136 のクラス (および 1000 以上のパブリック メソッド) があります。ビルド プロセス中に、API コンシューマによる統合と展開を容易にするために、2 つのライブラリを 1 つの成果物にリンクします。
私が今直面している問題は、エンド ユーザー (自分のソフトウェアを統合して独自の機能を強化するアプリケーション開発者) に、不必要な複雑さの嵐に溺れて、余計な面倒なことに悩まされたくないということです。
外から見ると、ライブラリにはちょうど 2 つのパブリック クラスと、ちょうど 7 つのパブリック メソッドが含まれているように見えるはずです。
自分のプロジェクトでは、この種のことをどのように処理していますか? 私は、言語にとらわれないソリューションや、さまざまな言語、コンパイラ、ビルド ツールのさまざまな手法に興味があります。
私の特定のケースでは、SWC ライブラリ ファイルを使用してフラッシュ プラットフォーム (AIR/Flex/Actionscript) 用に開発しています。ビルド方法は Java プラットフォームに類似しており、すべてのクラスが同じ可視性を持つ zip コード モジュールにバンドルされています (Actionscript SWC ファイルは、概念的には Java JAR ファイルとほぼ同じです)。
.NET には、クラスとメソッドの「内部」修飾子がありませんか? それはまさに私が探しているものであり、SWC 境界間のクラスの可視性を隠すためのトリッキーなテクニックを誰かが知っているなら、ぜひ聞いてみたい.