変更しやすいコードを目指して、構造化プログラミングのコードをオブジェクト指向で書き直す(Python編) by nikkie

Object-Oriented Conference 2020
ショートセッション

変更しやすいコードを目指して、構造化プログラミングのコードをオブジェクト指向で書き直す(Python編)

ftnext nikkie ftnext
1

「オブジェクト指向をやってみたいけど、どこから始めればいいか、具体的にどう書けばいいかわからない」
という方に向けて、
構造化プログラミングで書かれたコードをオブジェクト指向で書き替える方法を示します。
15分の中で「この書き換え指針に基づき、こう書き換えた」とどんどん紹介していきます。
コード例はPythonで、 https://github.com/ftnext/python-image-processor にて開発中です。
以下に構成を示します。

  • 自己紹介 (1min)
  • 背景:入門書は構造化プログラミング (1min)
  • 課題:入門書のように書けるようになったが保守しにくい (1min)
  • 解決策:オブジェクト指向 (1min)
  • アプローチ:『現場で役立つシステム設計の原則』『ThoughtWorksアンソロジー』の「オブジェクト指向エクササイズ」を参考に入門書のコードを書き直す (1min)
  • 対象のスクリプト紹介 (2min)
    • パスで指定した画像を縮小する
    • 画像の入ったディレクトリも指定可能
    • 概要:対象の画像を洗い出し、縮小する処理を呼び出す
  • 以下書き換え方
    1.対象と保存先を扱うクラスと縮小処理を表すクラスに分けて設計(1min)
    2.ディレクトリ指定のために、対象と保存先のファーストクラスコレクションを作成:マジックメソッドの上書きとUserListの使用の2通り(2min)
    3.保存先の指定を追加→ファーストクラスコレクション作成を修正(1min)
  • 変更しやすさ:サブコマンドでグレースケールにもできるように→共通インターフェースを持つグレースケール処理クラスを作る(抽象クラス使用)(2min)
  • まとめ(1min)
  • 質疑(1min)