Upgrade to Pro — share decks privately, control downloads, hide ads and more …

「”誤った使い方をすることが困難”な設計」で良いコードの基礎を固めよう / phpcon-od...

「”誤った使い方をすることが困難”な設計」で良いコードの基礎を固めよう / phpcon-odawara-2025

taniguhey

April 12, 2025
Tweet

Other Decks in Programming

Transcript

  1. 自己紹介 ▪ taniguhey / たにぐち ▪ PHP 5年 / Java

    1年 ▪ 所属:NE株式会社 - ECの運営支援ツール開発 - BtoBのマーケットプレイス開発 ▪ 特技:オタク特有の早口 ▪ カンファレンス現地初参加・初登壇 X @TanigUhey
  2. サンプルコードの題材 • ECサービスのWebアプリケーション(Amaz◯n・メ◯カリ) ◦ 商品 ▪ 商品名(string:1~20文字) ▪ 価格(int:0~PHP_INT_MAX) ◦

    商品を作成できる ◦ 作成した商品は価格を変更できる ◦ 商品を購入する時、特定の割引率によって割引される
  3. サンプルコードの題材 • ECサービスのWebアプリケーション(Amaz◯n・メ◯カリ) ◦ 商品 ▪ 商品名(string:1~20文字) ▪ 価格(int:0~PHP_INT_MAX) ◦

    商品を作成できる ◦ 作成した商品は価格を変更できる ◦ 商品を購入する時、特定の割引率によって割引される
  4. サンプルコードの題材(再掲) • ECサービスのWebアプリケーション(Amaz◯n・メ◯カリ) ◦ 商品 ▪ 商品名(string:1~20文字) ▪ 価格(int:0~PHP_INT_MAX) ◦

    ユーザーは商品を作成できる ◦ 作成した商品は価格を変更できる ◦ 商品を購入する時、特定の割引率によって割引される
  5. サンプルコードの題材(再掲) • ECサービスのWebアプリケーション(Amaz◯n・メ◯カリ) ◦ 商品 ▪ 商品名(string:1~20文字) ▪ 価格(int:0~PHP_INT_MAX) ◦

    ユーザーは商品を作成できる ◦ 作成した商品は価格を変更できる ◦ 商品を購入する時、特定の割引率によって割引される
  6. まとめ • ”誤った使い方をする方が難しい”インターフェースは良いインターフェース ◦ 制約をクラス内部に持たせる ▪ 不自然な値でインスタンス化できないようにコンストラクタを作る ▪ 変更においても不完全な状態にならないようにする ◦

    設計者の意図をコードで伝える ▪ より狭い意味を持つ値をクラスで表現する ▪ 他の値と区別するためにクラスを作る • まずは影響範囲が狭く、仕様をよく理解しているところから始める • 作る前に使う・誤用するか観察する • 基礎が身についたらさらに深い設計へステップアップ