第33章个人性格(代码大全5)

第33章 Personal Character

个人性格

  • 33.1 个人性格是否和本书话题无关
  • 33.2 聪明和谦虚
  • 33.3 求知欲
  • 33.4 诚实
  • 33.5 交流与合作
  • 33.6 创造力和纪律
  • 33.7 懒惰
  • 33.8 不如你想象中那样其作用的性格因素
  • 33.9 习惯

33.1 Isn‘t Personal Character Off The Topic

个人性格是否和本书话题无关
编程过程非常耗用脑力,这种特性使得个人性格显得很重要。编程工作本质上是项无法监督的工作,因为没人真正清楚你正在做什么。我们都经常有这样的经历——耗用80%的时间着力于项目的个别地方,而花费20%的时间来完成其余80%的工作。
老板无法强迫你成为好的程序员,很多时候他甚至无法判断是否合格。如果你想有所成就,只能全凭自己,这涉及到你的个人性格。
一旦决心成为出色的程序员,你的发展潜力是很大的。各种研究发现,不同程序员创建某个程序所需的时间差可达10:1,同时还发现不同程序员调试程序所需的时间、程序实现规模、速度、错误率和检查出的错误数目也能达到10:1。
你无法提升自己的聪明程度,但性格在一定程度上能够改进。事实证明个人性格对于造就出程序员高手更具有决定性意义。

33.2 Intelligence and Humility
聪明和谦虚
聪明不像是个人性格的一个 方面,也确实不是。碰巧的是,高智商与优秀程序员之间并无太紧密的联系。
什么?难道不需要智商很高吗?
对,是不需要。没人能同计算机那样迅速敏捷。要充分理解一个普通的程序,你得有很强的吸取细节的能力并同时消化它们。如何专注你的聪明才智,比你有多聪明更重要。
正如第5章“软件构建中的设计”所提到的,Edger Dijkstra在1972年的图灵奖演讲会上宣读了一篇名为《The Humble Programmer》(《谦卑的程序员》)的文章。他认为大部分编程工作都旨在弥补我们有限的智力。精通编程的人是那些了解自己头脑有多大局限性的人,都很谦虚。而那些编程糟糕的人,总是拒绝接受自己脑瓜不能胜任工作的事实,自负使得他们无法成为优秀的程序员。承认自己智力有限并通过学习来弥补,你会成为更好的程序员。你越是谦卑,进步就越快。
很多好的编程做法都能减轻你的大脑灰质细胞(指脑力)的负担。

将系统“分解”,是为了使之易于理解。
进行审查、评审和测试正是 为了减少人为失误。
将子程序编写得短小,以减轻大脑负荷。
基于问题而不是底层实现细节来编程,从而减少工作量。
通过各种各样的规范,将思路从相对繁琐的编程事物中解放出来。
你也许会觉得开发更高的智力方是正途,所以无需这些编程拐棍;你也可能对利用这些智力拐棍的程序员不屑一顾。然而实际上,研究表名谦虚的程序员善于弥补其不足之处,所编写的代码让自己和其他人都易看懂,其中的错误页较少。满是错误和延误的开发过程才是邪门歪道。

时间: 2024-10-10 07:49:38

第33章个人性格(代码大全5)的相关文章

第8章防范式编程上(代码大全3)

防御式编程并不是说让你在编程时持“防备批评或攻击”的态度——“它就是这么工作!”这一概念来自防御式驾驶.在防御式驾驶中要建立这样一种思维,那就是你永远也不能确定另一位司机将要做什么.这样才能确保其他人在做出危险动作时你也不会受到伤害.你要担负起保护自己的责任,哪怕是其他司机犯的错误.防御式编程的主要思想是:子程序应该不因为传入错误数据而被破坏,哪怕是由其他子程序产生的错误数据.更一般地说,其核心是要承认程序都会有问题,都需要被修改,聪明的程序员应该根据这一点来编程序. 8.1 Protectin

第四章关键的构建决策(代码大全2)

一旦你能确定 “构建”的基础已经打好,那么准备工作就转变为针对特定“构建”的决策了.第3章“三思而后行:前期准备”讨论了设计蓝图和建筑许可证在软件业务里的等价物.你可能对那些准备工作没有多少发言权,所以在第3章关注的焦点是确定“当构建开始后你需要做什么”.本章关注的焦点是程序员和技术带头人个人必须(直接或间接)负责的准备工作.在向工地进发之前,如何选择适用的工作别在你的腰带上,你的手里车里应该装哪些东西?本章讨论的就是这事务在软件中的等价物. 4.1 选择编程语言(Choice of Progr

第3章三思而后行:前期准备下(代码大全8)

第3章 Measure Twice, Cut Once:Upstream Prerequisities 三思而后行:前期准备 3.4 需求的先决条件 3.5 架构的先决条件 3.6 花在前期准备上的时间长度 要点 3.4 Requirements Prerequisite 需求的先决条件 软件架构(software architecture)是软件设计的高层部分,是用于支撑更细节的设计的框架. 为什么要把架构作为前期准备工作呢?因为架构的质量决定了系统的“概念完整性”.后者继而决定了系统的最终质

第8章防范式编程下(代码大全4)

8.4 Exceptions 异常 用异常通知程序的其他部分,发生了不可忽略的错误 只在真正例外的情况下才抛出异常 不能用异常来推卸责任 避免在构造函数和析构函数中抛出异常,除非你在同一地方把它们捕获 在恰当的抽象层次抛出异常 在异常消息中加入关于导致异常发生的全部信息 避免使用空的catch语句 了解所用函数库可能抛出的异常 考虑创建一个集中的异常报告机制 把项目中对异常的使用标准化 对于像C++这类语言,其中允许抛出多种多样的对象.数据及指针的话,那么就应该为到底可以抛出哪些类的异常建立一个

《代码大全》读书笔记

初读云风大大的读书笔记,收获蛮多,云风大大的读书笔记只记录了1到442页的.我直接读了400页之后的,也做了后续的读书笔记.<代码大全>第二版确实是一本好书,每个人读了能领悟的东西并不一样,本读书笔记是博主略有领会的东西,分享出来是希望没读此书的人有所收获,要是能引起你对<代码大全>的兴趣,去通读本书的话就更好了. 另附云风大大的1到442页读书笔记链接:http://blog.codingnow.com/cloud/CodeComplete P439 短路求值,更好的办法是使用嵌

《代码大全2》读后感czz

经老师推荐,买了一本<代码大全2>,花了近3个月的时间看完了,看完后觉得还有很多值得回味的地方,而且每部分之后作者还推荐了不少经典书籍.所以,作个读书心得.全书的主题是软件构建,关于软件构建问题的方方面面均有涉及,共分7个部分,从软件构建前期准备,到语言层的一些问题,再到代码完善,系统考虑以及软件工艺等等.以下分别进行简单说明. 第一部分是打好基础,本部分主要是软件构建前期的工作,以及对一些基本概念的介绍,具体包括如何选择编程语言和构建实践方法,如何理解软件开发的过程.软件开发本质上说就是工程

WIN XP蓝屏代码大全

转自:廊坊师范学院信息技术提高班---韩正阳 http://blog.csdn.net/jiudihanbing WIN XP蓝屏代码大全WIN XP蓝屏代码大全一.蓝屏含义 1.故障检查信息 ***STOP 0x0000001E(0xC0000005,0xFDE38AF9,0x0000001,0x7E8B0EB4) KMODE_EXCEPTION_NOT_HANDLED ***其中错误的第一部分是停机码(Stop Code)也就是STOP 0x0000001E, 用于识别已发生错误的类型, 错

《代码大全》全文 高清pdf下载

前面5章收获不大,更多的是 中间的部分,如何实际写出一种高效优美的代码,如何封装 类,构建子程序,如何定义好的命名.同重构有很多部分的重叠. 其中感触最深的一节,软件工程最首要的核心技术: 控制复杂度!!!控制复杂度!!!需要学习的朋友可以通过网盘免费下载pdf版 (先点击普通下载-----再选择普通用户就能免费下载了):http://putpan.com/fs/7y9i5bfe8nfsehau3/ 作者简介  · · · · · · 史蒂夫·迈克康奈尔(Steve McConnell)被公认为

代码大全阅读笔记(二)

代码大全这本书只看懂了一部分,现只对最有收获的部分写入笔记里 第七章 创建子程序的正当理由 (1)降低复杂度;(2)避免代码充分;(3)支持子类化;(4)隐藏顺序;(5)隐藏指针操作;(6)提高可移植性;(7)简化复杂的布尔判断;(8)改善性能 对于过于简单的代码写成子程序的两大理由:1 可以增加程序的可读性 2简单程序可能变成复杂程序 1 在子程序层上设计 内聚性强调把一件事做好,不再做其它任何事情这样做的好处是得到更高的可靠性 顺序上的内聚性是指在子程序内包含有需要按特定顺序执行的操作,这些