论坛首页 编程语言技术论坛

设计模式是编程语言能力弱的表现

浏览 8915 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-01-03  
http://jack.lifegoo.com/?p=8

设计模式是编程语言能力弱的表现(Patterns are signs of weakness in programming languages)
http://blog.plover.com/2006/09/11/index.html

按照这篇文章的分析,就是这么一回事情。

一篇文章有许多评论,一个文件夹有许多文件,一个公司有许多人。。。在这类一对多的情形中,我们往往都需要统计评论数,文件数,人数。这样的情况反复出现,难道不应该有一种“模式”来统一处理吗?

一个帖子(post)有许多评论(comments):
class Post < ActiveRecord::Base
  has_many :comments
end

class Comment < ActiveRecord::Base
    belongs_to :post,:counter_cache=>true
end



每增加一个评论,则帖子的评论数应该增加一,若删除一个评论,则评论数应该减少一。
counter_cache=>true这个命令,就是告诉ror按照上面的规则去做事情。

我们只需要处理评论的创建删除等等就可以了,不必去关心评论数的处理(ror帮你完成了)

由此可见,RoR与其说是一种框架,不如说是一种增强了的编程语言:把上面的反复出现的情况,以“模式”的形式融入了RoR中,用一个简单的counter_cache=>true命令,就搞定了。
   发表时间:2007-01-03  
伪命题。lz要搞清楚 什么是设计模式,什么是程序语言表达能力。
0 请登录后投票
   发表时间:2007-01-03  
:counter_cache=>true 也由于失效的时候。
0 请登录后投票
   发表时间:2007-01-04  
换个提法就比较好接受一点:

设计模式是对语言弱点的增强
0 请登录后投票
   发表时间:2007-01-04  
什么是模式,是在长期的编程实践中总结的一些习惯用法。所以什么语言都会产生模式,而跟语言表达能力关系不大。
0 请登录后投票
   发表时间:2007-01-05  
呼呼,LZ的题目和内容风马牛不相及啊
0 请登录后投票
   发表时间:2007-01-05  
不过回头看看GoF的23个模式,有不少模式是在跟C++/Java僵硬的语言特性做斗争。
0 请登录后投票
   发表时间:2007-01-17  
我不认为LZ的观点
0 请登录后投票
   发表时间:2007-01-17  
gigix 写道
不过回头看看GoF的23个模式,有不少模式是在跟C++/Java僵硬的语言特性做斗争。


不错,那些经典的设计模式中的大部分,脱离了C++/Java这个语言环境,实在是没有什么意义。
0 请登录后投票
   发表时间:2007-01-17  
设计模式提供了表达那些无法直接在编程语言中表达的概念的词汇表。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics