想像してください
- あなたは会社で働くエンジニア
- 役員や営業、総務や開発などいろんな人が働いている会社で働いています
世界観を感じてください
- インタフェース: 人対人のコミュニケーション
- プロパティ: 仕事のメモとか道具
- インスタンスメソッド: 仕事道具を使う
- クラス名: その人の役職や業種
- インスタンス: あなたと置き換えられる人材
イケてない会社だと
- ある人に仕事を依頼したくても、その人とのコミュニケーションには難がある
- 仕事の頼み方が雑で何度も質問する
- 仕事が全然終わらなくて苛々する
- 出来た仕事が想像してた内容と違ってた
- 仲介業者なのに、下請け先の不備をお客さんにそのままありのまま伝える
- ex. あなたは家を建てたいと思い仲介業者に注文をしたら、「ネジが足りないから作れませんでした」という返答が返ってくる。
イケてないコードに置き換えられる
- あるクラスに処理を委譲したくても、委譲するために渡すパラメータ等の用意がメッチャ大変
- 渡したパラメータに不備があってちょくちょく、呼び出し元に戻る
- あるサービスに仕事を依頼したが、レスポンスが遅くてボトルネックになってる
- 返ってきた値がTrueだったり、nilだったり[]だったりする
- 一番下のレイヤーの処理で落ちて、一気にControllerまで戻る
イケている会社とは
- 失敗したら上司に報告し、改善方法を提示、新たにチャレンジ...
- 仕事の役割が明確かつ、インプットとアウトプットも明確だと、働きやすい
- 仕事の役割が明確なので、人材の置き換えが可能
イケているコードとは
- エラーを吐いても、上のレイヤーにあるクラスに投げ、その後の処理を任せられる
- コードの役割が明確なので、自分の仕事の修正で他の仕事に影響が出ることが少ない
- 急な仕様変更があっても、そこだけコードを書けばいい。
ちなみにベンチャー企業だと?
- 規模の小さいコードとして見てみると...
- 社長が買い出しに行く -> rootにあるクラスが何でもやってる
- 誰が何をやっているかわからん -> どこでなんの処理してるかわからん
- 規模が小さいコードなら、それでも対応できますね。
お客さんとしても
- ミスの多い会社に仕事は任せられない -> バグの多いサービスは利用されない
- 時間がかかる会社に仕事は任せられない -> 処理の遅いプログラムは使われない
恐怖
- つまり、オブジェクト思考っぽくコードを書けない人がオブジェクト指向を勉強すると、仕事も効率的になるかもしれない
- 一番下のレイヤーにいる人は、往々にして仕事のしわ寄せが来る
- 新入社員は、花見の準備をしたり、呑み会のセッティグをしたりする。
- なので、オブジェクト"思考"になることは大事ですね。
- "オブジェクト指向で学ぶ現代社会の縮図"
ありがとうございました。