Skip to the content.

WEB+DBvol74

種別:紙
プロジェクト:仕事
開始1:2018/03/04
終了1:2018/03/04
開始2:yyyy/mm/dd
終了2:yyyy/mm/dd

メモ

設計と学び

上記、すごいありがたい言葉。。 まぁ、だからといって考えきったといえるところまでやることは必要だけど

保守できないコードに意味はない

保守できるコードとは

  1. 人が読んで理解できる
  2. 一部の変更が全体を壊さない

保守性の阻害要因

  1. 依存関係が複雑なこと
  2. コード中の概念や名前が通じないこと

参照依存性

  1. 依存する方向を一方向にする
  2. 安定する方へ依存する
  3. 依存する数を減らす

実行順依存性

コード重複依存性

命名大事

という話が合った。本当そう

抽象化と設計

「要するに」メソッド

このクラスは、このメソッドは「様子するに」何をしてしようとしているのか、という視点、自分への問いかけ。
責任を持つ原則とかあったな。更に単一責任の責任の法則とかUNIXの思想とか
設計でも同じかも知れない。

設計の分類

私も知ってる。設計を

で分類する。抽象化するという卓見

過剰な抽象化

ex)言語構文で用意されている機能レベルを抽象化してコードを肥大化させる

ただし、このへん、DDDではむしろやれって感じ。あれも抽象化の話で結果が違うだけだ。 うむ。学び。

ex)電話番号を文字列で持つな、クラスにしろ → これは適切な抽象化

コード量が多くなるというだけで過剰な抽象化と断じることはできない

クラス設計

いろんな名著をかいつまんでくれているので、すごいこの特集ありがたい。

アジャイルソフトウェア開発の奥義 :変更理由

この本も読まなければならないな。。

この方法だけを突き詰めるとクラスひとつになるやんか問題、次節

実践的な方法論

  1. 名前で分ける
  2. 拡張ポイントを作る
  3. 中間層を作る
  4. 使う側の視点で考える

王道を進め

概念、役割、言葉の王道は小手先のデザインパターンよりも優先される

クラスの分割基準

1

2

  1. 下請け処理を分ける(ユーティリティ、ヘルパー)
    (me:どこかで否定されていなかったけ?)
  2. 複雑な部分を分ける
  3. システム境界を分ける
    • ユーザーインタフェース
    • データベースアクセス
    • ネットワーク処理
    • ファイル処理

最終目標=拡張言語層の確立

夢。ユーザーが好きに定義できるUIがあるなにか。
集計とかこれに当たるのか
(kintoneとかこれTに当たるのかな?使ったことないからわからない。IFTTとかも?)

この筆者はドメイン駆動に懐疑的

原理主義的にドメイン駆動したらだめだろうけど、「現場で〜」方式なら有用だと思う。 また、あの本の言いたいことと結局おなじになるのではないか?

アウトプット

この文章、仕事。。。 何度もよみなおしたい。

NEXT

現場で役立つシステム設計の原則

LOG

back

目次