论坛首页 综合技术论坛

Why OO sucks

浏览 50421 次
该帖已经被评为良好帖
作者 正文
   发表时间:2008-09-02  
感觉这个帖子的争论很水,真的,想不到还有人在无聊的说这些事情。tiobe 08年编程语言的排名上,c仍名列三甲,这个话题就好比java vs. .net一样没有什么意义。做微内核的底层操作系统,你需要用oo来写吗?做一个业务系统,你需要用老cobol去写吗?

没有oo,那么今天我们要写个代码就变成这个样子:

================================================
1. 问题分析
    在正式的程序设计之前首先要分析和透彻地理解问题本身,用结构化的分析方法分析问题的结构。要克服急于编程的欲望,开始时必须保证有一段时间集中精力分析软件应当做什么,而不是如何来做。根据问题的性质和要求构造一个满足问题要求和限制的系统。
    结构化分析的基本方法就是“分解”和“抽象”。把一个大问题分割成若干个小问题,然后分别解决,这就是“分解”。先考虑问题的本质和功能,暂把问题的细节略去,以后再考虑实现的细节,这就是“抽象”。自顶向下逐层分解的分析体现了分解和抽象的原则,使人们不至于一下子陷入细节,这样有助于正确地理解问题,避免走“冤枉路”。
    在结构化分析阶段,学生应先画出问题流程图,导出系统的逻辑模型,用约定的图型和记号,对问题进行逻辑上的模拟和描述。
    2. 结构化设计
    在导出了问题流程以后,就可以进行系统结构设计,即把问题模型转化为系统结构模型。这个阶段的工作是将系统划分成一个个模块,选择数据结构,定义在其上进行的操作,利用这些操作便可以实现系统所要求的功能。每一个操作是一个过程或函数,其对应于一个模块,以完成系统的子功能。所有模块应按从上向下调用的原则构成层次型的结构图,并与问题的逻辑结构相对应。
    在结构化设计过程中要列出过程和函数间的调用关系,过程的接口部分说明,模块之间的输入输出方式,模块之间传递什么数据类型,求精所得出的模块结构图。
    用结构化的自然语言描述模块所要做的工作和输入输出。
    在把系统划分成模块时,要考虑以下几个因素: 模块内部数据联系度要大,模块问的联系度要低,模块尽量通过少数参数联系,模块间的共享信息应尽量少。
    3. 过程设计
    即确定每个模块的内部特征,即怎样做的问题。按照在前一阶段规定的逻辑模块设计程序和控制结构,使程序结构清晰、流畅。
    按照操作的要求确定数据结构及其算法。
    使用顺序,选择和循环三种基本的单入口和单出口的控制结构描述过程的内部流程,使程序的基本结构与问题的流图结构保持一致,使程序的静态结构与动态执行保持一致,使过程流图易读、易编码、易修改。
    过程设计主要有图形描述方法和设计语言描述方法两种,前者有流程图、 N-S盒图和PAD(程序分析图)。如采用C语言来进行程序设计,在过程设计阶段可采用三个基本的控制结构和自然语言来描述程序流程,用这种方法进行过程设计,其结构与最终的程序接近,很容易进一步细化,编写正式的语言程序。
    4. 结构化编程
    在完成了过程设计之后,就可以着手编写C程序了。在编程时除了要求源程序的语法正确、程序逻辑无误,还要求程序有较好的可读性、可靠性、健壮性、可测试性和可修改性。
    结构化程序设计支持自顶向下、逐步求精的思想,采用顺序、选择和重复三种单入口、单出口基本控制语句和它们的嵌套组合来构成具有复杂层次的结构化程序,用这种方法编制出来的程序具有较好的可读性、可靠性和可测试性。结构化编程方法严格限制goto语句的使用。
    (1) 结构化编程要求程序员有良好的程序设计风格,程序结构友好,层次分明,思想清晰。
    (2) 采用良好的程序书写文体和格式,程序行按程序的层次结构合理安排缩格,使其按锯齿形排列。程序中插入必要的空行,使逻辑结构更加清晰、易读。
    (3) 在程序中加上必要的注释。注释有序言性和功能性两类。注释要包含程序模块的功能、界面接口及进入及离开模块的参数的说明、调用语句的格式。对程序中的数据结构及重要变量和一些主要语句要加以说明。一般讲注释的总量约占全部源程序的三分之一到一半以上。注释要在开发过程中形成,而不能在上机完成后补写。
    (5) 选用有意义的常量、类型和变量标识符,并使这些标识符按一定的规律排列,尽量避免采用容易混淆的英文字母和数字字符作为变量标识符,如英文字母o和数字0、英文字母I、l和数字1等。
    (6) 语句代码要简单,直接,清晰,不要追求奇特怪巧的“技术”。
    (7) 避免过多的循环或条件嵌套,避免复杂的条件测试。一般情况下逻辑运算“非”总令人头痛一些。在多条件测试时,使用括号可增加条件测试的清晰性和可靠性。
    (8) 合理的对用户友好的输入输出格式。交互式I/O中,输入要有提示,并采用自由格式。输出语句要带有输出值的说明,格式要整齐,美观。
    (9) 不要修补结构不好的程序,要忍痛割爱,从新编写。
================================================================
以上出自:http://ee.sjtu.edu.cn:8080/os/lab1.asp

当然,我不否认有些人很天才,过程方法对他来说足够了,甚至他只需要0101的?键盘的键太多了,雨人一定能够做到。
0 请登录后投票
   发表时间:2008-09-03  
seemoon 写道
感觉这个帖子的争论很水,真的,想不到还有人在无聊的说这些事情。tiobe 08年编程语言的排名上,c仍名列三甲,这个话题就好比java vs. .net一样没有什么意义。做微内核的底层操作系统,你需要用oo来写吗?做一个业务系统,你需要用老cobol去写吗?




你不知道银行的核心业务系统就是用cobol来写的吗?无知没关系,但别露出你的愚昧。
0 请登录后投票
   发表时间:2008-09-04  
haiyan_qi 写道
seemoon 写道
感觉这个帖子的争论很水,真的,想不到还有人在无聊的说这些事情。tiobe 08年编程语言的排名上,c仍名列三甲,这个话题就好比java vs. .net一样没有什么意义。做微内核的底层操作系统,你需要用oo来写吗?做一个业务系统,你需要用老cobol去写吗?




你不知道银行的核心业务系统就是用cobol来写的吗?无知没关系,但别露出你的愚昧。


呵呵,legacy system好吧?这牛角钻得够深的。的确人固有愚昧的一面。

0 请登录后投票
   发表时间:2008-09-05  
...OO和数据操作是两个不同的内容..拿来比较干什么?

相辅相成...

OO的思想用来配合需求
数据操作用来处理需求中的内容数据...

你用OO单纯去处理数据是很麻烦..

各有各的长处,也有短处....

突然想起很早以前的一个谈论。...五笔和拼音哪个好....
0 请登录后投票
   发表时间:2008-09-06  
多研究些问题,少谈些主义

java是OO吗?static的存在就有悖OO
0 请登录后投票
   发表时间:2008-09-06  
OO流行,是因为使GUI开发变得简单,人们自然希望把这种成功推广到所有的开发环境。
0 请登录后投票
   发表时间:2008-09-16  
越来越觉得这些人很"操蛋", 问题就在于这样讨论的意义在什么地方, 只说不做, 说完之后照样跟说之前用什么语言就用什么语言, 用什么思想就用什么思想. 虚伪啊! 整天只知道拿纸给老外擦屁股再给自己擦屁股, 根本没有勇气倒过来.
0 请登录后投票
   发表时间:2008-09-16  
无力的反驳
0 请登录后投票
   发表时间:2008-09-16  
yayv 写道
OO流行,是因为使GUI开发变得简单,人们自然希望把这种成功推广到所有的开发环境。


突然看到,oo开发真的使gui开发简单了?
我怎么觉得任何语言的gui库都很别扭呢。
无论cpp,java,都不是靠GUI起家的。
0 请登录后投票
   发表时间:2008-09-17  
我怎么觉得这个话题放在21世纪简直就像在争论地球是不是圆的一样呢。
0 请登录后投票
论坛首页 综合技术版

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