>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 セキュリティ
JavaScript

Clean Code JavaScript - 同事に見せても恥ずかしくないコードを書く方法

94,452 スター

古いコードを開いたとき、自分の意図が分からなくなる経験はありませんか?あるいは、同僚がスクリプトの手伝いを頼んで来て、何時間もかけて解読しなければならない経験は?Clean Code JavaScriptリポジトリは、コードを理解可能で保守可能、プロフェッショナルにする実践的なルールのコレクションです。

なぜクリーンコードがそんなに重要なのか?

JavaScriptで15年以上働いてきた中で、何百ものプロジェクトを見てきました。そして大半の問題はアルゴリズムの複雑さではなく、コードの読みにくさにあります。コードを書く時間よりも読む時間の方が10倍も多いのです。Clean Code JavaScriptは、Robert Martinの名著「Clean Code」をJavaScriptの世界に適応させたものです。

リポジトリの作者Ryan McDermott氏によると:

「すべてのコードは、湿った粘土が最終的な形を取るように、粗い下書きとして始まります。仲間とレビューしながら、不完全さを削り取っていくのです。」

リポジトリから学ぶ5つの主要原則

1. 意味のある変数名

クリーンコードへの第一歩は、適切な命名です。変数名は次の条件を満たす必要があります:

  • 発音可能であること
  • 検索可能であること(Ctrl+Fで見つけられる)
  • 精神的な翻訳を必要としないこと

悪い例:

const yyyymmdstr = moment().format('YYYY/MM/DD');

良い例:

const currentDate = moment().format('YYYY/MM/DD');

2. 関数は1つのことだけを行うべき

このエラーは90%のプロジェクトで見られます。関数は小説ではなく、短い詩であるべきです。

悪い例:

function emailClients(clients) {
  clients.forEach(client => {
    const record = database.lookup(client);
    if (record.isActive()) email(client);
  });
}

良い例:

function emailActiveClients(clients) {
  clients.filter(isActiveClient).forEach(email);
}

function isActiveClient(client) {
  const record = database.lookup(client);
  return record.isActive();
}

3. 副作用を避ける

関数は責任範囲外のものを変更すべきではありません。これは配列やオブジェクトを操作する際に特に重要です。

悪い例:

const addItemToCart = (cart, item) => {
  cart.push({ item, date: Date.now() });
};

良い例:

const addItemToCart = (cart, item) => {
  return [...cart, { item, date: Date.now() }];
};

4. JavaScriptのためのSOLID

SOLID原則はJavaやC#だけでなく動作します。JSでの依存性反転の例:

悪い例:

class InventoryTracker {
  constructor(items) {
    this.items = items;
    this.requester = new InventoryRequester();
  }
}

良い例:

class InventoryTracker {
  constructor(items, requester) {
    this.items = items;
    this.requester = requester;
  }
}

5. テスト容易性

クリーンコードはテスト可能なコードです。各関数は単一の責任と予測可能な結果を持つべきです。

悪い例:

describe('MomentJS', () => {
  it('handles all cases', () => {
    // 20 строк теста разных сценариев
  });
});

良い例:

describe('MomentJS', () => {
  it('handles 30-day months', () => {
    // один четкий сценарий
  });
  
  it('handles leap year', () => {
    // другой сценарий
  });
});

誰がこのリポジトリの恩恵を受けるのか?

  • ジュニア開発者:動作するコードと良いコードの違いを理解できます
  • チームリード:コードレビューにこれらの原則を活用できます
  • 講師:JavaScriptコースの実例として優れた例が得られます
  • フリーランサー:クライアントはクリーンで保守可能なコードを評価します

個人的な実装経験

私の実践では、1ファイル500行以上のコードが50ファイルあるプロジェクトがありました。Clean Code原則を実装した後:

  • 新機能の追加時間が40%減少
  • 本番環境のバグが3分の1に減少
  • 新しい開発者のオンボーディングが2倍高速化

使い始めるには?

  1. リポジトリをブックマークする
  2. 最もよく違反している2〜3のルールを選ぶ
  3. 新しいコードから適用を開始する
  4. 古いセクションを徐々にリファクタリングする

著者も言っているように:「これらのルールは教義ではなく、ガイドです。我々の職業は若く、まだ学んでいる最中です。」

リンク:

関連プロジェクト