84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
经常看到说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弹框。你还要去判断一下,做个封装?不可能吧。比如你们公司都用面向对象的手法,你就不,你就不封装,就乱写。有必要吗?这些都只不过是你的习惯或者说一个工作规范,目的都是为了更快更好的完成工作。