最近在看Unix编程艺术,收获颇多,联想起以前看过的同样获益匪浅的代码大全,突然萌生出比较两者观点的想法,那就开始吧。
Unix编程艺术:简称U。

代码大全:简称C。
1) 函数的长度
U ( 4.1 ): 200 到 400 之间的逻辑行代码是最佳点,可能的缺陷密度达到最小。
C ( 7.4 ):可以允许子程序的长度有序的增长到 100 至 200 行(不算源代码中的注释行和空行)
真的要争执到底是100到200好还是200到400好确实没有什么意义,总之记住,函数不要太长,当然也不要教条,函数写到200行,觉得长了,写一个子函数,将后续的几行代码写入,这样就有狗尾续貂之嫌了,总之,长度适中,表达一个完整逻辑即可。
2) 重复代码
U ( 4.2.3 ):重复会导致前后矛盾,对重复点修改时,有可能遗漏。
C ( 7.1 ):避免代码重复,毋庸置疑,创建子程序最普遍的原因是为了避免代码重复。
有些人总喜欢炫耀自己编写了多少多少行代码,殊不知对于代码的精雕细琢远胜于无数的ifelse,当代码在指尖跳跃时,不妨停下来想一想,编写代码之前的思考是否充分,是否还有更简洁的实现方法。正如U(4.2.5)中所述:因为我们编制软件是为了解决问题,所以我们不可能完全超然于问题之外——但是值得费点心思,看看可以抛弃多少先入之见,看看这样做能不能使设计变得更紧凑、更正交。这样做下来,代码复用经常由此变为可能。
3) Unix哲学和软件质量
U ( 1.6 )清晰胜于机巧,设计要简洁,复杂度能低就低。
C ( 20.1 )可维护性,可读性,可理解性。
简单!简单!简单!我想所有有过编程经验的人对于简单应该是最有意会的,在满足需求的情况下,采用最简单的实现方式,往往是程序员永远的希冀。记得看编程珠玑时,第八章的算法设计技术,介绍了在输入的任何相邻子向量中找出的最大值的算法,当看到最终的优化算法时,我的嘴基本上就合不上了,相信任何看到这里的人都会和我有同样的想法。

Unix编程艺术和代码大全比较阅读相关推荐

  1. 【转载】Unix编程艺术——Unix哲学

    Unix编程艺术主要介绍了Unix系统领域中的设计和开发哲学.思想文化体系.原则与经验.此文大致摘录了Unix的哲学. web程序员也应该看看此书,软件开发和web开发很多地方都是相通的.看完之后,我 ...

  2. Unix 哲学的一些原则——《Unix 编程艺术》

    Unix 哲学是在 Unix 先哲们和 Unix 本身所作出的榜样中体现出来的.可以概括为以下原则: 模块原则:使用简洁的接口拼合简单的部件. 用清晰的接口把若干简单的模块组合成一个复杂软件. 这样, ...

  3. 三读《UNIX编程艺术》

                                              三读<UNIX编程艺术>           第一次读<UNIX编程 艺术>是2004年的夏 ...

  4. 《UNIX编程艺术》读书笔记

    <!-- /* Font Definitions */ @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0; mso- ...

  5. Unix编程艺术——Unix哲学

    题外话:一个月之前,刚刚读完<unix编程艺术>这本据说有些"愤青"的书,读书的过程,感觉是种享受,不但unix本身是艺术,连作者著书也是艺术,本想就本书写篇读感,但是 ...

  6. 读《UNIX编程艺术》随记

    2012-07-07 <UNIX编程艺术>这本书是人介绍的, 一看到这书的厚度,我有想打退堂鼓的冲动.好厚的说. 不过,听到可以不用细也可以,就硬着头接下这本书了. 先看它的书皮,一位师傅 ...

  7. [总结]Unix设计哲学 Unix编程艺术

    转载请注明出处:http://blog.csdn.net/horkychen 学习了<<Unix编程艺术>>第一章关于哲学的部分, 做个汇总. 现在对精简设计, 舍弃华而不实是 ...

  8. 《Unix 编程艺术》 理解

    一:机制, 而不是策略 Unix文化贯穿始终的一条设计主线, 被翻译为: 机制, 而不是策略(Mechanism, not policy), 这句话的英文解释如下: The distinction b ...

  9. Unix编程艺术(前言)

    Preface 前言 Unix is not so much an operating system as an oral history. --NealStephenson Unix与其说是一个操作 ...

最新文章

  1. 3DSlicer33:Adding MRML
  2. 观后感,读了几篇博文
  3. 【转】全面理解javascript的arguments,callee,caller,call,apply概念(修改版)
  4. 剑指offer---用两个栈实现队列
  5. static函数的申明
  6. failed to introspect Class[org.springframework.cloud.context.properties.ConfigurationPropertiesBea]
  7. body-parser和multer
  8. ubuntu ble c语言编程,c – 如何在ubuntu上安装bluez进行开发?
  9. 创建springboot项目后运行,找不到或无法加载主类 com.itheima.Application,原因: java.lang.ClassNotFoundException
  10. 世界精神卫生日:不断变化的世界的应用程序
  11. 【精】Verilog语言缩写规范
  12. ElasticSearch服务器泄露 5700万个人数据外泄
  13. 我的世界java边境之地_我的世界边境之地是否存在 我的世界边境之地大揭秘
  14. 云小课|MRS基础原理之Hudi介绍
  15. 《肥鸟笔记--基础数据结构》一、栈
  16. 短线技术指标最佳组合_如何为您选择最佳的技术职业道路
  17. 大华java面试经验_大华面试(Java 基础)
  18. Microsoft Bitlocker企业级管理部署方案
  19. python使用dohq-tfs操作TFS(Team Foundation Server)的Work Item
  20. App中的私域流量,你知道吗?

热门文章

  1. ITeye,还IT淫一个简洁的首页吧!
  2. 设置子网掩码,子网的地址范围
  3. 解决问题:maven打包报错-There are test failures
  4. Le vent se lève, il faut tenter de vivre
  5. Fatal Python error: Segmentation fault
  6. 哈工大:ChatGPT调研报告
  7. lol12月25服务器维护,英雄联盟12月25日更新到几点 LOL更新维护公告
  8. php判断是否为手机、微信访问代码,100%精准
  9. 争当表率 争做示范 | 华云数据荣获第十三届无锡市专利奖优秀奖!
  10. 老年人学计算机方法,老年人学电脑不难