软件复杂度

RMB_9999999999999999 2007-01-22 03:33:00

许久以来,总是困惑一个问题,软件到底应该多复杂?

在工作中,我总是指责我们的软件写的太罗嗦,应该精练、再精炼,仿佛我觉得几乎就应该一行代码作出所有工作。

可是环顾各大经典软件(包括Windows操作系统本身),庞大的代码量,并不罕见,而且也并不妨碍这些软件成为伟大的软件。

那么,制约复杂的是什么?

我现在觉得,一个优秀软件的复杂度,应该在乎两点:
1。代码不多余,不缺少。有该有的,却没有废话。就想好文章。
2。关联关系清晰舒坦。

做一个大的软件,很多的代码量肯定不能避免。但是,这些模块之间的关系,应该既微妙复杂又清晰好理解。就像人体各器官。
或许学学中医,有利于软件开发?;P
...全文
1262 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
kuyesuifeng 2008-07-04
  • 打赏
  • 举报
回复
关联关系清晰,软件结构合理,并且遵循高聚合低耦合,复杂度自然降低
Lilly56 2008-07-02
  • 打赏
  • 举报
回复
采用面向对象编程,多复杂都不怕.
netlcx 2008-06-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 dujinghong 的回复:]
1 对问题域(需求)认识和描述的清晰程度

2 软件结构合理性:高内聚、低耦合、软件分层(如MVC)

3 重视设计,注重文档

4 优秀的编码,测试,维护

5 好的项目管理。

软件的复杂度根本上由问题域本身决定,我们能做的就是:不要人为地让它变得更复杂。
[/Quote]
星空Neo 2008-06-05
  • 打赏
  • 举报
回复
以前听过一个观点

一个函数代码行数量不能太大
一个函数的代码行多说明函数的功能能被分解。

某人说他写的软件 一个函数不超过20行。
zmzman 2008-05-31
  • 打赏
  • 举报
回复
同意:软件的复杂度根本上由问题域本身决定,我们能做的就是:不要人为地让它变得更复杂。
可以看另一个帖子,讨论相似问题
http://topic.csdn.net/u/20080106/11/bf05386e-be52-499e-bded-13367b18a68b.html
jdlsfl 2008-05-31
  • 打赏
  • 举报
回复
软件
有些地方需要做简单
有些地方需要做复杂
其实都是为了项目的利益,或者是公司的长远利益
巧乐之 2008-05-30
  • 打赏
  • 举报
回复
需要应用好封装的概念

1、从类(对象)的使用者的角度出发,屏蔽所有对用户无用的方法和属性;
(——对应于java的public修饰符)

2、从实现类(对象)的功能的角度出发,将各种与实现相关的细节的可见性,
限制在类、包、继承树等局部范围内。
(——对应于java的private、缺省和protected修饰符)

这样,实现上上很复杂的应用,对软件用户、代码读者和系统继承者而言,仍然可以具有各自需要的简单的、便于裂解的结构
mzh143 2008-05-30
  • 打赏
  • 举报
回复
dujinghong ()发表于:2007-05-26 15:07:3710楼 得分:0
1 对问题域(需求)认识和描述的清晰程度

2 软件结构合理性:高内聚、低耦合、软件分层(如MVC)

3 重视设计,注重文档

4 优秀的编码,测试,维护

5 好的项目管理。

软件的复杂度根本上由问题域本身决定,我们能做的就是:不要人为地让它变得更复杂。
同意……
Fusuli 2008-05-29
  • 打赏
  • 举报
回复
再复杂的软件,也要注意一点,用户使用一定要简单
zrb007 2007-06-12
  • 打赏
  • 举报
回复
dujinghong(红风) 说的在理,当软件有一定复杂度后,项目管理很重要,也是考验一个pm能力的舞台。
qiushikong 2007-06-01
  • 打赏
  • 举报
回复
灏忚蒋浠跺線澶嶆潅浜嗕綔锛屽綋缁冧範锛? 澶ц蒋浠跺線灏忎簡浣滐紝鏄按骞
  • 打赏
  • 举报
回复
1。代码不多余,不缺少。有该有的,却没有废话。就想好文章。
2。关联关系清晰舒坦。

除了这两句话有用,楼主说的其它那些都在左在右,不说也罢。
但这两句,也是增一分则肥,减一分则瘦的理想概括。具体标准因人而异因每个人不同阶段的水平认识而异。总体来说,是没什么可讨论的,得不到一个确切的结论。
中国红001 2007-05-26
  • 打赏
  • 举报
回复
1 对问题域(需求)认识和描述的清晰程度

2 软件结构合理性:高内聚、低耦合、软件分层(如MVC)

3 重视设计,注重文档

4 优秀的编码,测试,维护

5 好的项目管理。

软件的复杂度根本上由问题域本身决定,我们能做的就是:不要人为地让它变得更复杂。
sss_free 2007-05-21
  • 打赏
  • 举报
回复
复杂度可以理解为一个问题的逻辑结构复杂的程度。
决定软件是否可以成功因素主要是逻辑结构是否正确,不是逻辑结构的复杂程度决定的。
例如编译器很复杂,但是编译器可以成功开发出来是因为编译问题的结构得到明确。
我倒是觉得如果不清楚问题的结构,软件只会越做也复杂,追后不得不放弃。
fsdy2000 2007-05-20
  • 打赏
  • 举报
回复
如果不是纯学术研究,讨论软件应该多复杂最好从软件以外的因素来考虑。我建议根据项目要求、资源限制以及软件应用场景等考虑。
我比较欣赏清晰、简洁。"代码不多余"不好判断,未必是这样。
HITTOWN 2007-05-19
  • 打赏
  • 举报
回复
软件终极设计目标:高内聚,低耦合。
复杂度:复杂问题,分解为简单问题。复杂度自然降低。
hawk_e2e 2007-05-13
  • 打赏
  • 举报
回复
软件应该有多复杂,是不是这样描述好点:不要把简单的问题复杂化,更不要把复杂的问题简单化。

不过还有一个问题就是:有什么方法能量度一个软件有多复杂?嘻嘻
Yewind 2007-05-10
  • 打赏
  • 举报
回复
有时候算法也很重要,换个算法干同样的事情,可能会事半功倍。
nkitten88 2007-05-10
  • 打赏
  • 举报
回复

1。代码不多余,不缺少。有该有的,却没有废话。就想好文章。
2。关联关系清晰舒坦。
macd004 2007-01-22
  • 打赏
  • 举报
回复
1。代码不多余,不缺少。有该有的,却没有废话。就想好文章。
2。关联关系清晰舒坦。

同意!!
加载更多回复(2)

1,265

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 管理版
社区管理员
  • 研发管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧