1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

コーディングで意識したい基本原則まとめ

Posted at

挨拶

こんにちは。

今回は最近自分が意識している「コーディング指針」について、備忘録も兼ねてまとめてみようと思いました。

それではよろしくお願いします。

はじめに

コードを書くとき、ただ「動けばいい」ではすぐに破綻してしまいます。
保守しやすく、読みやすいコードを書くためには いくつかの原則 を意識しておくことが大切です。

最初にまとめると、大事なのは以下3つです。

  • 「動けばいい」以上に大切な原則がある
  • DRY / SRP / KISS / YAGNI の4つを意識するだけでコードはぐっと読みやすくなる
  • 守れなかったときはリファクタリングで改善(既存処理を壊さないように注意)

ここでは上記項目に沿って、代表的な4つの原則を持ってきました。
まず簡単にコーディングにおいての基本原則を理解しましょう。

DRY(Don’t Repeat Yourself)

意味: 重複を避ける。
理由: 同じ処理が複数箇所にあると修正漏れや不整合が起きやすい。
 例: バリデーションをコントローラーごとに書くのではなく、FormRequestにまとめる。

SRP(Single Responsibility Principle / 単一責任の原則)

意味: クラス・メソッドは「たった1つの責任」だけ持つべき。
理由: 責務が混ざるとテストが難しくなるし、変更に弱い。
 例: コントローラーにDBアクセス・業務ロジック・レスポンス整形を全部書かない。

KISS(Keep It Simple, Stupid)

意味: 複雑にしない、シンプルを保つ。
理由: 複雑なコードはバグの温床になる。
 例: ネストの深いif文を早期リターンに変える。

YAGNI(You Aren’t Gonna Need It)

意味: 「いつか必要になるかも」で余計な実装をしない。
理由: 実際に必要になるのはごく一部で、不要なコードは保守コストを増やすだけ。
 例: 未来の要件を想定して抽象クラスやインターフェースを先に作らない。

その他よく出てくる考え方

  • リスコフの置換原則(LSP)やオープン・クローズド原則(OCP)などのSOLID原則。
  • まずはDRY・SRP・KISS・YAGNIを意識するだけで初心者のリファクタリングはぐっと進めやすい。

調べてわかりましたが、こんなにも原則というものが存在していたとは...
簡単にまとめるとこんな感じですね。

原則 意味 ポイント
DRY 繰り返しを避ける 処理はまとめて一箇所に
SRP 単一責任 クラス/関数は1つの責務
KISS シンプルに 複雑さを避ける
YAGNI 必要になるまで実装しない 過剰設計を防ぐ

おまけ:簡単な取得処理の実装例(Laravel)

NG例(コントローラーに全部書く)

コントローラーに一連の処理を書くと結構ゴチャつきますね。
あくまで例なので処理自体は短いですが...

public function show($id)
{
    $employee = DB::table('employees')->where('id', $id)->first();
    if (!$employee) return response()->json(['error' => 'not found'], 404);

    $department = DB::table('departments')->find($employee->department_id);
    return response()->json([
        'id' => $employee->id,
        'name' => $employee->name,
        'department' => $department?->name,
    ]);
}

改善例(サービスクラスに切り出す)

究極シンプルに取得処理をサービスに、あくまでコントローラーはそのサービスを使って取得するだけ。
これだけでもそれぞれが何をしているかは、さっきより細分化されてわかりやすいですね。

// Service
class EmployeeService {
    public function getWithDepartment($id) {
        return Employee::with('department')->find($id);
    }
}

// Controller
public function show($id, EmployeeService $service)
{
    $employee = $service->getWithDepartment($id);
    if (!$employee) return response()->json(['error' => 'not found'], 404);

    return new EmployeeResource($employee);
}

まとめ

二度目ですが、大事なのは以下3つです。

  • 「動けばいい」以上に大切な原則がある
  • DRY / SRP / KISS / YAGNI の4つを意識するだけでコードはぐっと読みやすくなる
  • 守れなかったときはリファクタリングで改善(既存処理を壊さないように注意)

終わりに

きっかけは、実際に開発現場に入ってから基礎知識や応用知識がつき、初めて自分の過去コードを見返したときに絶望したことです。

「なんでも動けばいいってもんじゃない」と痛感しましたね...

当初はとにかく動くものを作って、クライアントに納品で手一杯でしたが、ここ最近の過程を経て品質を意識する余裕ができてきたので、今後は意識せずとも基本原則を守っていきたいです。

以上。

1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?