「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 1 レベルの抽象化: クリーンな関数の鍵

1 レベルの抽象化: クリーンな関数の鍵

2024 年 11 月 7 日に公開
ブラウズ:388

One Level of Abstraction: The Key to Clean Functions

関数を見て、その複雑さに迷ったことはありますか?クリーンなコードの基本原則を探ってみましょう。関数は 1 つのレベルの抽象化のみを維持する必要があります。

Web アプリケーションでのユーザー作成の実際の例を次に示します:

// ❌ A function doing too many things at different abstraction levels
function createUser(userData) {
  // Validate data
  if (!userData.email || !userData.email.includes('@')) {
    return 'Invalid email';
  }
  if (userData.password.length 



この関数は、さまざまなレベルの抽象化を混合します:

  • 高レベルのビジネス ロジック (ユーザー作成フロー)
  • 中間レベルの操作 (データ検証、フォーマット)
  • 低レベルの詳細 (パスワードハッシュ)

単一レベルの抽象化原則に従ってリファクタリングしましょう:

// ✅ Clean version with one level of abstraction
function createUser(userData) {
  const validationError = validateUserData(userData);
  if (validationError) return validationError;

  const securePassword = hashPassword(userData.password);
  const formattedUser = formatUserData(userData.email, securePassword);

  return saveUserToDatabase(formattedUser);
}

function validateUserData({ email, password }) {
  if (!email || !email.includes('@')) return 'Invalid email';
  if (password.length 



このアプローチの利点

  1. 可読性: メイン関数は、高レベルで何が起こっているかを説明する物語のように読めます
  2. 保守性: 各機能は単一の責任を持ち、変更をより安全にします
  3. テスト可能性: 各ロジックを個別にテストできます
  4. 再利用性: これらの焦点を当てた機能は他のコンテキストで再利用できます

重要なポイント

関数を記述する場合:

  • 1 つの抽象レベルに集中させてください
  • 複雑な操作を適切な名前の関数に抽出します
  • メイン関数にストーリーを持たせる
  • 各関数をプロセスの 1 つのステップとして考えてください

覚えておいてください: 同じ関数内で「どのように」と「何を」を混在させる場合は、おそらく複数のレベルの抽象化を扱っていることになります。分割してください!

リリースステートメント この記事は次の場所に転載されています: https://dev.to/56_kode/one-level-of-abstraction-the-key-to-clean-functions-2ekb?1 侵害がある場合は、[email protected] までご連絡ください。それを削除するには
最新のチュートリアル もっと>

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

Copyright© 2022 湘ICP备2022001581号-3