《代码大全》读后有感

原本是为了完成软件工程课的作业任务,才打开了这么一本大部头的著作。虽然这一周只读了几章,但是却觉得第一次这样认真的将软件与代码区别开来,也是第一次以工程的角度考虑软件。虽然上了“软件工程”这样的课程,但一来上课不认真,二来课程内容经常纠结于局部问题,所以没有感觉。想来这门课的老师也知道这样的情况,所以第一堂课就说明要我们找些这方面的著作看。然而...还是没能引起我们的重视。

直到上周这个时候,说道要检查博客,才想起这回事。原本想随便找本薄些的书看看,但又想着,要看还是看些经典,于是找到了《代码大全》。读了五六章,现在看来,作者用coding来描述software programing很有道理,软件的编写过程,说到底还是编码的过程,所有的准备,文档,最后是为了正确的编码。这里的正确当然不是语法等的错误,而是从整个软件考虑而言的逻辑,功能,可维护性等正确。

读这样的广受赞誉的著作,第一感受是举例众多,也是作者一再提到的“类比“的很好使用。读了这些章节,下面这些语句让我感受颇深:

“在进行增量式开发时,我们先做出软件系统的一个尽可能简单、但能运行的版本。它不必接受真实的输出,也无需对数据进行真实的处理,更不用产生真实的输出,仅需要一个强壮的骨架,支撑将来要开发的整个系统。
对于你标记的每一部分功能,可能仅需要调用虚假的类。
骨架形成之后,把每个虚假的类替换成真正的类;不再假装接受输入,而是加入接受真实输入的代码;不再假装产生输出,而是把产生真实输出的代码加入。”


这样的观点放在半年前我应该是没有感觉,但由于这学期参与了实验室中一些项目的过程,开始知道这样的开发过程的意义,而且这样的过程,十分适合在对整个软件架构了解不够清晰时使用,由一个非常清楚整个软件的程序员负责整个框架版本。而后由几个程序员各自负责一部分功能的编码实现。有利于整个系统的连接,同时也加快的软件的开发速度。

“自己编写那些现成的代码通常是没有意义的。”

在c语言后,接触了c#语言,其中将很多经常用到的算法等封装成了函数,可以直接调用。一开始我有些怀疑这样的做法,觉得是否会出现看不到的问题,而后与同学讨论到python中众多的包,matlab中的工具箱。才发现很多工具其实都是现成的,而且是由十分有经验的程序员用十分精炼的底层语言编写,经过了很久的历史论证才成为现在的软件包。对于这些被广泛,长久使用的工具,我们在软件开发时,大可以直接使用,一来效率提高,二来现成的代码往往优于临时写的代码。

测试不可能检测出“制造了一个错误的产品”,“使用错误的方法制造”之类的缺陷。这样的缺陷必须在测试前解决-更确切是在构建活动前。

虽然我们十分强调软件完成后的测试环节,然而测试,如上所说,不能检测方向上的错误,这样的错误最为致命。需要在开始构建活动前,甚至是编码之前。

一些程序员确实知道如何进行前期准备工作,但他们并没有做,因为他们不能抵抗“尽快开始编码”的欲望。

这往往就是程序员与软件工程师的区别,我们必须抵抗“尽快编写代码”的欲望,做好充分的前期准备,才能构建一个真正正确的软件作品。

如果你的老板命令你立刻开始写代码,第二个不太靠谱的方法:在你的桌角放一份旧的程序清单,然后投入需求和架构的开发中,不用理会。

这样类似语气的句子经常可见,由此可见,作者也是个经验十足的程序员,并且站在程序员的角度,为我们这些新一代的程序员指点迷津。而从这样玩笑般的语气可见,“需求与架构”必不可少,即使你的老板不懂,我们仍需做好这些工作,不然最后困扰的还是我们。

程序员是软件食物链的最后一环。架构师吃掉需求,设计师吃掉架构,程序员消化设计。

这句话大概也是说到了很多程序员的心坎,也说明了一个正确的“需求与架构”对程序员而言的重要意义。

开发过程能帮助客户更好的理解自己的需求,这是需求的主要来源。

作者的这番话让我觉得恍然大悟,在此之前,我一直以为,我们要做的就是尽可能在开始开发前,确定需求。但似乎真的如作者所说,“这是不可能的”。想想如果我们是客户,哪里肯呢个在这个东西什么都没有的时候就能完全说出来想用它干嘛。我们需要积极的在开发过程演示,让客户更明确自己的需求,这才是需求的主要来源!!

面对需求变更:   “我会整理一份修订过的进度表和成本估计表,这样你可以决定是现在实施还是再说”。

但往往,客户提出的需求有时是难以做到,或者对整个工程影响巨大,这时候作者的这个方法十分有效。整理好修订的进度表与成本表,这两个字眼最能让用户清醒的考虑提出的需求是否真的需要!!!

《代码大全》里,还有很多东西等待去发现,希望能从中体会软件构建的过程,理解软件成为“工程”的必要性。

时间: 2024-12-23 11:03:36

《代码大全》读后有感的相关文章

读世界是数字的有感

看了“世界是数字的”这本书后,本来对电脑配置不怎么了解的我,现在都可以自己去评价一台电脑的好坏,了解了关于计算机的结构和组成,与计算机的某些发展史,虽然有些以前有所涉猎,但仍然感觉像是打开了新世界的大门. 这本书中有关于计算机的的发明与改造,让我们见识了现代计算机发展史,还有对现在计算机的基础认知,看这本书,对于我们这些学IT技术的人是很有必要的,甚至还要更深入地了解其知识,不能单单停留在这表面. 这本书中对某些IT技术与知识有其对应的见解,在其生动的比喻中,我们学到了很多.比如在第二章的第一节

读《世界是数字的》有感 15级软工4班 李苏娴

近期,我阅读了<世界是数字的>一书.读完此书,让我对计算机专业相关知识了解更多. 此书简明扼要但又深入全面地解释了计算机和通信系统背后的秘密,让我们这些没有技术背景的学生更好地理解自己生活的这个数字世界.尤其是我们,了解这些技术常识对我们来说非常重要.     <世界是数字的>这本书将计算机和通信常识解释的非常透彻.全书一共12章,其中我最喜欢的是第五章和第七章,第五章说的是编程与编程语言,第七章说的是学习编程. 我认为想学好一个学科,你就要去花时间.精力去了解学习并加以实践.算法

读《世界是数字的》有感

<世界是数字的>这本书开篇作者举了两个例子分别是数码产品对世界和对自己的影响.然后给我们介绍了几种常见的数码产品的前世今生.我们从这些例子里面知道现在的社会会越来越数字化,而我们身处其中也会带来一些隐患.所以我们在使用电子产品的时候要注意自己的言行举止. 其次书给我们介绍了许多计算机的硬件,让作者更清楚明白的知道计算机的构造,作者让我们知道好多计算机的专业知识,先引导我们进入计算机的世界,然后再升入告诉我们计算机的世界是什么样子的,然后告诉我们要如何的应用好这些数字的产品. 从书中的东西我联想

读《世界是数字的》有感(补交)

<世界是数字的>是世界顶尖计算机科学家 Brian W. Kernighan 写给普通读者的入门书,对于一个计算机已经学了N年的专业人士来说,这本书也许简单了点,不过我还是认真过了一遍,发现也有一定的收货,因为一个人很难掌握本领域里的所有知识,或多或少会有一些欠缺,总会有一些你以前不知道的,或一直没理解清楚的但又很有必要知晓的知识,我在阅读此书过程中就有这种感觉,经常会有一种恍然大悟的感觉.在书的开头,作者就如是说.的确,在这个计算机时代,每个人都与计算机息息相关,计算机已经渗透到了世界上每个

世界是数字的,更是自己的——读《世界是数字的》有感

这几天,粗读了一本书,书名叫<世界是数字的>.作为IT行业内的优秀书籍,这本书对我产生了极大的启发. 在开始,先介绍一下这本书.该书用通俗的言辞详细地介绍IT领域各方面的知识的,使读者不仅可以学习到丰富的IT知识,又不觉得疲惫与无趣,实是一本好书. 第一部分,是计算机的硬件方面知识,让对计算机不是很了解甚至是一无所知的读者了解了计算机组成的基础知识,以及计算机内部处理的数据的方法.也让像我这样IT专业的学生学习到更多.硬件是计算机的基础,一台计算机没有网络,是一台单机计算机,没有绝大多数数软件

读《世界是数字的》有感②

第二章: 1.计算机表示信息的三个基本思想 计算机是数字处理器. 计算机用比特表示信息 2.较大的信息以比特组表示. 3.数字化数据都可以用多种方式来存储.传输和处理,但模拟信息不行. 4.数字系统处理的是离散值. 5.与模拟系统相比,数字系统还有另一个优势,就是它更容易扩展. 6.表示数字信息的最基本单位是比特. 7.数据处理及内存组织的基本单位都是8个比特.8比特被称为1字节.一个字节可以编码25个不同的值. 第三章: 1.CPU有一个小型指令系统,包含着它能够执行的基本操作.它可以做算术题

读《世界是数字的》后有感

<世界是数字的>是一部科普读物,出自顶尖计算机科学家Brian W.Kernighan之手,如果你不知道此人是谁的话,那么你或许知道      The Practice   of Programming中文名程序设计实践, BrianW.Kernighan与R.Pick合著,如果你也不知道程序设计实践,那么你肯定知道The C Programming Language,没错这本K&R,就是Kernighan与C语言之父里奇的著作,此书被誉为C语言的圣经,影响着一代又一代的程序员. 这本

《世界是数字的》读后感想

身为软件专业的我刚开始步入这么课程对我而言是如此的陌生, <世界是数字的>这本书介绍了很多的IT知识.他的作者是世界顶尖计算机科学家,现为普林斯顿大学教授的Brian W. Kernighan. 他的内容介绍是家用电器.汽车.飞机.相机.手机.等虽然你看不见,但这些设备都有计算能力.手机通信网络.有线电视网络.等基础设施背后无一不是计算机在支撑.如今的世界是数字的,而计算机和计算无处不在.这本书就是要告诉大家数字世界有关计算机的一切.本书没有高深莫测的专业术语,但它全面解释了当今计算和通信领域

关于读《世界是数字的》这本书的一些感想

对于这本书先来个简单介绍吧: 家用电器.汽车.飞机.相机.手机.GPS导航仪,还有游戏机,虽然你看不见,但这些设备都有计算能力.手机通信网络.有线电视网络.空中交通管制系统.电力系统.银行和金融服务系统等基础设施背后无一不是计算机在支撑.如今的世界是数字的,而计算机和计算无处不在.这本<世界是数字的>就是要告诉大家数字世界有关计算机的一切.<世界是数字的>没有高深莫测的专业术语,但它全面解释了当今计算和通信领域的工作方式,包括硬件.软件.互联网.通信和数据安全,并且讨论了新技术带来

大道至简 读后有感

大道至简  读后有感 结束大一的课程,自己总结收获,并没有觉得自己在计算机方面有了什么明显的进步,很想在以后的学习里能有所进步,而且这学期又新增了很重要的java课程,所以决定痛下决心,好好学习一番,便想以这<大道至简>作为开篇. 这几天看了本书的第一章,第一章的总体理念为编程的精义,共分为5个小结,即编程的精义,会或不会写程序,程序等于结构加算法,语言以及在没有工程的时代. 在编程的精义这一小节中,开篇便以愚公移山这一寓言故事来类比编程这一项工作,它通过古文中的话来形象的比喻了编程工作中的各