概念設計が、その後のコードの命運を左右する
DRANK

最近、ソフトウェア開発における概念設計の威力と重要さについて人に伝えたい機会が何度かあった。 しかし、概念の整理がなぜどのように重要なのか、という一点を取り上げて書かれたものは少ないようで、人に渡すのにちょうどよい文章や書籍が見つからなかったので、このたび私なりに咀嚼して書いてみたい。そのアプリケーションの世界には、そもそも何が存在するのか。何と何を同じものとして扱い、何と何を別のものとして扱うのか。この判断が合っていると、その後の実装は驚くほど素直になる。逆にここを外すと、一つ一つの実装は正しくても、仕様が増えるたびに少しずつ帳尻合わせが必要になる。まず、一つの小さなECサイトから話を始めよう。Acme社のECサイトでの出来事Acme社では、小さなECサイトを作っている。注文には商品ごとの明細があり、その配送状況も確認できる。最初のモデルはこうなった。type Order = { productId: ProductId quantity: number unitPrice: Money shippingStatus: "pending" "shipped" "delivered" } このモデルは注文の明細を表し、同時にその商品の配送状態も保持する。 普段はこれで十分である。ところが、しばらくして、あ…

zenn.dev
Related Topics: