Naetw / Naetw.github.io

https://naetw.github.io
1 stars 0 forks source link

Design Patterns #6

Open Naetw opened 5 years ago

Naetw commented 5 years ago

前言

學校作業做一做突然覺得每次都只是把功能硬幹出來好像沒什麼用(而且好醜 Orz),應該要加入一些不曾使用過的技巧或思維,於是試著從「用 C 來做物件導向程式設計」開始。

實際上看過的文章不多,目前有應用上的也只有利用函式指標來做到類似 C++ 成員函式的功能,寫起來有比以前乾淨些,不過對於架構的設計方面仍舊覺得卡卡的,於是開始研究下設計樣式。

在這邊紀錄一些看過的關於設計樣式的文章。

Design patterns of 1972

"Patterns" that are used recurringly in one language may be invisible or trivial in a different language.

關於設計樣式的定義,作者提到了兩種,一種是四人幫 GoF 所提出的,另一種是維基百科上的:

樣式的法則(Codification of patterns)

Peter Norvig 在演講 "Design Patterns in Dynamic Languages" 中將樣式的實作分成三個等級:

程式語言的演進

多數樣式並非在處理重複發生的設計問題,實際上是在指出某語言的缺陷,在其他的語言中,同樣的問題可能不會出現或是可以很輕鬆地解決。舉例來說,在 assembly 語言中,"subroutine call" 需要實做特定樣式,但在 C 語言中只需要簡單地寫 result = function(args...)。因此,"Design Patterns" 不應該只是用來訓練程式設計師,讓他們能夠辨別情境並使用適當的樣式,而是用來發展語言的,隨著程式語言演進,讓某些樣式可以存在在語言本身,程式設計師才能夠專注在使用某些樣式,而非實做它。

總結

Patterns are signs of weakness in programming languages.

When we identify and document one, that should not be the end of the story. Rather, we should have the long-term goal of trying to understand how to improve the language so that the pattern becomes invisible or unnecessary.