APIをロックインする
APIを効果的に構築する技術は、構造に関することと同じくらい期待を管理することです。
APIと言うとき、パブリック/内部クラス/メソッドの名前とアクセスレベル(プライベート/パブリック/内部)を具体的に参照しています。
コードがプライムタイムの準備が整っていないのではないかと心配している場合は、最初は常にベータ版として公開できます。
リリース:
ベータ版(1.0より前)
- 複数のAPI破壊変更が含まれる場合があります
- バージョン間の後方互換性の変更がない可能性があります
- ポーランド語の欠如があるかもしれません
公式(1.0+)
- APIは次のメジャーリリースまでロックされています
- 導入された変更により、後方互換性が保証されます。
マイナー(例1.1)
- バグ修正や機能の実装を含む
- 追加することはできますが、定義済みのAPIを削除することはできません
APIをバトル強化する必要があると思われる場合は、しばらくベータ版としてリリースしてください。これは、使用可能であることを示していますが、本番および/またはミッションクリティカルなコードには使用しないでください。
多くの人々は番号付きバージョン管理スキームをホグウォッシュのように扱いますが、効果的に使用されると、構造を整理するまで小刻みにスペースを提供することができます。
それがどのように使用されるかについてのあなたの仮定は間違っています
どれだけうまく設計されていても、人々は悪用または代替使用を作成する方法を見つけます。
これを処理する1つの方法は、アクセサー(つまり、プライベート/パブリック/内部)を使用して可能な限り実装をロックダウンすることですが、設計やエンジニアリングの量はユーザーにコードをリリースするほどの洞察を与えません。
コードがどれだけ「完璧」になりうるかは問題ではなく、ユーザーはコードがそうでないことを証明します。
これが、完全な書き換えを行うよりも既存のコードベースを使用する方が常に優れている主な理由であると主張します。せいぜい完全な書き直しで肥大化を抑えることができますが、新しいコードベースには元のコードベースと同じ数の(場合によってはそれ以上の)バグが含まれる可能性が高くなります。
あなたの場合、あなたは最初から戦いを固めているので、あなたも始めることができます。
基地の残りがカバーされているように思えます。APIドキュメントは不可欠であり、テストは将来変更が行われたときに安定性を確保するのに役立ちます。
ログをグローバルに有効化/無効化/フィルタリングする方法が必要になるため、一貫性のあるロギングスキームを実装することは、本番用にコードがリリースされる前に重要になります。ところで、ほとんどの場合、ロギングは実際にはライブラリのインポートと、Debug.WriteLine()からLogging.Debug()、Logging.Info()、Logging.Error()などの出力呼び出しの変更のみを必要とします。ロガー自体は、構成、フィルタリング、および幅広い出力スキーム(exファイル、コンソールなど)の標準実装を提供するだけです。
それ以外は、コードを公開して使用することを検討します。少数のユーザーのみが開始する場合でも。