> Review-Ready Design Blog

レビューの指摘、
毎回イチから書くのダルくない?🥺

「AIが書いたんで」ってそのまま出してくる子いるじゃん? 5歳児でも分かるレベルまで噛み砕いてあるから、「これ読んで分かんなかったら知らんよ?」って送りつけちゃって。浮いた時間、自分のコードに使お?

Rea

安藤 れあ

毎回同じ指摘書くのダルいじゃん?🫶 リンク1本送って、あとはれあに任せちゃって✨

> Copy & Paste

そのまま貼れるレビュー文

長文で説教しなくていいよ。PRやSlackに貼って、記事で前提を揃えてから直してもらえばOK。

責務が混ざってるとき
この変更、実装を足す前に「このクラスの仕事が何個あるか」を整理したほうがいいです。まずこれを読んでから分け方を見直してください。
https://dev-here.tech/blog/god-class-and-single-responsibility-principle
記事を見る
依存がベタ付きなとき
今の作りだと相手の都合にべったりで、差し替えた瞬間に広く壊れます。依存の向きを先に揃えたいです。これを前提にもう一度見直してください。
https://dev-here.tech/blog/coupling-and-dependency-inversion-principle
記事を見る
命名がふわふわなとき
この名前だと、読む人が中身を開くまで意味が分かりません。何をするものかが名前だけで伝わる状態に直したいです。先にこれを読んで整理してください。
https://dev-here.tech/blog/mysterious-name-and-intention-revealing-names
記事を見る
例外を握りつぶしてるとき
この処理、直してるんじゃなくて隠してます。失敗したことを呼び出し側が分かる形に変えたいです。まずこの観点を揃えたいです。
https://dev-here.tech/blog/exception-swallowing-and-responsible-handling
記事を見る
チームのリポジトリに入れちゃってよ

「責務混ざってない?」「依存の向き大丈夫?」みたいなレビュー、毎回口で言わなくてよくなる。チェックリストに記事リンクもついてるから、指摘の根拠も一緒に渡せるんだよね。

やることは1個だけ

リポジトリの templates/github/PULL_REQUEST_TEMPLATE.md を自分のリポジトリの .github/ にコピーするだけ。PR作るたびに設計チェックリストが自動で出るよ。

GitHub でリポジトリを見る

中身ただのMarkdownだからコードが動いたりしないよ。ライセンスもCC BY 4.0で商用OK。安心して持ってって。

> Ready-made Sets

送りつけ3本セット

毎回1本ずつ選ぶのがダルいなら、相手の状態ごとにまとめて送ればいいじゃん。

若手に最初に送る3本

とりあえず動くコードから一段上がってほしいときに送るセット。責務、命名、例外の3つを先に揃える。

レビューで毎回荒れる人向け3本

なんでダメかは言われるけど、どこから直せばいいか分からない人向け。設計判断の軸を先に入れる。

設計を言語化できない人向け3本

モヤっとするけど説明が難しいときに、自分のレビュー観点を整えるためのセット。送る側にも効くやつ。

> Symptoms

症状から探す

原則名で探さなくていいよ。現場で実際に出る「これヤバくない?」から辿れば十分。

誰が何してるか分からん

名前がふわふわ、なんでその設計にしたか残ってない、層をまたいで参照が暴れてる。レビューが噛み合わない原因になりがち。

とりあえず動いたけど後で死ぬ

例外を握りつぶす、先回りでまとめすぎる、どこかが書き換える前提で状態を持つ。あとで全員しんどくなるやつ。

> All Articles

記事一覧

ここからは全部入り。症状から探してもいいし、気になるタイトルから直接読んでもいいよ。

そのテーブル、typeカラムで種類分けてるのにNULLだらけじゃない?🫠
そのテーブル、typeカラムで種類分けてるのにNULLだらけじゃない?🫠
typeカラムで種類を分けた1テーブルに全部突っ込んだ結果、NULLだらけ・バリデーション崩壊・カラム爆発の三重苦。病院のカルテの話とSQLで、typeカラム地獄のヤバさと「テーブルを種類ごとに分ける」考え方がわかる。
引数の順番ミスっただけで、別人の口座に送金しちゃってない?💔
引数の順番ミスっただけで、別人の口座に送金しちゃってない?💔
関数の引数にstringが3個も4個も並んでると、順番を入れ替えても型チェックはスルー。銀行の送金伝票の話とPythonのコード例で、スッピンstringのヤバさと「型そのものに意味を持たせる」Value Objectの考え方がわかる。
GETしただけなのにデータ変わってるんだけど?👀
GETしただけなのにデータ変わってるんだけど?👀
GETしたらデータが変わる、1件だけ見るAPIで全件返ってくる、PUTで全消え——HTTPメソッドがウソつくAPI設計あるある。図書館の受付の話とPythonのコード例で、RESTfulなAPI設計の考え方がわかる。
そのif-else if、通知手段が増えるたびに関係ない関数まで触ってない?👀
そのif-else if、通知手段が増えるたびに関係ない関数まで触ってない?👀
通知手段を1個追加するだけで、送信・整形・レート制限の関数を全部書き換えることになる地獄コード。社内広報担当の話とPythonのコード例で、ポリモーフィズムをいつ取り入れるかと、第3回OCPとの違いがわかる。
層ごとにprovider置いたら参照違反になるの、なんでなん?💔
層ごとにprovider置いたら参照違反になるの、なんでなん?💔
Clean Architecture + MVVMで各層にproviderを置いたらimportが逆流する問題。社内連絡先リストの話とDart/Riverpodのコード例で、配線コードをバラまくヤバさと「Composition Root」で1箇所にまとめる考え方がわかる。
そのインターフェース、使わないメソッドまで実装させてない?🥺
そのインターフェース、使わないメソッドまで実装させてない?🥺
使わないメソッドをpassで埋めたクラス、テストはグリーンなのに本番で0円が帳簿に載る。万能社員マニュアルの話とコード例で、全盛りインターフェースのヤバさと「必要な分だけ渡す」ISPの考え方がわかる。
「同じ型だよ」って聞いたから差し替えたのに壊れたんだけど?🫣
「同じ型だよ」って聞いたから差し替えたのに壊れたんだけど?🫣
「同じ型だから大丈夫」って差し替えたら本番で爆発——子クラスが親の約束を裏切ってた。コンビニの代打バイトの話とコード例で、約束破りサブクラスのヤバさと「差し替えても壊れない」LSPの考え方がわかる。
そのバグ、「誰かが書き換えた」せいじゃない?🤯
そのバグ、「誰かが書き換えた」せいじゃない?🤯
どこからでも読み書きできるグローバル変数が、動く順番が変わった瞬間に全部壊す。居酒屋の共有ホワイトボード事件とコード例で、誰でも書き換えボードのヤバさと「一回作ったら変えない」考え方がわかる。
そのController、全部自分でやろうとしてない?😤
そのController、全部自分でやろうとしてない?😤
Controllerに800行のビジネスロジックが詰まったコード、メール件名1行変えるだけで全体が壊れる。ワンオペ開業医の話とコード例で、なんでもフロントマンのヤバさと「役割で層を分ける」考え方がわかる。
そのtry-except、エラーを直してるんじゃなくて隠してるだけじゃん🫣
そのtry-except、エラーを直してるんじゃなくて隠してるだけじゃん🫣
except Exception: passだらけのコードは、エラーを直してるんじゃなく隠してるだけ。メーカーのクレーム握りつぶし事件とコード例で、握りつぶしのヤバさとちゃんとしたエラーの伝え方がわかる。
そのクラス、「将来使うかも」で作ったやつ、1年後に誰も触れてなくない?😶
そのクラス、「将来使うかも」で作ったやつ、1年後に誰も触れてなくない?😶
「将来使うかも」で作った汎用クラスが1年後に誰にも使われてない。6LDKの一人暮らしとコード例で、先読み設計のヤバさと「今必要なものだけ作る」YAGNIの考え方がわかる。
その変数名、3ヶ月後に自分で読んで「これ何だっけ」ってなるやつじゃん?🥺
その変数名、3ヶ月後に自分で読んで「これ何だっけ」ってなるやつじゃん?🥺
flag, data, tmpって名前の変数だらけのコードは、3ヶ月後の自分すら読めなくなる。会計事務所の引き出しラベル問題とコード例で、幽霊ネームのヤバさと「読んだ瞬間わかる名前」の付け方がわかる。
その設計判断、なんで選んだか3秒で言える?🤔
その設計判断、なんで選んだか3秒で言える?🤔
設計判断の理由がコードに残ってないと、担当者が辞めた瞬間に全員が同じ失敗を繰り返す。タクシー会社のベテラン退職の話とコード例で、「頭の中にしかない知識」のヤバさとADRでの書き残し方がわかる。
そのテーブル、全部入ってるやつじゃない?😬
そのテーブル、全部入ってるやつじゃない?😬
1テーブルに全データを詰め込んだ結果、住所変更1つで37行の手動修正と深夜のクレーム対応が発生。食品メーカーのExcel管理の話とSQLで、神テーブルのヤバさとデータの分け方(正規化)がわかる。
新機能追加のたびに、なんか動いてたコードが死にかけてない?🫠
新機能追加のたびに、なんか動いてたコードが死にかけてない?🫠
新機能追加のたびに既存コードを書き換えて壊すifの積み重ね。レストランの厨房リフォームの話とコード例で、上書き地獄のヤバさと「追加するだけで済む」OCPの考え方がわかる。
そのコード、ベンダーが変わっただけで全員残業になるやつじゃん💔
そのコード、ベンダーが変わっただけで全員残業になるやつじゃん💔
特定のベンダーにべったりなコードは、切り替えのたびに全部書き直すハメになる。建設会社の資材調達の話とコード例で、ベタ付きのヤバさと「間にルールを挟む」DIPの考え方がわかる。
そのクラス、触るたびに何か壊れるやつになってない?🥺
そのクラス、触るたびに何か壊れるやつになってない?🥺
1000行超えのクラス、触るたびに関係ない場所が壊れる、誰も触りたくない——それ全部ゴッドクラスのせい。田中さんの悲劇とコード例で、仕事の分け方(SRP)がわかる。
経歴書の文字列だけで、あなたのスキル伝わってる?🥺
経歴書の文字列だけで、あなたのスキル伝わってる?🥺
経歴書の文字列だけじゃ伝わらないエンジニアの「リアル」を、仕事仲間のクチコミとAIの忖度なし価値観診断で見えるようにする。Dev-Hereの考え方を語る。
スキルシートに嘘ないのに面接で詰むの、なんでなん?😭
スキルシートに嘘ないのに面接で詰むの、なんでなん?😭
経歴書を「転職するときに作るもの」だと思ってたら遅い。採用側は今のあなたしか見てない。Dev-Hereなら経歴のまとめて同期、7段階スキルレベル、仕事仲間のクチコミからAI価値観診断まで、エンジニアの「今」が全部見える。