程式抽象化設計

在電腦科學中,抽象化(英語:Abstraction)是將資料與程式,以它的語意來呈現出它的外觀,但是隱藏起它的實作細節。抽象化是用來減少程式的複雜度,使得程式設計師可以專注在處理少數重要的部份。一個電腦系統可以分割成幾個抽象層(Abstraction layer),使得程式設計師可以將它們分開處理。

???

被孩子們搗亂過的幼稚園遊戲間

扁平寬大 vs 深層複雜

好不好理解是人類的事情,跟電腦無關

Abstraction 通常伴隨著效能的損失

軟體的成長,也需要跟著強化 abstraction

The secret to building large apps is never build large apps.

Break your applications into small pieces.

Then, assemble those testable, bite-sized pieces into your big application.

被孩子們搗亂過的幼稚園遊戲間到底要不要整理?要多頻繁地去整理?要收拾分類到什麼程度?

abstraction 沒有標準答案

Web development on Linux system...

 Abstraction 很困難
Junior mistake: 容易做錯

Tips

  • 沒經驗的話 不要過早做抽象化

  • 用業界慣例的方式做抽象化

  • 過猶不及

active record + service objects + query objects

  • 非常懶惰的抽象化

  • Domain Driven Design

  • But it works!

THANK YOU~

困惑的時候... 想想...

被孩子們搗亂過的幼稚園遊戲間

為了你的同事 未來的你 該怎麼收拾?

bonus:
coupling vs cohesion,
低耦合, 高聚合性

Made with Slides.com