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

编程的核心在于抽象

阅读更多
    抽象是软件体系结构的灵魂。一个“优秀”的软件体系,必然是抽象层次恰到好处的结构。软件需要抽象,就如同书籍需要目录和章节一样;又好似茂盛的树木需要树干和枝丫。任何具备面向抽象编程意味的动作,都使软件体系朝质变迈出实实在在的一步,虽然不见得一定是变好。
    面向过程语言与面向对象语言最大的区别就是,对抽象的支持不一样。两者都可以抽象,只是后者容易多了,它专为抽象而生。
    但最重要的是,作为一个使用面向对象语言的程序员,要有这个意识,知道自己使用的这些特性有什么意义,会起到什么作用。只有意识到自己在做什么,才能有针对性地把它做到更好。
    很难想象完全没有这种意识的程序员能用好任何面向对象的语言。Unix编程艺术上讲要适度的抽象,但在到达这个层次之前,请先弄清楚面向对象编程的本质含义。
1
4
分享到:
评论
3 楼 hyj1254 2012-12-26  
luhfly 写道
好吧,抽象。
很多人,我见过很多人,没事就抽象。抽象到系统抽筋。

抽象只是一个优秀软件的原则一,还有很多原则。

写这篇文章出来我就是打算被 踩的,深入思考而又不同的观点永远只有少数人赞同。不恰当的抽象确实是对面向对象特性的滥用,这点Unix编程艺术也有提及,这是对个人功底的考验,另当别论。从构建软件体系的角度来讲,抽象是核心的一环,面向过程显然支持不足,面向对象是为此而诞生。各编程原则借此也更容易得到实现。
2 楼 mqlfly2008 2012-12-26  
抽象方式的不同,确实导致了面向对象和面向过程的不通。
1 楼 luhfly 2012-12-26  
好吧,抽象。
很多人,我见过很多人,没事就抽象。抽象到系统抽筋。

抽象只是一个优秀软件的原则一,还有很多原则。

相关推荐

    Python 小白书

    有没有哪一个瞬间,让你想...这种高 效学习法的核心在于: 1、精简:学习最核心的关键知识; 2、理解:运用类比、视觉化的方法来理解这些核心知识; 3、实践:构建自己的知识体系之后,再通过实践去逐渐完善知识体系。

    Accelerated C++源代码

    结果往往使读者纠缠于低级的程序设计问题和复杂类型定义的编写等细节,而不能真正领会抽象编程的力量。就更不用说学到足够的知识去创建自己的抽象了。本版中我们独辟蹊径。一开始就讲述语言的基础知识和标准库,这样...

    Mapreduce#文档.docx

    MapReduce 最大的亮点在于通过抽象模型和计算框架把需要做什么(what need to do)与具体怎么做(how to do)分开了,为程序员提供一个抽象和高层的编 程接口和框架。程序员仅需要关心其应用层的具体计算问题,仅需...

    Accelerated C++ PDF 中英文版

    结果往往使读者纠缠于低级的程序设计问题和复杂类型定义的编写等细节,而不能真正领会抽象编程的力量。就更不用说学到足够的知识去创建自己的抽象了。本版中我们独辟蹊径。一开始就讲述语言的基础知识和标准库,这样...

    JAVA核心技术

    RUP(Rational Unified Process)软件统一过程,XP(Extreme Programming)极端编程,这些通常被叫做“过程方法”,是一种软件项目实施过程的方法论,它是针对软件项目的实施过程提出的方法策略。也是另一个角度的...

    新版Android开发教程.rar

    难点在于位置营销。 设备商通过卖设备、内置特色应用来获得盈利。也可以兼职专业软件开发者进行赢利。 Google 自身通过基于统一平台为用户提供信息来盈利。 Android Android Android Android 的优势 � 源代码完全...

    CS106A-Stanford

    cs106a编程方法此版本适合2007... 重点在于良好的编程风格和Java语言的内置功能。 该课程的设计旨在吸引人文主义者,社会科学家以及核心技术人员。 实际上,大多数编程方法论专业的毕业生都毕业于工程学院以外的专业。

    虚幻3游戏引擎自学教材

     虚幻3引擎的所有编写观念都是为了更加容易的内容制作和编程的开发,为了让所有的美术开发人员能够牵扯到最少程序开发内容的情况下使用抽象程序助手来自由创建虚拟环境,以及提供程序编写者高效率的模块和可扩展的...

    fastCSharp

    * 链式编程的核心思想是想到什么就点什么,程序书写思路更流畅。但要注意的是不要把程序写成一行,对于带参数的函数调用,最好是一行一个点,否则异常了都不知道哪里出的问题,比如: return diantou.dataProxy....

    ReactPHP:使用 PHP 的事件驱动、非阻塞 I/O-开源

    它的核心是一个事件循环,在它之上提供低级实用程序,例如:流抽象、异步 DNS 解析器、网络客户端/服务器、HTTP 客户端/服务器以及与进程的交互。 第三方库可以使用这些组件来创建异步网络客户端/服务器等。 ...

    二十三种设计模式【PDF版】

    经常以那些技术只适合大型项目为由,避开或忽略它们,实际中,Java 的接口或抽象类是真正体现 Java 思想的核心所在,这些 你都将在 GoF 的设计模式里领略到它们变幻无穷的魔力。 GoF 的设计模式表面上好象也是一种...

    软件工程-理论与实践(许家珆)习题答案

    ● 编程(用程序语言实现每个模块,简单容易); ● 测试(发现并改正错误,分为模块测试、集成测试和系统联调三级); ● 运行维护(扩充功能、纠错等)。 习题二答案 一、 选择题 1. 需求分析的主要目的是(B C)...

    ACCESS2010数据库基础教程-01第一章数据库系统概述.pptx

    上课内容 主要内容: 数据库理论知识 数据库系统概述、数据模型、关系模型、数据库设计 关系数据库标准语言SQL ACCESS数据库对象及操作 数据库、表、查询、窗体、报表、宏、模块 VBA编程基础 小型应用系统开发 教材...

    超级有影响力霸气的Java面试题大全文档

    抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承:  继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承...

    C#微软培训资料

    编程编程 编程 言 语言语言 语言 C# 未来 未来未来 未来 5 年 年年 年 我们的目标就 我们的目标就我们的目标就 我们的目标就是超 是是 是 越今天各自为营的 超越今天各自为营的超越...

    开源框架 Spring Gossip

    简介 Spring Inversion of Control Dependency Injection <br> 核心容器 Spring 核心容器实作了 IoC,BeanFactory 与 ApplicationContext 的运用是了解 Spring 的重点所在。 管理 Bean...

    计算机专业相关课程描述.docx

    序号 课程名称 课程描述 1 程序设计基础 本课程主要介绍 C 语言的基本语法、基本语句、数据类型、基本控制结构以及程序设计的一般方法,使学生具有使用当今流行的系统平台的初步能力,具有熟练使用 C 语言编程解决...

    java 面试题 总结

    抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类...

    log4Net详解(共2讲)

    国讯OA的一个强大之处就是在于它可以让系统在运作的过程中自动触发请求,并且还可以根据前一个请求的实际状况对下一个触发的请求进行智能选择。 6、分支选择流 根据上一步的选择,选择不同的分支进行流程执行。如...

    浅探《Java程序设计》的教学目标和课程设计(全文).docx

    Jv语言是时下首选的软件开发语言之一,《Jv程序设计》是高职高专计算机XX络专业、计算机应用专业的专业课和软件外包服务专业的专业核心课程。 1.Jv语言的前景 诞生于1995年的Jv语言以20世纪末和21世纪初XX络科技和...

Global site tag (gtag.js) - Google Analytics