谈谈复杂度——unix编程艺术学习笔记

复杂度有三个来源:

1、  代码规模:一般就是代码的函数。

2、  实现复杂度:程序员为了理解一个程序从而建立其思维模型并调试该程序的困难程度。

3、  接口复杂度:主要是和用户接口的复杂度,比如用户界面,功能,操作等。

面对上面三个复杂度比较陷入三个陷阱:

1、  manularty(人力尺度)陷阱:主要是为了避免接口复杂度,而把许多底层人物抛给用户。

2、  blivet(硬撑)陷阱:主要是为了避免代码量复杂度,而使用极端晦涩复杂的算法。

3、  adhocity(过专用)陷阱:为了避免实现复杂度,不采用统一但是有些复杂的方案,而对每个问题都编写重复,专用的代码。

接口复杂度和实现复杂度的折中。所谓鱼和熊掌不可兼得,这两者是有冲突的地方。很多时候可以牺牲其中的一种复杂度而获得另一种的简单。有一个问题,就是该牺牲那个复杂度来换取整体的复杂度?

之前看过一篇文章,说到过一种理念:“差既是好”。这种理念强调实现的简单性,可以牺牲接口的简单性。

没有标准答案,重要的是培养斟酌每一种设计的习惯。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值