《代码大全》图书分享 章节个人性格

《代码大全》图书分享 章节个人性格

  • 图书介绍
  • 分享章节介绍
  • 个人性格和编程的关联
  • 聪明和谦虚
  • 求知欲
  • 诚实
  • 交流和合作
  • 创造力和纪律
  • 懒惰
  • 不那么重要的性格因素
  • 习惯

图书介绍

McConnell将构建的主要活动定义为构建规划、详细设计、编码和调试、单元测试、集成和集成测试。在本书中,构建是软件开发的重要组成部分,是软件开发中的核心活动,当重点关注它时,它可以显着提高程序员的生产力;此外,源代码被视为定义了软件的操作,当代码和文档相反时,就涉及到文档。最后,本书认为,施工是保证完成的唯一活动。

本书还给出了优秀程序员的技术。本书的整个第七部分都是关于软件工艺(布局、风格、特征、主题和自我文档)。

本书的其他七个部分分别是:奠定基础、创建高质量代码变量语句、代码改进、系统化考虑和软件匠艺。

分享章节介绍

如果你想寻求具体的编程技巧,那么本章显得太抽象,没多大用途。然而一旦你接受了本书其余部分的专项建议,本章就能向你清楚地说明怎样再进一步改善编程方法

个人性格和编程的关联

如果想要变得伟大,就得自个儿成全自个儿。

编程过程非常耗用脑力,这种特性使得个人性格显得很重要。人们都知道聚精会神地一天工作八小时有多么困难!也许你有过某天精力过分集中,以至于第二天无精打采的体会,或由于上月过分投入而本月没有一点精神。你可能某天从上午 8 点工作到下午2点,就感到累得不行了。但你还是坚持下来,又从下午 2点拼命干到5点。之后的一周时间,你却在修改这三小时里写出来的东西。

一旦决心成为出色的程序员,你的发展潜力是很大的。各种研究发现,不同程序员编程时间差异可达 10:1;同时还发现,不同程序员调试程序所需的时间、程序实现规模、速度、错误率和检查出的错误数目也能达到 10:1。

**你无法提升自己的聪明程度,但性格在一定程度上能够改进。**事实证明,个人性格对于造就出程序员高手更具有决定性意义。

聪明和谦虚

高智商与优秀程序员之间并无太密切的联系。

没人能同计算机那样迅速敏捷。要充分理解一个普通的程序你得有很强的吸取细节的能力并同时消化它们。如何专注你的聪明才智,比你有多聪明更重要

精通编程的人是那些了解自己头脑有多人局限性的人,都很谦虚。而那些编程糟糕的人,总是拒绝接受自己脑瓜不能胜任工作的事实,自负使得他们无法成为优秀的程序员。承认自己智力有限并通过学习来弥补,你会成为更好的程序员。你越是谦虚,进步就越快。

编程中减轻指脑力负担方法

  • 将系统“分解”,是为了使之易于理解。
  • 进行审查、评审和测试正是为了减少人为失误。如果你从不犯错就无须复审自己的软件。但要知道,人的智力是有限的,所以应和他人沟通来提高软件质量。
  • 将子程序编写得短小,以减轻大脑负荷。
  • 基于问题而不是低层实现细节来编程,从而减少工作量。
  • 通过各种各样的规范,将思路从相对繁琐的编程事务中解放出来。

你也许会觉得开发更高的智力方是正途,所以无需这些编程拐棍:你也可能对利用这些智力拐棍的程序员不屑一顾。然而实际上,研究表明谦虚的程序员善于弥补其不足之处,所编写的代码让自己和他人都易看懂,其中的错误也较少。满是错误和延误的开发过程才是邪门歪道。😂

求知欲

一旦承认自己的脑袋要理解多数程序还有难度,并意识到有效的编程就是去追寻改善这一境况的方式时,你就会开始需要付出毕生精力的漫长求索过程。在成长为高手的过程中,对技术事物的求知欲具有压倒一切的重要性。相关的技术信息在持续变化。很多 Web 程序员从不在微软 Windows 下编程,很多Windows下的程序员也从不与 DOS、UNIX、穿孔卡片打交道。技术环境的特定特征每5到10年就变化一番,如果没有足够的求知欲来跟上这些变化,你就面临落伍的威胁。

如果没有足够的求知欲来跟上这些变化,你就面临落伍的威胁

程序员都是大忙人,常常没有时间去考虑怎样改进自己的工作。如果你是这种情况,你并不孤独,很多人和你一样。下面是一些培养求知欲和把学习当做第一要务的特定方法。

在开发过程中建立自我意识

你越了解软件开发过程,无论通过阅读还是通过自己对软件开发的观察,你就越能理解变化,使团队朝着正确的方向发展
如果分配给你的工作净是些不能提高自身技能的短期任务,你理应表示不满。如果正处于竞争激烈的软件市场,则目前工作用到的一半知识将在三年后过时。假如不持续学习,你就会落伍。
其实你这样的人很受欢迎,没有必要花时间去为管理层干些不感兴趣的工作尽管就业形势跌宕起伏,有些就业岗位转向国外,但从 2002 到 2012 年,美国均软件从业职位数目将显著增长。如果在工作中学不到什么,就找一份新工作吧。

试验

对编程和开发过程做试验,是学习编程的有效途径之一。如果不了解所用语言的某一特性是怎么回事,可编写一个小程序来检验,看看它是如何工作的。请在调试器中观察程序的执行情况。用个小程序来检验某一概念,总比编写大程序时运用不太了解的特性要好。

如果小程序表现的特性与你的设想不一样,怎么办呢?那正是你要研究的问题。最好通过小程序找出答案,而不要用大程序。有效编程的关键之一就是要学会迅速制造错误,并且每次都能从中有所收获。犯错不是罪过,从中学不到什么才是罪过。

阅读解决问题的有关方法

解决问题是软件创作过程中的核心行为。HerbertSimon 报告了关于人类解决问题的一系列试验,发现人们并不总能自行找出解决问题的巧妙办法,即使这些办法很容易传授给他们(Simon 1996)。换话说,就算你想再发明个车轮,也不会注定成功,你发明的也许是方车轮
在行动之前做分析和计划 在分析和行动之间有着矛盾关系。有时必须停止收集数据马上行动,然而多数程序员的问题不在于分析过度。钟摆现在距离弧的那个“行动”半边还比较远,至少可以等到它快到中央时,你再担心别总呆在“析停滞”的位置上。

学习成功项目的开发经验

研究高手的程序

学习编程的一个特别好的途径是研究高手的程序。Jon Bentley 认为你应该坐下来,准备一杯白兰地,点一根上好的雪,像看优秀小说那样来阅读程序。实际做起来可能不会这么惬意。大部分人不愿意花休息时间深究长达 500 页的源程序,但是许多人乐意研究高层设计,并有选择地去研究某些地方的细节源代码。

从其他领域获取经验

软件工程领域里利用成败的先例相当有限制。如果对建筑学感兴趣,你会研究Louis Sullivan、Frank Lloyd Wright 和贝铭的设计图,参观他们设计的建筑物如果对结构工程感兴趣,你会研究Brooklyn 大桥Tacoma Narrows 大桥等混凝土钢铁和木材建筑。你会学习所在行业中成败的各种例子。

阅读他人的代码

不管有没有关于编程案例研究的书,你都应找些高手编的代码读读。看看你敬佩的程序员的代码,再看看你不喜欢的程序员的代码,比较它们之间的异同,比比你的代码,有什么差异?为什么会有差异?哪个更好?为什么?

和他人讨论代码

不仅要阅读别人的代码,还应渴望了解专家对你的代码的看法。找一些一流程序员评论你的代码,滤除其言语中的主观成分,注重解决切中要害的问题,从而改善编程质量。

阅读文档

程序员普遍有文档恐惧症。计算机文档通常写得很差,组织得也糟糕。尽管有这些问题,只要克服过度的恐惧,还是能从屏幕或纸质文档受益匪浅。文档中有许多有用的东西,值得花时间去看。要是忽视其中显而易见的信息会在新闻组和BBS上得到“RTFM!”这样的缩略语,意指“去读那该死的手册!(Read the fucking Manual!)”
现代语言产品一般都带有大量函数库,很有必要投入时间去浏览其说明。通常提供产品的公司都生成了许多你用得着的类,如果是这样,应确信你了解这些类,每两个月翻翻其文档。

阅读其他书本期刊

你愿意阅读本书就很值得称赞。你已经学到了比软件业中多数人都更多的知识,因为大部分程序员一年下来还看不完一本书(DeMarcoand Lister 1999)。只要看一些书就会使你的专业知识又迈进一步。如果每两月能看一本计算机好书,大约每周 35 页过不了多久,你就能把握本行业的脉搏并脱颖而出。

同专业人士交往

和希望提高其软件开发技能的人为伍。参加某个交流会加入某个用户群,或者参与网上讨论。

向专业开发看齐

好的程序员总是不断寻找机会来提高自己。下面是我公司等多家企业采用的专业开发阶梯。

  • 第一级:入门级 入门者会利用某语言的基本功能,能够编写类、子程序循环和条件语句,会使用语言的许多特性。
  • 第二级:中级中级的程序员已经度过入门期,能利用多种语言的基本功能并会得心应手地使用至少一种语言。
  • 第三级:熟练级 熟练级的程序员对语言或环境(或两者兼具)有着专业技能。这一级的程序员也许精通 J2EE的盘根错节,或者对《Annotated C++ReferenceManual》如数家珍。这些程序员都是所在公司的活宝,很多程序员再也不能超越该层次。
  • 第四级:技术带头人级 技术带头人具有第三级的专业才学,并明白编程工作中只有 15%用来和计算机交互,其余都是与人打交道的。程序员一般只花30%的时间单独工作,与计算机交互的时间则更少(McCue 1978)。技术带头人会为人写代码,而非为机器。真正高于所写的代码,像水晶一样晶莹剔透,还配有文档。他们可不会浪费其宝贵的脑力,去重新组织用一句注释就能说清楚的某块代码逻辑。

再厉害的编码者若不重视可读性的,通常只能呆在第三级,但这并不常见依据我的经验,有人之所以写出难以看懂的代码,主要还是因为其代码质量太差他们不会自言自语道:“我的代码不好,所以我得让它们不好懂。”他们只是没有了解透所写的代码,自然无法使之易读,从而将自己困在较低的级别。
我曾见过最糟糕的代码,其作者不让任何人看懂她的程序。最后,她的上司威胁要解雇她,如果她还不合作的话。她的代码没有注释,变量名尽是些x、xxxxx、xx1和xx2之类的东西,而且都是全局变量。上司的老板却以为她是个高手因为她能很快改正错误。其实正是其低劣的代码质量给了她表现纠错能力的大量机会。
当初学者或中级程序员不是错,当熟练级程序员而非技术带头人也无可厚非但如果知道自己该如何改进后,还总是在初学者或者中级程序员阶段徘徊,就是你的不对了。

诚实

编程生涯成熟的部分标志就是发展出一种不屈不挠的诚实感。通常表现为以下几个方面:

  • 不是高手时不假装是高手
  • 乐于承认错误。
  • 力图理解编译器的警告,而非弃之不理。
  • 透彻理解自己的程序,而不要只是编译看看能否运行。
  • 提供实际的状况报告。
  • 提供现实的进度方案,在上司面前坚持自己的意见。

交流和合作

真正优秀的程序员知道怎样同别人融洽地工作和娱乐。代码便于看懂是对团队成员的要求之一。计算机可能和别人一样频繁地读你的代码,但是它读质量差的程序可比人强多了。作为一项可读性原则,应该把修改你代码的人记在心上。编程首先是与人交流,其次才是与计算机交流。

创造力和纪律

一些有创新精神的程序员将各种标准和规范的纪律看成束缚其创造力的东西,事实正好相反。难道网站的每个网页采用不同字体、颜色、对齐方式、图形风格及导航条,效果会好吗? 效果只会是一片乱七八糟,而非有创意。大型项目若没有标准和规范,完成都有困难,更谈不上创新了。不要将创造力花到无关紧要的事物上,在非关键之处建立规范,从而在重要地方倾力发挥你的创造性。

精致的程序作品也要求许多约束。如果编程之前不分析需求也不设计,编写代码的过程中你会发现要了解许多东西。你的工作成果与其说是艺术品,不如说是幼儿画。

懒惰

偷懒表现在以下方面:

  • 拖延不喜欢的任务
  • 迅速做完不喜欢的任务,以摆脱之
  • 编写某个工具来完成不喜欢的任务,以便再也不用做这样的事情了

不那么重要的性格因素

坚持

根据环境的不同,坚持可能是财富,也可能是负担。和大部分的中性词一样依据你的褒贬意图而有不同的意思。如果你想表达贬意,可以说是“固执已见”或“顽固不化”;如果你要表达意,可以说是“坚不拔”或“持之以恒”。

多数时候软件开发中的坚持其实就是没有好处的“固执”。当在某段新代码上卡壳时,坚持很难让人称道。不妨另辟蹊径,尝试重新设计类,或者绕过去,以后回头再试。当一种办法行不通时,正好可以换个办法试试(Pirsig 1974)。

经验

程序开发中的信息快速更新,导致“经验”也跟着高速变化。在很多行业中有成就的专业人士可以度假、休息,尽享成功带来的荣誉;而在软件开发行业任何人放松下来就很快跟不上形势。为了让自己仍然有用,你必须紧跟潮流。对于求知欲强的年轻程序员来说,这会是他们的优势:而老程序员常常自认为有资历,讨厌年复一年地证明自己的能力。
最后一个问题是如果你工作 10年,你会得到10还是1经验的10次重复?必须检讨自己的行为,才能获得真正的经验。只有坚持不懈地学习,才能获取经验;如果不这样做,就无法得到经验,无论你工作多少年。

编程狂人

这种对编程的痴迷简直是胡闹,几乎注定会失败。彻夜编程让你感觉像是世上最好的程序员,却要花几个星期去纠正你在短暂辉煌时埋下的失误。可以热爱编程,但热情不能代替熟练的能力,请想明白什么更重要。

习惯

初涉某事时,就应端正态度来学。开始做事情时,你还会积极思考,轻松决定做得好坏。干了一段时间后,就会习以为常,“习惯的力量”开始起作用。请确保这些习惯是你所希望的东西。

坏习惯→新习惯→好习惯

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值