![](https://cdn-ak-scissors.b.st-hatena.com/image/square/95f0c591d25929f75706dff72ccb679963023c0b/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F99747affdcf5496c8b85faa68d697a25%2Fslide_0.jpg%3F9597871)
エントリーの編集
![loading...](https://b.st-hatena.com/bdefb8944296a0957e54cebcfefc25c4dcff9f5f/images/v4/public/common/loading@2x.gif)
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
記事へのコメント35件
- 注目コメント
- 新着コメント
![Dai_Kamijo Dai_Kamijo](https://cdn.profile-image.st-hatena.com/users/Dai_Kamijo/profile.png)
Dai_Kamijo
オープンクローズド原則がなぜ大事か?を「バリエーション」からコードを保護すると言語化されてるのが素晴らしい。ストラテジパターンの利用とか、実は普段の実装でも無意識的にバリエーションの問題に対処していた
![pakkunflower pakkunflower](https://cdn.profile-image.st-hatena.com/users/pakkunflower/profile.png)
pakkunflower
新人はかなりおしい実装をしていると思う。URLを`$todo->getUrl()`に抽象化出来ることに気付いているから、タイトルも`$todo->formatTitle()`で抽象化できることに気付いてほしい。この手の説明は題材がすごく難しそう。
![kazutomo kazutomo](https://cdn.profile-image.st-hatena.com/users/kazutomo/profile.png)
kazutomo
俺ならTODO共通のインターフェースを定義してタイトルやURLを取れるようにして出力部分はベッタリ書くかな。新しいTODOで出力項目が増えたら、出力部分をどう拡張するかは増えたときに考えればいいじゃない?
![living living](https://cdn.profile-image.st-hatena.com/users/living/profile.png)
living
自分がこの要件をもらったら、Todoの基底クラスを抽出して、formatTitleは抽象メソッドにして、各クラスで実装する、くらいにするかなあ。Presenterの抽出は、cli/webといった表示方法の出し分けが必要になるまではやらない
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
![アプリのスクリーンショット](https://b.st-hatena.com/bdefb8944296a0957e54cebcfefc25c4dcff9f5f/images/v4/public/entry/app-screenshot.png)
いまの話題をアプリでチェック!
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
2018/03/11 リンク