検索ガイド -Search Guide-

単語と単語を空白で区切ることで AND 検索になります。
例: python デコレータ ('python' と 'デコレータ' 両方を含む記事を検索します)
単語の前に '-' を付けることで NOT 検索になります。
例: python -デコレータ ('python' は含むが 'デコレータ' は含まない記事を検索します)
" (ダブルクオート) で語句を囲むことで 完全一致検索になります。
例: "python data" 実装 ('python data' と '実装' 両方を含む記事を検索します。'python data 実装' の検索とは異なります。)
  • ただいまサイドメニューのテスト中/ただいまサイドメニューのテスト中
  • ただいまサイドメニューのテスト中/ただいまサイドメニューのテスト中
  • ただいまサイドメニューのテスト中/ただいまサイドメニューのテスト中
  • ただいまサイドメニューのテスト中/ただいまサイドメニューのテスト中
  • ただいまサイドメニューのテスト中/ただいまサイドメニューのテスト中
  • ただいまサイドメニューのテスト中/ただいまサイドメニューのテスト中
  • ただいまサイドメニューのテスト中/ただいまサイドメニューのテスト中
  • ただいまサイドメニューのテスト中/ただいまサイドメニューのテスト中
  • ただいまサイドメニューのテスト中/ただいまサイドメニューのテスト中
  • ただいまサイドメニューのテスト中/ただいまサイドメニューのテスト中
  • ただいまサイドメニューのテスト中/ただいまサイドメニューのテスト中
>>
practical_python_design_patterns

Practical Python Design Patterns - Python で学ぶデザインパターン: The Adapter Pattern - Part. 2 「DRY 原則」の巻 投稿一覧へ戻る

Published 2022年5月30日20:43 by mootaro23

SUPPORT UKRAINE

- Your indifference to the act of cruelty can thrive rogue nations like Russia -

Don't Repeat Yourself (DRY)
(DRY 原則)

DRY のようなデザイン原則 (design principles) は、乗り越えなければならない問題や挑戦が渦巻くソフトウェア開発において、成功に導く一条の光を投じてくれるものです。それらは、クリーン (clean)、明確 (clear)、維持可能 (maintainable) な解決策へとあなたを導くために、ほんの小さな声で囁きかけてくれます。それを無視するのも勿論あなたの自由ですが、それがあなたを「何か落ち着かない気分」にさせるのも確かでしょう。
あなたが取り組んでいるコードの中にみんなが「手を出したくない」と思うようなパートがあるのだとしたら、それはそのパートを担当した開発者(あなたかもしれないし前任者かもしれません)がデザイン原則の「囁き声」に耳を貸さなかったからでしょう。
「耳に優しいこと」ばかりを言うつもりはありません。こういった原則を取り入れようと決断しても、最初のうちは上手くいかないことが多いはずです。物事を正しい方法でこなせるようになるには少し時間が必要です。しかし長期的に見ればそれは必ず報われます。
Gang of Four による著書「オブジェクト指向における再利用のためのデザインパターン: Design Patterns - Elements of Reusable Object-Oriented Software)」において、一般的問題を解決するための2大原則、として挙げられているのが以下になります:
実装してしまうのではなくインターフェースとして提供せよ (Program to an interface, not an implementation)
クラス継承よりもクラスコンポジションを選択せよ (Favor object composition over inheritance)
特に1つ目の原則は肝に銘じておくべきです。メール送信プログラムの例でいえば、メール送信機能を実装するクラスの中で、同時に送信対象ユーザーのデータを読み込む機能まで一緒に実装しないようにする、ということです。この機能を別クラスに分離して提供するようにすることで、メール送信機能本体では、このデータがどこから来ているのか、ということに一切関知する必要がなくなるばかりか、将来的にユーザーデータ取得元のフォーマットを変更したり、ファイルからではなくデータベースや外部のマイクロサービスから取得するように変更したとしても、メール送信機能本体クラスには一切影響を及ぼしません。
この記事に興味のある方は次の記事にも関心を持っているようです...
- People who read this article may also be interested in following articles ... -
Practical Python Design Patterns - Python で学ぶデザインパターン: The Adapter Pattern - Part. 1 「第6章: アダプターパターン - 概要 [メール送信機能の実装 with Python]」の巻
Practical Python Design Patterns - Python で学ぶデザインパターン: The Visitor Pattern part. 2「ビジターパターンの実装」の巻 🔒
Practical Python Design Patterns - Python で学ぶデザインパターン: The Command Pattern - Part. 2 「コマンドパターンの実装」の巻 🔒
Practical Python Design Patterns - Python で学ぶデザインパターン: The Builder Pattern - Part. 2 「アンチパターン」の巻 🔒
Practical Python Design Patterns - Python で学ぶデザインパターン: The Chain of Responsibility Pattern - Part. 2 「WSGI サーバーのセットアップ part 1: Windows では Cygwin のインストールが必要な場合があります」の巻
Practical Python Design Patterns - Python で学ぶデザインパターン: The Prototype Pattern - Part. 1 「ちょっとゲームのことを考えてみよう」の巻
Practical Python Design Patterns - Python で学ぶデザインパターン: The Adapter Pattern - Part. 6 「アダプターパターン - ダメ押し確認 [Twitter への tweet 投稿機能の実装例]」の巻 🔒