The Practice of Programming

Brian W. Kernighan, Rob Pike

出版时间

1999-02-14

ISBN

9780201615869

评分

★★★★★
书籍介绍
With the same insight and authority that made their book The Unix Programming Environment a classic, Brian Kernighan and Rob Pike have written The Practice of Programming to help make individual programmers more effective and productive. This book is full of practical advice and real-world examples in C, C++, Java, and a variety of special-purpose languages. Kernighan and Pike have distilled years of experience writing programs, teaching, and working with other programmers to create this book. Anyone who writes software will profit from its principles and guidance.
AI导读
核心看点
  • 涵盖命名、调试、测试等全生命周期实践
  • 强调代码简洁与一致性,遵循KISS原则
  • 提供C/C++/Java等多语言实战经验
适合谁读
  • 希望提升代码质量与工程能力的程序员
  • 追求高效、简洁编程风格的开发者
  • 需要系统梳理编程最佳实践的从业者
读前提醒
  • 建议结合具体项目实践,边读边反思
  • 部分技术细节可能随时代演进,重理念
  • 英文原版阅读体验更佳,翻译版需谨慎
读者共识
  • 短小精悍,充满不过时的编程金玉良言
  • 经典之作,对改善代码风格有显著帮助
  • 理念超前,虽部分技术老旧但思想永存

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "全局变量、全局函数、类和结构体都应该有说明性的名字,以表明它们在程序里扮演的角色。 相反,对局部变量使用短名字就够了。按常规方式使用的局部联邦可以采用极短的名字,比如i、j作为循环变量;p、q作为指针;s、t表示指针等。 函数应该采用动作性的名字。函数名应当用动作性的动词,后面可以跟着名词: now = date.getTime(); putchar('\n');"
  • "对返回布尔类型值(或真/假)的函数命名时,应该清楚地反映其返回值情况。比如下面的命名就不是很好了: if (checkoctal(c)) ... 因为这里函数名字就没有指明什么时候返回真,什么时候返回假。而下面这种写法就挺好: if (isoctal(c)) ... 这样就把返回真假的情况指明了。"
  • "一个变量的作用域越大,它的名字所携带的信息就应该越多。 全局变量使用具有说明性的名字,局部变量用短名字。根据定义,全局变量可以出现在整个程序中的任何地方,因此它们的名字应该足够长,具有足够的说明性,以便使读者能够记得它们是干什么用的。"
  • "释放资源与分配资源应该在同一个层次进行。 这种处理原则的另一种说法是:资源的分配状态在跨过界面时不应该改变。"
  • "当系统内部提供的代码太多时,人们将无法知道程序在其表面下到底做了什么。我们应该如何评价这种对控制和洞察力的丧失,这是更不清楚的事情。这也就是STL版本中遇到的情况,它的性能无法预料,也没有很容易的办法去解决问题。 目前存在着一种对软件的广泛的不断增长的关注:当程序库、界面和工具变得越来越复杂时,它们也变得更难以理解和控制了。当所有东西都正常运转时,功能丰富的程序设计环境可以是非常有生产效率的,但是如果它们出了毛病,那就没什么东西可以依靠了。如果问题牵涉到的是性能或者某些难于捉摸的逻辑错误时,我们很可能根本没有意识到有什么东西出了毛病。"
  • "scanf的所有参数都在函数被真正调用前已经求好值了,所以&profit[yr]实际使用的总是yr原来的值 (PS:scanf("%d %d", &yr, &profit[yr]);)"
  • "含有否定运算的条件表达式比较难理解。"
  • "如果你工作在一个不是自己写的程序上,请注意保留程序原有的风格。当你需要做修改时,不要使用你自己的风格,即使你特别喜欢它。程序的一致性比你本人的习惯更重要,因为这将使随你之后的其他人生活得更容易些。"
用户评论
传统要保持
经典之作。大部分内容范围和《编程珠玑》有重合。
很实用,很幽默。
这本书应该是我目前唯一个给五星的书。粗读了一遍,利用周末两天时间读完了,发现这里面涉及到的章节知识是一个合格程序员都需要掌握的内容。以后要把后面涉及工程类的细读,希望能把每章节后面的supplementary reading都拜读一遍,虽然这不是一件容易的事情。
这本书读过,今天再读一遍,获益匪浅。好书就是应该经常读
推荐给新手看。
读的中文版翻译不太行
比较实用的经验.
还行
收藏