首頁  >  文章  >  後端開發  >  javascript - 一些思想之間的區別的問題

javascript - 一些思想之間的區別的問題

WBOY
WBOY原創
2016-12-01 00:25:39993瀏覽

常看到說
1.物件導向程式設計
2.模組化程式設計
3.函數式程式設計
這三個指的是一個思想嗎?在實際工作中好像一直是出現問題解決問題,並未特別的注意
三個思想之間有什麼明顯的區別嗎?

回覆內容:

常看到說
1.物件導向程式設計
2.模組化程式設計
3.函數式程式設計
這三個指的是一個思想嗎?在實際工作中好像一直是出現問題解決問題,並未特別的注意
三個思想之間有什麼明顯的區別嗎?

我的理解:

  1. 面向對象編程和函數式編程,一般使用不同語言就有不同的方式,至少是偏重。例如你用Java,通常都會物件導向編程,像是你用JS,那一般都是函數式程式設計。

  2. 模組化編程更多的是偏組織方式,就不管是物件導向還是函數式編程,功能複雜了都需要模組化來組織功能,做到高內聚。

建議找一些不同程式設計範式的資料實際上手試一試,會有更深的理解。

不管是物件還是函數程式設計,基礎都是過程化程式設計.
過程化程式設計體現在結構化程式設計:
特徵:將程式中的資料與處理資料的函數分離
基本結構:順序結構,選擇結構,循環結構
設計方法:自頂向下,逐步細化,模組化,結構化編碼

支援物件程式設計的語言體現在提供了類別的封裝.
支援函數式程式設計的語言體現在函數也是一個量,例如可以當做參數傳遞(閉包),也可以作為雜湊表的一個值.
例如:
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彈框。你還要去判斷一下,做個封裝?不可能吧。例如你們公司都用物件導向的手法,你就不,你就不封裝,就亂寫。有必要嗎?這些都只不過是你的習慣或說一個工作規範,目的都是為了更快、更好的完成工作。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn