博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
每个程序员都应该读《Unix编程艺术》
阅读量:7237 次
发布时间:2019-06-29

本文共 1159 字,大约阅读时间需要 3 分钟。

本文为原创文章,首发于 。

我已经向饥人谷的学员不止十次地推荐过《Unix编程艺术》这本没有代码的编程书。

如果你想写出优雅的代码,这本书必读。

而且,知乎上各种编程大神说话时,经常会提到什么「自底向上」、「模块化」,该书都有很详细的解释。该书用来提升bigger效果十分显著。

看不完不要紧,能看多少是多少。

以下是该书对「模块化」的阐述:

  • 软件设计有两种方式:一种是设计得极为简洁,明显没有缺陷;另一种是设计得极为复杂,没有明显的缺陷。第一种设计方式要难得多。——《皇帝的旧衣》
  • 模块化原则就是:要编写复杂软件又不至于一塌糊涂的唯一方法,就是用定义清晰的接口把若干简单模块组合起来,这样一来,多数问题只在出现在局部,那么我们还有希望对局部进行改写或优化,不会牵一发而动全身。
  • 模块化代码的首要特质就是封装。封装良好的模块不会过多向外部披露自身的细节,不会直接调用其他模块的实现代码,也不是胡乱共享全局数据。模块之间通过 API ——一组严密的、定义良好的程序调用和数据结构来通行。
  • 正交性是有助于使复杂设计也能紧凑的最重要的特性之一。在纯粹的正交设计中,任何操作均无副作用;每一个动作只改变一件事情,不会影响其它。无论你控制的是什么系统,改变每个属性的方法有且只有一个。
  • 重复的代码会导致前后矛盾,产生质量差的代码。原因是当你修改这些代码的时候,往往只修改了一部分而不是全部。通常,这也意味着你对代码的组织没有想清楚。
  • 软件是多层的。一般来说,设计函数或对象的层次结构可以选择两个方向——自顶向下和自底向上。
  • 一个方向是自底向上,就是从具体到抽象——先从要解决的问题中,确定要进行的具体操作,然后向上进行抽象。另一个方向是自顶向下,就是从抽象到具体——从最高层面描述整个项目的功能和逻辑,层层向下,直到各个具体的操作。
  • 实际代码往往是自顶向下和自底向上的综合产物,同一个项目中经常同时兼有自顶向下的代码和自底向上的代码,这就导致了「胶合层」的出现。
  • 胶合层是个挺讨厌的东西,必须尽可能的薄,这一点极为重要。胶合层用来将东西粘在一起,但不应该用来隐藏各层的裂缝和不平整。
  • 面向对象理念的价值最初在图形系统、图形用户界面和某些仿真程序中被认可。令大家惊讶并逐渐失望的是,我们很难发现面向对象在其他领域有多少显著的优点。
  • 面向对象语言让抽象变得很容易——有点太容易了。面向对象语言鼓励「厚重的胶合和复杂的层次」。所有的面向对象语言都显示出某种使程序员陷入过度分层陷阱的倾向。

Unix编程艺术,教你如何优雅地编程。

加微信号: astak10或者长按识别下方二维码进入前端技术交流群 ,暗号:写代码啦

每日一题,每周资源推荐,精彩博客推荐,工作、笔试、面试经验交流解答,免费直播课,群友轻分享... ,数不尽的福利免费送

转载地址:http://pxgfm.baihongyu.com/

你可能感兴趣的文章
数据结构学习笔记(5.线性表之双向循环链表)
查看>>
智能家居趋势
查看>>
[Leetcode] Pow(x, n)
查看>>
关于Microsoft Speech SDK 中TTS的研究 [转]
查看>>
两个与后台有关的回调处理
查看>>
idhttp.post方式 调用datasnap rest 远程方法
查看>>
Gulp快速入门
查看>>
TClientDataSet的 fastscript封装
查看>>
有用的国外开源项目网址
查看>>
DataGridView 绑定DataTable方式编辑保存的bug?
查看>>
ComboBox 使用数据绑定时 Sorted 属性的bug
查看>>
BZOJ 3172 单词(ac自动机)
查看>>
具体数学第二版第四章习题(2)
查看>>
DotNetBar.7.0 Crack
查看>>
D3D中深度测试和Alpha混合的关系
查看>>
延时执行和取消延时执行
查看>>
关于线程安全
查看>>
使用Java自带的VisualVM监控远程主机JVM内存使用情况
查看>>
123——Appium Girls活动
查看>>
Linux系统CPU频率调整工具使用
查看>>