我们知道单一指责原则的目的是只存在一个原因引起类的变化。那么是否可以这么理解,就是理想情况下,一个类只能有一个方法,但是这样做在实际开发过程中,会引起很多额外的麻烦,所以很多时候,it's hard to say。
可以这么理解吗?
走同样的路,发现不同的人生
いいえ、現時点では合理的な抽象化 (単一の責任 => 高い凝集性) を実行する必要があり、より詳細な抽象化 (リファクタリング) を実行するのが適切な時期です。 リファクタリングは製品の反復プロセスでは避けられず、不可能です。ワンステップで。
単一責任、つまり、クラスは 1 つのことに対してのみ責任を負う必要があります。 重要なのは、これがどの程度の粒度であると考えるかによって決まるということです? 文字列を小文字から大文字に変換することは 1 つのことです (1)。 文字列の扱いも大事です(2)。 (1) が責任だと思うなら、小文字を大文字に変換する、空でないことを判断するためのクラスを作成し、 のクラスを作成する必要があります。文字統計 クラスを作成する必要があります。 小写转大写就要写一个类, 判断非空要写一个类, 字符统计就要写一个类。 如果你认为(2)就是一个职责的话, 那么所有字符串处理的东西都在一个类似StringUtils(2) が責任だと思うなら、すべての文字列処理は StringUtils のようなクラスにあります。 つまり、これは実際には比較的抽象的なものであり、絶対的な基準はなく、特定のビジネスと一定の関係があります。
小文字を大文字に変換する
空でないことを判断する
のクラスを作成する必要があります。文字統計
小写转大写
判断非空
字符统计
StringUtils
方法が 1 つしかないということではなく、1 つの側面によってのみ引き起こされる変化です。この利点は、責任が明確で、構造が単純であり、結合が大規模な組織に適していることです。 QQ のような複雑なアプリを想像してみてください。単一責任の原則が実装されていない場合、プログラムにどれだけのものが含まれ、変更がどの程度の影響を与えるかは誰にも分かりません。
いいえ、現時点では合理的な抽象化 (単一の責任 => 高い凝集性) を実行する必要があり、より詳細な抽象化 (リファクタリング) を実行するのが適切な時期です。 リファクタリングは製品の反復プロセスでは避けられず、不可能です。ワンステップで。
単一責任、つまり、クラスは 1 つのことに対してのみ責任を負う必要があります。
重要なのは、これがどの程度の粒度であると考えるかによって決まるということです?
文字列を小文字から大文字に変換することは 1 つのことです (1)。
文字列の扱いも大事です(2)。
(1) が責任だと思うなら、
小文字を大文字に変換する
、空でないことを判断する
ためのクラスを作成し、のクラスを作成する必要があります。文字統計
クラスを作成する必要があります。小写转大写
就要写一个类,判断非空
要写一个类,字符统计
就要写一个类。如果你认为(2)就是一个职责的话, 那么所有字符串处理的东西都在一个类似
StringUtils
(2) が責任だと思うなら、すべての文字列処理はStringUtils
のようなクラスにあります。つまり、これは実際には比較的抽象的なものであり、絶対的な基準はなく、特定のビジネスと一定の関係があります。
方法が 1 つしかないということではなく、1 つの側面によってのみ引き起こされる変化です。この利点は、責任が明確で、構造が単純であり、結合が大規模な組織に適していることです。 QQ のような複雑なアプリを想像してみてください。単一責任の原則が実装されていない場合、プログラムにどれだけのものが含まれ、変更がどの程度の影響を与えるかは誰にも分かりません。