锁定老帖子 主题:再论闭包
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-21
visitor 写道 感觉 JAVA 应该 在OO方向走向简练,
这也是大家喜欢它的理由(我认为), 闭包引进来,函数引进来。。。 感觉会破坏他的纯粹, 不能因为巧克力好吃,就把它拌到米饭里。 支持 |
|
返回顶楼 | |
发表时间:2009-06-21
其实好多人不知道闭包 我也不是很了解
|
|
返回顶楼 | |
发表时间:2009-06-21
whaosoft 写道
其实好多人不知道闭包 我也不是很了解
闭包 是可以包含自由(未绑定)变量 的代码块;这些变量不是在这个代码块或者任何全局上下文中定义的,而是在定义代码块的环境中定义。“闭包” 一词来源于以下两者的结合:要执行的代码块(由于自由变量的存在,相关变量引用没有释放)和为自由变量提供绑定的计算环境(作用域)。 可能上面的定义有点晦涩,下面看一下《Python 核心编程》 对 闭包 的解释。 如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被定义为闭包 。定义在外部函数内的但由内部函数引用或者使用的变量被称为自由变量 。
|
|
返回顶楼 | |
发表时间:2009-06-21
我觉得,闭包这个东西就属于习惯范畴,而不是语言范畴。就好像java中的匿名类,我就不喜欢用。
|
|
返回顶楼 | |
发表时间:2009-06-21
内部类也是类,是对象的抽象。
可闭包 就不在OO范畴里了。 |
|
返回顶楼 | |
发表时间:2009-06-21
闭包 不在 面向对象开发方法 的范畴里,
但可以在一个语言的范畴里, 像 python 就同时支持 闭包和对象。 |
|
返回顶楼 | |
发表时间:2009-06-21
有什么不同呢?两者都是属于代码风格的范畴了。
我个人觉得匿名类是个很垃圾的东西。但是还有很多比我水平高很多的人很喜欢用。除非你能找出一个一定要用闭包,不用闭包就解决不了的常见问题。我觉得讨论孰优孰劣还有意义。不然,就好像你吃饭,上哪家馆子是你的自由,不见得不和你上一家馆子的人就不懂美食了? 其实我觉得支持闭包,和不喜欢闭包的人有一大的区别。就是风格不一样。估计你是那种希望代码行数越少越好的。而我呢,情愿多写几行代码,为的就是看的清楚一点。只要性能不影响。两者又有什么问题呢? |
|
返回顶楼 | |
发表时间:2009-06-21
chandler 写道 有什么不同呢?两者都是属于代码风格的范畴了。
我个人觉得匿名类是个很垃圾的东西。但是还有很多比我水平高很多的人很喜欢用。除非你能找出一个一定要用闭包,不用闭包就解决不了的常见问题。我觉得讨论孰优孰劣还有意义。不然,就好像你吃饭,上哪家馆子是你的自由,不见得不和你上一家馆子的人就不懂美食了? 其实我觉得支持闭包,和不喜欢闭包的人有一大的区别。就是风格不一样。估计你是那种希望代码行数越少越好的。而我呢,情愿多写几行代码,为的就是看的清楚一点。只要性能不影响。两者又有什么问题呢? 好的代码风格是很重要的。。 |
|
返回顶楼 | |
发表时间:2009-06-21
chandler 写道 有什么不同呢?两者都是属于代码风格的范畴了。
我个人觉得匿名类是个很垃圾的东西。但是还有很多比我水平高很多的人很喜欢用。除非你能找出一个一定要用闭包,不用闭包就解决不了的常见问题。我觉得讨论孰优孰劣还有意义。不然,就好像你吃饭,上哪家馆子是你的自由,不见得不和你上一家馆子的人就不懂美食了? 其实我觉得支持闭包,和不喜欢闭包的人有一大的区别。就是风格不一样。估计你是那种希望代码行数越少越好的。而我呢,情愿多写几行代码,为的就是看的清楚一点。只要性能不影响。两者又有什么问题呢? 代码风格 。。 闭包的问题 是 会不会 破坏JAVA 面向对象特性的问题 代码风格太宽泛了。。 |
|
返回顶楼 | |
发表时间:2009-06-21
步行者 写道 chandler 写道 有什么不同呢?两者都是属于代码风格的范畴了。
我个人觉得匿名类是个很垃圾的东西。但是还有很多比我水平高很多的人很喜欢用。除非你能找出一个一定要用闭包,不用闭包就解决不了的常见问题。我觉得讨论孰优孰劣还有意义。不然,就好像你吃饭,上哪家馆子是你的自由,不见得不和你上一家馆子的人就不懂美食了? 其实我觉得支持闭包,和不喜欢闭包的人有一大的区别。就是风格不一样。估计你是那种希望代码行数越少越好的。而我呢,情愿多写几行代码,为的就是看的清楚一点。只要性能不影响。两者又有什么问题呢? 代码风格 。。 闭包的问题 是 会不会 破坏JAVA 面向对象特性的问题 代码风格太宽泛了。。 肯定会破坏。这用得着讨论么? 其实像匿名类,和静态方法也可以算是破坏了。 怎么说呢,如果说想知道闭包有没有必要加入到java里面。我觉得是可有可无。毕竟OO是关键看的是使用的人。而不是语言。你用java也完全可以写成完完全全的面向过程的程序。或者说不伦不类的面向对象的程序…… 你太专注于语言,而不明白,其实任何语言只是我们手中的一支笔而已。 |
|
返回顶楼 | |