文字列を逆にする必要があるとします。
reverseString というメソッドを作成できます。しかし、 StringReverser というクラスを作成することを検討しますか? そうでない場合、クラスを作成する必要があると判断するためにどのような基準を使用しますか?
PS: これは、システム分析のトピックに触れる可能性があります。質問に明確に答えるいくつかの質問や経験則に精通している場合は、共有してください.
これは裁判の呼びかけです。
ここでは、単一の操作を実行し、状態を必要としない単一の関数を見ています。さらに、ポリモーフィックな動作は必要ありません。このような状況では、static[1] クラスまたは というモジュールを作成し、StringUtils
そこに関数を配置します。他の同様の関数を同じクラス/モジュールに配置します。
[1] 「静的」とは、完全に静的メソッドで構成されるクラスを意味します。
インスタンス状態がある場合、つまり、メモリ内の永続オブジェクトを表している場合にのみ、インスタンス クラスを作成します。
文字列を逆にする行為が永続的な状態または構成を必要とする場合にのみ、クラスを作成しStringReverser
ますが、何も考えられないので、作成しません。
String.Concat(params String[] strings)
しかし、 methodと classの違いを考えてみStringBuilder
ましょう。どちらも同じことを行います (文字列を連結します) が、StringBuilder
コンシューマー間で渡すことができる状態を持っていますが、これは.Concat
メソッドでできることではありません。