常看到說
1.物件導向程式設計
2.模組化程式設計
3.函數式程式設計
這三個指的是一個思想嗎?在實際工作中好像一直是出現問題解決問題,並未特別的注意
三個思想之間有什麼明顯的區別嗎?
常看到說
1.物件導向程式設計
2.模組化程式設計
3.函數式程式設計
這三個指的是一個思想嗎?在實際工作中好像一直是出現問題解決問題,並未特別的注意
三個思想之間有什麼明顯的區別嗎?
我的理解:
面向對象編程和函數式編程,一般使用不同語言就有不同的方式,至少是偏重。例如你用Java,通常都會物件導向編程,像是你用JS,那一般都是函數式程式設計。
模組化編程更多的是偏組織方式,就不管是物件導向還是函數式編程,功能複雜了都需要模組化來組織功能,做到高內聚。
建議找一些不同程式設計範式的資料實際上手試一試,會有更深的理解。
不管是物件還是函數程式設計,基礎都是過程化程式設計.
過程化程式設計體現在結構化程式設計:
特徵:將程式中的資料與處理資料的函數分離
基本結構:順序結構,選擇結構,循環結構
設計方法:自頂向下,逐步細化,模組化,結構化編碼
支援物件程式設計的語言體現在提供了類別的封裝.
支援函數式程式設計的語言體現在函數也是一個量,例如可以當做參數傳遞(閉包),也可以作為雜湊表的一個值.
例如:
Java完全不允許將函數當作資料來傳遞.
而JS和PHP都可以將函數當作資料來傳遞.
函數表(雜湊表+匿名函數):
函數名為鍵,匿名函數為值.
JS(用函數表組織函數,體現一等函數):
<code>var func = { foo: function(arg){alert(arg);}, bar: function(arg){alert(arg);} }; func.foo("php"); //func["foo"]("php"); func.bar("best"); //func["bar"]("best");</code>
PHP(面向數組程式設計:把函數和變數封裝在數組內):
<code>$func = array( 'foo' => function($arg){echo $arg;}, 'bar' => function($arg){echo $arg;} ); call_user_func_array($func['foo'], array('php')); call_user_func_array($func['bar'], array('best'));</code>
如何更快的完成你的工作。工作上其實考慮點特別多。比如,就給你一分鐘。讓你寫個alert彈框。你還要去判斷一下,做個封裝?不可能吧。例如你們公司都用物件導向的手法,你就不,你就不封裝,就亂寫。有必要嗎?這些都只不過是你的習慣或說一個工作規範,目的都是為了更快、更好的完成工作。