1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「動けばいいんでしょ?」から卒業した日。新人が最初に身につけるべき「読まれるコード」の書き方

1
Posted at

正解なのに、怒られる

初めて機能実装のタスクをもらい、必死で書いたコード。テストも通り、ブラウザ上でも意図通りに動いています。
意気揚々とPRを出すと、先輩からのレビューコメント。

「動いてるけど、変数名を見直しましょう」
「このif文のネストが深すぎます。早期リターンを使いましょう」
「マジックナンバーに名前をつけましょう」

内心、不満でした。
「動いてるんだからいいじゃん。なんで文句つけるの?」
しかし数ヶ月後、自分が過去に書いたコードの機能追加を任された時、初めてその意味を理解しました。
自分で書いたはずのコードなのに、何をしているか1行も思い出せない。

「動くコード」と「読めるコード」の差

ケース1:変数名

// ❌ 動くけど読めない
const d = new Date();
const a = d.getTime() - s.getTime();
if (a > 86400000) { ... }
// ✅ 動くし読める
const currentDate = new Date();
const elapsedMilliseconds = currentDate.getTime() - startDate.getTime();
const ONE_DAY_IN_MS = 24 * 60 * 60 * 1000;
if (elapsedMilliseconds > ONE_DAY_IN_MS) { ... }

ケース2:ネストの深さ(早期リターン)

// ❌ ネスト地獄
function processUser(user) {
  if (user) {
    if (user.isActive) {
      if (user.hasPermission) {
        // ...本来の処理(ここにたどり着くまで頭が疲れる)
      }
    }
  }
}
// ✅ 早期リターンでフラット
function processUser(user) {
  if (!user) return;
  if (!user.isActive) return;
  if (!user.hasPermission) return;
  // ...本来の処理(一目瞭然)
}

ケース3:マジックナンバー

// ❌ 86400000って何?
if (elapsed > 86400000) { ... }
// ✅ 名前がついていれば一瞬で分かる
const ONE_DAY_IN_MS = 24 * 60 * 60 * 1000;
if (elapsed > ONE_DAY_IN_MS) { ... }

なぜ「読めるコード」が大事なのか

プログラマは、コードを「書く」時間よりも「読む」時間の方が圧倒的に長いからです。

Robert C. Martin『Clean Code』より:
「コードを読む時間と書く時間の比率は10:1を超える。
 新しいコードを書くためには、常に周囲の既存コードを読まなければならない」

あなたが書いたコードは、3ヶ月後の自分、先輩、そしてまだ見ぬ後輩が読みます。その時に「何をしているか」が一瞬で分かるコードは、チーム全員の時間を節約する最高の贈り物です。

明日から始められる3つの習慣

  1. 変数名に30秒悩むd ではなく currentDate。この30秒が、未来の30分の読解時間を節約する
  2. PRを出す前に「自分のdiffを声に出して読む」:声に出して読んで意味が通らない箇所は、他人にも伝わらない
  3. 先輩のコードから「良い命名」をパクる:上手い人のコードには、良い変数名・関数名の見本が詰まっている
    「動けばいい」は、趣味のコードなら正解です。でも、チームで作るプロダクトのコードは、「読めること」が最低限の品質です。この感覚を入社1年目で掴めたら、あなたの成長速度は圧倒的に加速します。
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?