经常看到说1.面向对象编程2.模块化编程3.函数式编程这三个指的是一个思想吗?在实际工作中好像一直是出现问题解决问题,并未特别的关注三个思想之间有什么明显的区别吗?
业精于勤,荒于嬉;行成于思,毁于随。
我的理解:
面向对象编程和函数式编程,一般使用不同语言就有不同的方式,至少是偏重。比如你用Java,一般都面向对象编程,比如你用JS,那一般都是函数式编程。
模块化编程更多的是偏组织方式,就不管是面向对象还是函数式编程,功能复杂了都需要模块化来组织功能,做到高内聚。
建议找一些不同编程范式的资料实际上手试一试,会有更深的理解。
不管是对象还是函数编程,基础都是过程化编程.过程化编程体现在结构化程序设计:特征:将程序中的数据与处理数据的函数分离基本结构:顺序结构,选择结构,循环结构设计方法:自顶向下,逐步细化,模块化,结构化编码
支持对象编程的语言体现在提供了类的封装.支持函数式编程的语言体现在函数也是一个量,比如可以当做参数传递(闭包),也可以作为哈希表的一个值.比如:Java完全不允许将函数当作数据来传递.而JS和PHP都可以将函数当作数据来传递.函数表(哈希表+匿名函数):函数名为键,匿名函数为值.JS(用函数表组织函数,体现一等函数):
var func = { foo: function(arg){alert(arg);}, bar: function(arg){alert(arg);} }; func.foo("php"); //func["foo"]("php"); func.bar("best"); //func["bar"]("best");
PHP(面向数组编程:把函数和变量封装在数组内):
$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'));
如何更快的完成你的工作。工作中其实考虑点特别多。比如,就给你一分钟。让你写个alert弹框。你还要去判断一下,做个封装?不可能吧。比如你们公司都用面向对象的手法,你就不,你就不封装,就乱写。有必要吗?这些都只不过是你的习惯或者说一个工作规范,目的都是为了更快更好的完成工作。
我的理解:
面向对象编程和函数式编程,一般使用不同语言就有不同的方式,至少是偏重。比如你用Java,一般都面向对象编程,比如你用JS,那一般都是函数式编程。
模块化编程更多的是偏组织方式,就不管是面向对象还是函数式编程,功能复杂了都需要模块化来组织功能,做到高内聚。
建议找一些不同编程范式的资料实际上手试一试,会有更深的理解。
不管是对象还是函数编程,基础都是过程化编程.
过程化编程体现在结构化程序设计:
特征:将程序中的数据与处理数据的函数分离
基本结构:顺序结构,选择结构,循环结构
设计方法:自顶向下,逐步细化,模块化,结构化编码
支持对象编程的语言体现在提供了类的封装.
支持函数式编程的语言体现在函数也是一个量,比如可以当做参数传递(闭包),也可以作为哈希表的一个值.
比如:
Java完全不允许将函数当作数据来传递.
而JS和PHP都可以将函数当作数据来传递.
函数表(哈希表+匿名函数):
函数名为键,匿名函数为值.
JS(用函数表组织函数,体现一等函数):
PHP(面向数组编程:把函数和变量封装在数组内):
如何更快的完成你的工作。工作中其实考虑点特别多。比如,就给你一分钟。让你写个alert弹框。你还要去判断一下,做个封装?不可能吧。比如你们公司都用面向对象的手法,你就不,你就不封装,就乱写。有必要吗?这些都只不过是你的习惯或者说一个工作规范,目的都是为了更快更好的完成工作。