「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ソリッド: S - 単一責任原則 (SRP)

ソリッド: S - 単一責任原則 (SRP)

2024 年 8 月 20 日に公開
ブラウズ:478

SOLID: S - Single Responsibility Principle (SRP)

希望小売価格の概要:
単一責任原則 (SRP) は、SOLID の 5 つの原則の 1 つであり、よりクリーンで持続可能なコードを作成するための一連のガイドラインです。 SRP では、クラスが変更する理由は 1 つだけであるべきだと述べています。つまり、クラスの責任または機能は 1 つだけである必要があります。この原則に従うと、コードの理解、保守、テストが容易になります。

希望小売価格の目的:

  • メンテナンスの簡素化: クラスの責任が 1 つだけなので、バグの特定と修正が容易になります。
  • 明確な責任: 各クラスには明確な目的があるため、コードが理解しやすくなります。
  • テスト容易性の向上: 単一の責任を持つクラスの分離とテストが容易になりました。
  • 変更の容易さ: 特定の責任を変更しても、システムの他の部分には影響しません。

悪い習慣の例 (クラス):
ここには、ユーザーの管理と通知の送信という複数のことを行う UserService クラスがあります。

class UserService {
  createUser(user: User): void {
    // Logic to create user
  }

  deleteUser(userId: string): void {
    // Logic to delete user
  }

  notifyUser(userId: string, message: string): void {
    // Logic to notify user
  }
}

このアプローチでは、UserService クラスにはユーザーの管理と通知の送信という複数の役割があります。これは希望小売価格に違反します。

良い実践例 (クラス):
SRP を適用するには、責任を個別のクラスに分割します。

class UserService {
  createUser(user: User): void {
    // Logic to create user
  }

  deleteUser(userId: string): void {
    // Logic to delete user
  }
}

class NotificationService {
  notifyUser(userId: string, message: string): void {
    // Logic to notify user
  }
}

現在、UserService はユーザーの作成と削除のみを処理し、NotificationService は通知を処理します。各クラスには、SRP に続く単一の責任があります。

悪い習慣の例 (関数):
ここには、ユーザーの作成と通知の送信という複数のことを行う関数があります。

function createUserAndNotify(user: User, message: string): void {
  // Logic to create user
  // Logic to send notification
}

このアプローチでは、createUserAndNotify 関数にはユーザーの作成と通知の送信という複数の役割があります。これは希望小売価格に違反します。

良い実践例 (関数):
SRP を適用するには、責任を個別の機能に分割できます。

function createUser(user: User): void {
  // Logic to create user
}

function notifyUser(userId: string, message: string): void {
  // Logic to notify user
}

// Using the separated functions
createUser(newUser);
notifyUser(newUser.id, 'Welcome!');

現在、createUser 関数はユーザーの作成のみを処理し、notifyUser は通知を処理します。各機能には、SRP に続く単一の責任があります。

TypeScript を使用した React Native のアプリケーション:
タスク管理アプリを開発していると想像してください。タスク管理ロジックと通知ロジックを別のクラスに分離することで、SRP を適用できます。

悪い習慣の例 (クラス):

class TaskService {
  addTask(task: Task): void {
    // Logic to add task
  }

  removeTask(taskId: string): void {
    // Logic to remove task
  }

  notifyTaskDue(taskId: string): void {
    // Logic to notify that the task is due
  }
}

良い実践例 (クラス):

class TaskService {
  addTask(task: Task): void {
    // Logic to add task
  }

  removeTask(taskId: string): void {
    // Logic to remove task
  }
}

class TaskNotificationService {
  notifyTaskDue(taskId: string): void {
    // Logic to notify that the task is due
  }
}

悪い習慣の例 (関数):

function addTaskAndNotify(task: Task): void {
  // Logic to add task
  // Logic to notify that the task is due
}

良い実践例 (関数):

function addTask(task: Task): void {
  // Logic to add task
}

function notifyTaskDue(taskId: string): void {
  // Logic to notify that the task is due
}

// Using the separated functions
addTask(newTask);
notifyTaskDue(newTask.id);

責任を分割することで、アプリケーションの保守と拡張が容易になります。

結論:
単一責任の原則に従うと、コードをクリーンで整理された状態に保ち、保守が容易になります。 TypeScript を使用した React Native 開発に SRP を適用すると、よりモジュール化されたテスト可能なコードが生成されます。この原則のすべての利点を享受するために、クラスと関数を 1 つの責任に集中させることを常に忘れないでください。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/paulocappa/solid-day-1-s-single-responsibility-principle-srp-1f5k?1 侵害がある場合は、削除するために[email protected]に連絡してください。それ
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3