reusability|再利用性を意識したコード設計とレビュー観点
reusability|再利用性を意識したコード設計とレビュー観点
概要
reusability(再利用性)は、同じ処理を何度も書かなくても済むコード構造のことを指します。
レビューの場面では「この処理、別の場所でも使えそうだな」「この関数、用途が狭すぎないか?」といった観点で評価されます。
再利用性は「短く書く」ではなく、「目的に応じてどこでも使えるようにする」設計視点です。
再利用性の判断ポイント
| 観点 | チェック項目 | 
|---|---|
| 責務の明確化 | 関数やクラスに単一の目的があるか | 
| 引数の汎用性 | 依存関係や前提条件が限定的すぎないか | 
| 副作用の少なさ | 外部状態に依存せず、純粋関数に近いか | 
| 出力の一貫性 | 同じ入力に対して同じ結果を返すか | 
| 抽象化の適切さ | 共通処理が適切な単位で切り出されているか | 
具体例:before / after
Before(用途限定の処理)
function renderAdminUser(user) {
  return `<div>${user.adminName}</div>`;
}After(役割を分離して再利用性を高める)
function renderUserName(user, labelKey = "name") {
  return `<div>${user[labelKey]}</div>`;
}引数の抽象化で、複数のユースケースに対応可能になります。
会話例:再利用性を巡るレビュー
Reviewer: このロジック、他の画面でも同じような処理が出てきそうですね。
Author: 確かに。ユーティリティ関数に切り出してみます。Reviewer: useEffect内の処理、他のコンポーネントにも応用できそうです。
Author: 共通hookに昇格させますね。再利用性を高める設計手法
- ユーティリティ関数やヘルパーの活用
 - カスタムhook(React)やサービス層(MVC)の分離
 - 汎用コンポーネント(UI部品)の整理と命名統一
 - DI(依存性注入)によるテスト容易性と再利用性の両立
 
// 再利用しやすいカスタムフックの例
function useFetch<T>(url: string) {
  const [data, setData] = useState<T | null>(null);
  useEffect(() => {
    fetch(url).then(res => res.json()).then(setData);
  }, [url]);
  return data;
}関連用語
readability:再利用性を高めるには、まず読みやすさが前提となるnaming:名前が適切でないと再利用が進まないresponsibility:責務の分離が再利用可能性を左右する
実務視点まとめ
reusabilityは短期的には「手間」に見えることもありますが、チームの生産性とメンテナンスコストに大きく関わる設計思想です。
レビューの段階で「これ、他でも使える?」と問いかけることが、将来の負債を未然に防ぐ鍵になります。