最終的に github にアップロードする予定のオープン ソース iOS ライブラリを Objective-C で作成しています。私のライブラリは、特定の関数に依存し、定義しています。たとえば...
CGFloat DegreesToRadians(CGFloat degrees);
UIColor RGB(int r, int g, int b);
これはすべて問題ありませんが、誰かが自分のライブラリを自分のプロジェクトに追加した場合、DegreesToRadians
またはRGB
関数を定義している場合、またはそれらを定義する別のライブラリを使用している場合は、Redfinition of DegreesToRadians
コンパイル エラーが発生します。
とにかく、関数の定義を整理したり、適切なキーワードを使用したり、#ifndef を使用したり、#import ステートメントを移動したり、関数がライブラリの内部にのみ効果的に存在し、外部に公開されないようにするためのその他の解決策を講じたりすることはできますか?紛争を起こさない?
警告:
これらは内部で広く使用され、コードのセマンティクスと可読性を損なうため、関数にプレフィックスを付けないことをお勧めします。
関数「静的」および関数を使用するクラス内で定義できることは承知していますが、これらの関数は多くのクラスで使用されるため、このアプローチは DRY 原則に違反します。
理想的な世界では、ユーザーはこのエラーを回避するためにライブラリ コードを変更したくないため、ライブラリ コードまたはその他の競合する可能性のあるライブラリ コードの定義をコメント アウトするだけでは受け入れられません。