`
axgle
  • 浏览: 94255 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

阅读更多
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命令,就搞定了。
分享到:
评论
10 楼 李超群 2007-01-18  
设计模式只是面对实际问题时最佳实践的总结。即使在ruby和python里也有很多这样的东西。只是不属于gof的23个design pattern 而已。
9 楼 melin 2007-01-17  
设计模式提供了表达那些无法直接在编程语言中表达的概念的词汇表。
8 楼 netfishx 2007-01-17  
gigix 写道
不过回头看看GoF的23个模式,有不少模式是在跟C++/Java僵硬的语言特性做斗争。


不错,那些经典的设计模式中的大部分,脱离了C++/Java这个语言环境,实在是没有什么意义。
7 楼 zhongzhihua 2007-01-17  
我不认为LZ的观点
6 楼 gigix 2007-01-05  
不过回头看看GoF的23个模式,有不少模式是在跟C++/Java僵硬的语言特性做斗争。
5 楼 thoriod 2007-01-05  
呼呼,LZ的题目和内容风马牛不相及啊
4 楼 jncz 2007-01-04  
什么是模式,是在长期的编程实践中总结的一些习惯用法。所以什么语言都会产生模式,而跟语言表达能力关系不大。
3 楼 aardvark 2007-01-04  
换个提法就比较好接受一点:

设计模式是对语言弱点的增强
2 楼 alang 2007-01-03  
:counter_cache=>true 也由于失效的时候。
1 楼 Godlikeme 2007-01-03  
伪命题。lz要搞清楚 什么是设计模式,什么是程序语言表达能力。

相关推荐

    设计模式题库.docx

    设计模式不是具体的代码或库,而是经验总结,为常见的编程问题提供了一套标准的描述语言和解决框架。以下是对给定文件中提到的一些设计模式及其相关知识点的详细解释: 1. **模式的定义**:模式是一种在特定上下文...

    Perl 语言编程,详细讲解了perl的语法及技巧

    Perl,全称“Practical Extraction and Reporting Language”,是一种高级的、通用的、解释型的、动态的编程语言。它的设计融合了多种语言的特点,尤其在文本处理和系统管理方面表现出色。Perl因其强大的正则表达式...

    天书夜读(完整版) 汇编语言是一门本来是很基础很古老的语言

    例如,通过阅读Windows内核的反汇编代码,可以学习到大量的系统级编程技巧和设计模式。 ### 学习资源 《天书夜读》这本书提供了一个从基础知识到实践应用的学习路径。以下是该书第一章节的主要内容概览: #### 第...

    独立学院计算机专业大学生程序设计能力培养的研究与实践.pdf

    它涵盖了对问题的理解、分析,选择合适的算法,运用编程语言将解决方案转化为可执行的代码,以及调试和优化程序的能力。这些能力的培养需要跨越多个学科,如数据结构、算法、操作系统、计算机网络等,因此,程序设计...

    高职《C语言编程技术》课程的教学体会.pdf

    2. 传统教学模式问题:传统教学模式侧重语法讲解,缺乏程序设计概念、思路与方法的讲解,导致学生难以将理论知识应用于实际编程。 3. 实验教学缺陷:验证性实验缺乏联系性,不能让学生了解如何编写一个完整的实用...

    浅谈VB与Matlab混合编程

    在解决这些复杂问题的过程中,往往需要多种编程语言和技术的协同作用。Microsoft Visual Basic (VB) 和 Matlab 作为两种广泛使用的工具,在各自领域内具有独特的优势。然而,它们在某些方面也存在局限性,如 VB 在...

    Go语言教程以及优缺点

    Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的编程语言。自2009年发布以来,它迅速获得了开发者们的喜爱,尤其在云计算、分布式系统和微服务领域应用广泛。本教程将深入探讨...

    javascript面向对象编程

    JavaScript是一种广泛应用于Web开发的动态、弱类型、基于原型的脚本语言,它不仅支持函数式编程,还具有强大的面向对象编程能力。面向对象编程(Object-Oriented Programming,简称OOP)是JavaScript中的一项核心...

    软件工程分析模式

    - **多重分类**:在某些面向对象语言中,允许一个类同时继承多个父类的能力,这种方式可以提供更高的灵活性,但也可能增加复杂性。 ### 结论 通过对上述内容的详细介绍,我们可以看到软件工程分析模式涉及到了软件...

    高职《Java程序设计》教学存在问题及对策.pdf

    首先,Java作为一种编程语言,自1995年美国Sun Microsystems公司推出以来,就以其通用性、高效性、跨平台性和安全性,成为当今最流行的编程语言之一。它被广泛应用于多个平台和领域,成为很多高校计算机类专业的核心...

    吴恩达《机器学习》编程作业Python实现.zip

    吴恩达的机器学习课程是全球范围内广受欢迎的在线课程,其编程作业设计得既具有挑战性又富有启发性,旨在帮助学生掌握从数据预处理、模型选择到训练与评估等各个环节。 这个压缩包中的“zgl_resource”可能是一个...

    试论计算机程序设计中C语言教学中多层次差异化教学模式.pdf

    C语言作为计算机科学与技术领域的基础编程语言,其教学模式对高校学生的能力培养起着至关重要的作用。传统的“一刀切”教学模式已经无法满足不同层次学生的学习需求,因此,多层次差异化教学模式应运而生,并被广泛...

    java和C#和PHP和各种数据库优缺点.docx

    这种设计模式更接近现实世界的模型,使代码更加结构化和易于理解。 2. 平台无关性:Java的“一次编写,到处运行”特性得益于Java虚拟机(JVM)。JVM使得Java程序可以在任何安装了JVM的平台上运行,促进了跨平台应用...

    技术面试必备基础知识、Leetcode、计算机操作系统、计算机网络、系统设计

    - 编程语言基础:熟悉至少一种编程语言,如Java、C++或Python,理解其语法、内存管理及面向对象特性。 - 设计模式:了解常见的设计模式,如单例、工厂、观察者、装饰器等,以及何时使用它们。 2. LeetCode: - ...

    基于《C语言程序设计》教学方法的研究.pdf

    C语言是一种过程性的编程语言,融合了高级语言的面向过程特性和低级语言的硬件紧密联系的优点,具有语言简洁、运算符丰富、数据类型多样、可以直接访问物理地址等特点,因此在系统软件和应用程序开发中都得到了广泛...

    PLC课程设计京江资料.docx

    PLC课程设计是学习和掌握PLC应用的重要实践环节,旨在让学生熟悉PLC的工作原理、编程语言以及实际控制系统的设计。 本课程设计中,学生将面临一系列实际的PLC控制系统设计任务,包括但不限于花样喷水池、全自动...

    独立学院Java语言教学改革与实践研究.pdf

    课程考核制度也需改革,不再单纯依赖期末考试成绩,而是采用多元化评价方式,包括平时表现、小组项目、编程竞赛等,全面评估学生的学习成果和技能水平。这有助于激发学生自主学习和团队协作的积极性。 此外,课后...

    基于FPGA的全自动洗衣机控制器设计与实现.pdf

    1. 可编程输入/输出单元(I/O单元):作为芯片与外界电路的接口,其设计为可编程模式,允许根据需要调整与外界的电平标准、阻抗特性以及输出驱动电流的大小。 2. 基本可编程逻辑单元:这是FPGA的核心部分,主要由...

Global site tag (gtag.js) - Google Analytics