顧客がアクセス可能なAPIを定義する場合、次の中で推奨される業界慣行は何ですか。
a)それぞれが非常に狭く特定の目的を持つ一連の明示的なAPIメソッドを定義します。次に例を示します。
SetUserName <name>
SetUserAge <age>
SetUserAddress <address>
b)より一般化されたパラメータベースのAPIメソッドのセットを定義します。例:
SetUserAttribute <attribute>
enum attribute {
name,
age,
address
}
私の意見:
(a)に賛成
ブールベースのメソッド(EnableFooなど)の場合、意図がはるかに明確であり、将来拡張が必要になる可能性が低く、コードが読みやすくなるため、オプション(a)を明確に優先します。
たとえば、EnableDisableFooと呼ばれるメソッドは、有効にするか無効にするかを示すブールパラメータを取りますが、あまり明確ではなく、まとまりのある目的もありません。
問題がより複雑になるのは、複数のオプションがある場所です。
(b)に賛成
オプション(b)は、APIに拡張性を提供する優れた方法ですが、使いやすさが犠牲になります。オプション(a)を使用すると、APIメソッド名自体が、それが何をしているかを示すのに十分な情報を提供します。オプション(b)を使用すると、ユーザーはメソッド名と使用する適切な列挙/パラメーターの両方を検索する必要があります。理論的には、これはユーザビリティの観点からオプション(b)を悪化させますが、メソッドを少なくすることは良いことなので、これでも完全には当てはまりません。
他の考え
使いやすさと拡張性のバランスをとる必要があり、それらはしばしば互いに対立しています。しかし、APIデザイナーの意見に頼るのではなく、これを分析するためのより客観的な方法があると思います。
誰かがこれについて何か考えを持っていますか?