[フレーム]
はてなブックマークアプリ

サクサク読めて、
アプリ限定の機能も多数!

アプリで開く

気に入った記事をブックマーク

  • 気に入った記事を保存できます
    保存した記事の一覧は、はてなブックマークで確認・編集ができます
  • 記事を読んだ感想やメモを書き残せます
  • 非公開でブックマークすることもできます
適切な情報に変更

エントリーの編集

loading...

エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。

タイトルガイドライン

このページのオーナーなので以下のアクションを実行できます

タイトル、本文などの情報を
再取得することができます
コメントを非表示にできます コメント表示の設定

ブックマークしました

ここにツイート内容が記載されます https://b.hatena.ne.jp/URLはspanで囲んでください

Twitterで共有

ONにすると、次回以降このダイアログを飛ばしてTwitterに遷移します

366users がブックマーク コメント 28

ガイドラインをご確認の上、良識あるコメントにご協力ください

0 / 0
入力したタグを追加

現在プライベートモードです 設定を変更する

おすすめタグタグについて

よく使うタグ

単一責任原則で無責任な多目的クラスを爆殺する - Qiita

ガイドラインをご確認の上、良識あるコメントにご協力ください

0 / 0
入力したタグを追加

現在プライベートモードです 設定を変更する

おすすめタグタグについて

よく使うタグ

はてなブックマーク

はてなブックマークで
関心をシェアしよう

みんなの興味と感想が集まることで
新しい発見や、深堀りがもっと楽しく

ユーザー登録

アカウントをお持ちの方はログインページ

記事へのコメント28

  • 注目コメント
  • 新着コメント
nakag0711
このケースはむしろビジネス上の方針変更があったということなので、当初の設計はその時点の判断としては間違ってない気がするな

その他
okzk
ダメな例がSRPには違反していないように見える。夏季割引仕様が「通常割引に加えて〇〇する」だったら実装としては正しいかもだし、そうじゃなければ流用すべきでないロジックを流用してバグったというだけで。

その他
buhoho
こういう型指定で外堀埋めるようガチガチに作れるのがオブジェクト指向のいいところだったなって、改めて勉強になった

その他
honma200
変化を予め予測した設計、拡張可能なようにするためにこう作るんだろうけど、自分みたいなのが使うとどこまでValueObjectにしていいか分かんなくなる奴だよね

その他
kazuau
要件定義で業務担当と夏季は条件こそ違うが割引自体の仕様は通常と同じって合意が(間違って)されてしまっているからこそこういうコードになのでは。どちらに倒すにせよ開発者が勝手なことしちゃ駄目だよねと。

その他
ssids
仕様を帰納的に抽象化するならば上位概念を作るべきで、似ている横に雑に寄せてはいけない的な

その他
iwasiman
爆殺のタイトルでミノ駆動さんの記事と思ったらそうだった。解説も丁寧です。

その他
yarumato
"まず定価を考えます。単なるint型変数と定義すると容易に不正値を代入できて正常動作に責任を持てない。オブジェクト指向におけるクラスは、インスタンス変数を正常に制御するメソッド (←ココ重要)を持つのが基本"

その他
okzk
okzk ダメな例がSRPには違反していないように見える。夏季割引仕様が「通常割引に加えて〇〇する」だったら実装としては正しいかもだし、そうじゃなければ流用すべきでないロジックを流用してバグったというだけで。

2020年12月09日 リンク

その他
otchy210
この割引の例だと、唯一の DiscountManager クラスに割引に関する責任を全て与え、外部から割引ルールを指定するように作りたくなるな。新たなキャンペーンの度にクラスが増えるのはちょっと。

その他
youko03
"単一責任原則を遵守するには、ビジネス理解が必須。 ビジネス理解が浅いと細かな概念の違いを区別できなくなる。 概念の違いを区別できないとロジックレベルで密結合になりがち。 ビジネス理解と概念分析には、ドメ

その他
tettekete37564
この概念が理解できていない新人とかに読ませるのに良さげ。

その他
blueeyedpenguin
クソコード書くの楽しそう

その他
kotetsu306
クソコードでは「getDiscountPrice」と英語的に変な名前だったのが、改善コードでは「DiscountedPrice」にさりげなく直してあるの好き

その他
katariya0116
あ、Javaってコンストラクタで例外投げて良いんだ......と思ったC++er

その他
itotto
[雑記[開発]

その他
su_zu_ki_1010
こういう視点は保守運用をやってないと出てこないよなぁ。開発だけして終わり、だと動けばええんねん!なスタイルになるので。

その他
Wafer
読みづらくて目が滑った

その他
aukusoe
"名前は点ではなく範囲 であることです"

その他
volx
"ビジネスへの関心が薄く理解が浅いと単一責任設計が困難"、"単に仕様通りに動くだけのコードを書くのは論外。仕様書には現れないビジネス概念は、意外なほど沢山あります。" ここが刺さりまくって泣いちゃった...

その他
yo_waka
"ビジネスに関心がないと単一責任設計が困難" 分かる

その他
kazkun
ちょっと面白そう。でもこれでもまだビジネスの実装の泥臭さが足りないな。

その他
nakag0711
nakag0711 このケースはむしろビジネス上の方針変更があったということなので、当初の設計はその時点の判断としては間違ってない気がするな

2020年12月09日 リンク

その他
hiroaki256
それは文脈、意味合いが違っていたからです。 「300円割り引く」仕様が最初たまたま同じであっただけで、あれらは 通常割引金額 夏季限定割引金額

その他
tkrd
http://blog.cleancoder.com/uncle-bob/2014/11/24/FPvsOO.html

その他
NOV1975
まあ、最初からこうなることは少ない気もする。

その他
peketamin
"概念が違えばDRYにすべきではないのです" それそれ。

その他
password1234
重箱の隅をつつくようだけどMIN_AMOUNT = 0 とする無駄な定数化は好きではないな

その他
buhoho
buhoho こういう型指定で外堀埋めるようガチガチに作れるのがオブジェクト指向のいいところだったなって、改めて勉強になった

2020年12月08日 リンク

その他
iekusup
ほー。

その他
rgfx
お、クソコード動画の人か

その他

注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています

リンクを埋め込む

以下のコードをコピーしてサイトに埋め込むことができます

プレビュー
アプリのスクリーンショット
いまの話題をアプリでチェック!
  • バナー広告なし
  • ミュート機能あり
  • ダークモード搭載
アプリをダウンロード

関連記事

usersに達しました!

さんが1番目にブックマークした記事「単一責任原則で無...」が注目されています。

気持ちをシェアしよう

ツイートする

単一責任原則で無責任な多目的クラスを爆殺する - Qiita

この記事は クラウドワークスアドベントカレンダー2020 8日目の記事です。 概要 こんにちは、クソコード... この記事は クラウドワークスアドベントカレンダー2020 8日目の記事です。 概要 こんにちは、クソコードを爆殺リファクタリングするのが大好きなミノ駆動です。 今回は単一責任原則の話です。 単一責任原則はSOLID原則のひとつとして有名で、2020年のオブジェクト指向カンファレンスのアンケートでも、SOLID原則の中で最も人気がありました。 皆さんは単一責任原則を遵守した設計をしていますか。 どんな構造が単一責任設計で、一方どんな構造が単一責任でない設計か、明確に意識していますか。説明できますでしょうか。 ところで「単一責任原則とはなんぞや」について、少なくとも私の観測範囲では、概念的な話にとどまっているものが多く、コードレベルで具体的に説明しているものは少ないように感じます。 そうした状況からか、単一責任原則の解釈が人によって違っていたりしているように感じます。 記事は、今一度単一責任

ブックマークしたユーザー

  • funghi_seven2025年06月03日 funghi_seven
  • dmizuno552025年03月07日 dmizuno55
  • sumiledmd2024年12月05日 sumiledmd
  • zinziroge2024年03月12日 zinziroge
  • Bioegg2024年03月11日 Bioegg
  • ozkey2024年03月11日 ozkey
  • dkobacco2024年03月11日 dkobacco
  • bayan2024年03月11日 bayan
  • techtech05212023年05月06日 techtech0521
  • knj29182023年01月29日 knj2918
  • yamashiro01102022年11月21日 yamashiro0110
  • meu0u0meu2022年10月09日 meu0u0meu
  • shihiro32022年06月24日 shihiro3
  • yamadar2022年02月25日 yamadar
  • cyber_snufkin2021年12月30日 cyber_snufkin
  • t-namikata2021年12月15日 t-namikata
  • rquery-102021年12月05日 rquery-10
  • uniom2021年11月08日 uniom
すべてのユーザーの
詳細を表示します

ブックマークしたすべてのユーザー

同じサイトの新着

同じサイトの新着をもっと読む

いま人気の記事

いま人気の記事をもっと読む

いま人気の記事 - テクノロジー

いま人気の記事 - テクノロジーをもっと読む

新着記事 - テクノロジー

新着記事 - テクノロジーをもっと読む

同時期にブックマークされた記事

いま人気の記事 - 企業メディア

企業メディアをもっと読む

はてなブックマーク

公式Twitter

はてなのサービス

Copyright © 2005-2025 Hatena. All Rights Reserved.
設定を変更しましたx

AltStyle によって変換されたページ (->オリジナル) /