一个程序员的基本素养——读《程序员修炼之道》有感

WHYDD WHYDD     2022-10-29     435

关键词:

“任何时候我也不会满足,越是多读书,就越是深刻地感到不满足,越感到自己知识贫乏。”在近期的学习与读书过程中,我明显感觉到了自己十分的吃力,不仅仅在于对知识的积累,还在于自己的理解与领悟无法跟上进度。在书新的一章中,我看到了各种自己,不过都是作者举的反例当中,读书中仿佛自己就躺在手术台中,一步一步的被解剖,各种缺点被放大,也明白了不是会编几段程序、会几种语言就能称得上注重实效的程序员。

当我们的项目开始进入编码阶段时,有一种认知是很不正确的:机械地把设计转换为可执行语句,我一想,完了,因为每一次的编程作业我都是这么认为的,将老师提出的要求一步一步的写成可执行语句,之后的“程序丑陋、低效、结构糟糕、不可维护和完全错误”抨击这我的心灵,很难想象自己竟如此不堪。这章有很多的地方打破了我原以为的认知,比如靠巧合编码等,这些内容瞬间变得价值斐然,因为这正是我所缺少的,更是我今后发展的重要因素。

“要深思熟虑地编程”,我们应该避免靠巧合编程,避免靠运气和偶然的成功,在此我讲一个自己的事情,有一次我完成了编程作业时,结果也符合提供的测试集,但在我又一次阅读与检查自己的代码时,发现了一个致命的问题,原本应该是“==”的符号,我少写了一个等号,于是便改了过来,之后的运行便出现了我吃惊的结果,结果与正确结果一个都没对应上,这个应该就是所谓的“靠巧合”,因为一开始就不知道它为什么能工作。假设用坏数据调用一个例程,并以一种特定的方式加以响应,而代码就以该响应为基础,但原作者并没有预期该例程会以那样的方式工作,当例程被修正时,便是代码崩溃时,尽管有时它们看起来能工作,但那只是个巧合。作为一个注重实效的程序员,我们应该学会思考和判断,第一我们要意识到自己在做什么;第二不要盲目的编程,不要构建自己不理解的应用或使用不熟悉的技术,这一点在这次个人作业里深有感触,看着别人使用高级的技术进行实验,自己却选择了自己最熟悉的数据结构,虽然可能会很笨拙,但对于自己可以更好地进行修改与操作;第三按照计划行事;第四依靠可靠的事物,不依靠巧合或假定;第五为工作划分优先级,把时间花在重要的方面;第六不要做历史的奴隶,不要让已有的代码支配将来的代码。注重这些要点,才能走上一条不被运气控制的编程之路。

“估计算法使用的资源——时间、处理器、内存”是注重实效的程序员几乎每天都要使用的。简单的说估算算法是对运行时间和内存需求的分析,可以使用一种处理近似计算的数学途径O(),例如线性算法可以表示为O(n),但实际上大多数的算法都是亚线性,而且O()表示法并非只适用于时间,它可以表示算法使用的其他任何资源。现有几个常识估算:简单循环、嵌套循环、二分法、分而治之、组合,这些可以帮助我们估算许多基本算法的阶。实践中,如果数值有限,可以知道代码的运行时间,如果数值取决于外部因素,那就需要考虑一下大量数据对运行时间或内存消耗可能带来的影响,当不确定所需要的时间时,就试着运行,把结果绘制成图,可以根据曲线了解大体情况。最后一点就是选择适当算法时注重实效——最快的算法对于你的工作并非总是最好的,这个可以对比在输入集很小时,简单的插入排序和快速排序一样好。

“重构”意思为重写、重做和重新架构代码合起来。随着程序的演化,我们有必要重新思考早先的决策,并重写部分代码,因为代码需要演化,它不是静态的事物,作为一个刚刚起步的新手,对于“重构”没有一个十分明确的认识,只是从字面意思去理解,但在阅读之中,逐渐发现了这个东西其实很基础,就在自己的身边。书中将软件开发的两种比喻做了比较,第一种的比喻是修建建筑,第二种作者更青睐于 “园艺”——它比混凝土更有机,与软件开发的现实更接近,商业人士喜欢修建建筑的比喻,因为它更科学,可以重复,具有严格的管理报告层次。我比较赞同“园艺”这一观点,因为这更像是一门艺术,每一处的合理才会造就融洽的整体。每当我们发现代码不合适时,这对于自己就算是错误的东西,要坚定不移的去改动,犹豫不决只会浪费时间,在现实中,如果需要进行重构的时候却没有进行,之后沿途修正问题将需要投入更多的时间,这就好比是身体里的肿瘤,趁它还小的时候,进行手术将其取出,才会避免以后更大的危机。关于“重构”,核心问题就是重新设计,但是如果撕毁大量代码,就会发现自己处于比一开始更糟的位置上,所以需要我们的慎重与深思熟虑。

有关测试,在软件中可以做一件与硬件同样的事,从一开始就把可测试性构建进软件中。在隔离状态下对每个模块进行测试,目的是检测其行为、一旦我们在受控的(甚至是人为的)条件下对模块进行了彻底的测试,我们就可以更好地了解模块在广阔的世界上将怎样起反应。如果我们想要编写测试用例,要确保给定的单元遵守其合约。当我们会编写大量测试代码,并进行大量测试,我们可以为项目开发标准的的测试装备,对于其中的即兴测试,我深有体会,比如“print”,我会经常用这个来进行测试代码的运行情况,可能很累,但对于自己很有帮助。

这次的阅读进一步加深了我对于编程的理解,对于我明确自己未来代码的编写风格有不可忽视的作用,期待下一次的阅读会带给我什么。

读《程序员修炼之道》有感(代码片段)

最近一段时间,自己在项目开发过程中出现了很多问题,于是根据同事的推荐读了这本书。读完后,自己最大的感受就是:在项目开发中,一定要规范自己的行为。一个完整的开发流程应该有这样四步:分析→... 查看详情

读《程序员修炼之道(节选)》有感

  同学推荐了本书——《程序员修炼之道》,在整个寒假闲来无事时,我就会翻一翻这本书,看了这么长时间,我也想写点自己的感想。  这本书很有一些特色,比如,本书一共分为64个小节,且每个小节各不相关,所以我... 查看详情

我与项目的化学反应——读《程序员修炼之道》有感

正如书中所说,我曾经产生过自己的项目会失败的感觉,因为自己很迷茫不知道自己该如何去完成自己的团队项目,那种迷茫感在一开始的时候一直围绕着我,直到组长开始逐步把项目分块,一步步细分后,并且要求每个人需要... 查看详情

《程序员的修炼之道——从小工到专家》读第一章有感

     九月份,我读了《程序员的修炼之道--从小工到专家》这本书,虽然只是读了其中小小的一章,却让我收获了许多,收益匪浅。  从《程序员的修炼之道》这本书的介绍部分可以看出,该书是一本很... 查看详情

《程序员修炼之道:从小工到专家》读后感

...不是那种大规模程序设计、高并发设计等等,主要是针对程序员的一些基本素质和一些基本常规编程设计做一些梳理和规范,对于初入职的程序员,养成这些良好素质是非常有必要的;对于已经入职多年的程序员,回顾一下本书... 查看详情

《程序员的修炼之道:从小工到专家》有感

    石头汤与煮青蛙--在这里有一个名词叫“启动杂役”,就是你明确的知道你想要做什么,并且知道自己是对的,整个系统就在自己的眼前,但请求许可去做整件事情的时候,你会遇到拖延与漠然。预算需... 查看详情

《程序员的修炼之道:从小工到专家》有感

强力编辑--用一种好的编辑器,去熟悉它,彻底的了解它,让你在编辑文本时凭直觉去操作,无需大脑。编辑器所应具有的特性:可配置、可扩展、可编程。这样我们在编程过程中手就不需要离开键盘,能够提高效率。源码控制-... 查看详情

读《程序员的思维修炼》有感

 不久前读过《程序员的思维修炼:开发认知潜能的九堂课》,这本书里面有一段让我最印象深刻,它将职业分成了5个阶段。从新手到专家的5个阶段新手高级新手胜任者精通者专家新手顾名思义,新手指的是在相关技能领域... 查看详情

初读程序员修炼之道之从小工到专家

 初读此书,直至此刻才刚读至第二章,但却感触颇多。我喜欢从头阅读,一个字都不放过,也得幸于此,从序部分便收获良多,更是从中发现自己正在犯的错误,现阶段一些的苦恼,不断的犯一些重复的错误,从没有有意识... 查看详情

程序员修炼之道第一章读后感

...获很多的。在第一章的一开始,就教会了我做一个做一个程序员的原则,那就是诚实和 查看详情

程序员读书清单

2018/8/3程序员读书清单:1、代码简洁之道2、程序员的职业素养3、重构改善既有代码的设计4、测试驱动开发5、单元测试之道6、编写可读代码的艺术7、程序员修炼之道8、代码大全9、重构与模式10、实现模式11、修改代码的艺术12... 查看详情

《程序员修炼之道》读书笔记②

概述花了几天时间看完了程序员修炼之道,有很多感悟,记录于此,供自己开发时参考,相信对其他人也有用。值得一提的是,这本书写的非常好,很多大牛在走了很多弯路之后再读这本书都很感慨没有早些读。《程序员修炼之... 查看详情

《程序员修炼之道》读书笔记①

概述花了几天时间看完了程序员修炼之道,有很多感悟,记录于此,供自己开发时参考,相信对其他人也有用。值得一提的是,这本书写的非常好,很多大牛在走了很多弯路之后再读这本书都很感慨没有早些读。注重实效的哲学... 查看详情

程序员修炼之道读后感

最近应老师要求阅读了《程序员修炼之道》这本书    一开始我读了序言,明白了这本书可能现在还是读不懂,但是我还是耐着性子读了下去,发现虽然不是很理解,但是发现很有用所以是我一定会好好阅读, ... 查看详情

程序员架构修炼之道:软件架构基本概念和思维

引子互联网发展到今天,软件系统早就不是一个万行代码加上一台服务器这样的作坊玩具。BAT(百度阿里腾讯)、JMB(京东美团字节)等的服务器规模已经达到甚至超过百万级。传统企业向互联网的靠拢,... 查看详情

《程序员修炼之道:从小工到专家》读书笔记

《程序员修炼之道》读书笔记 之所以选择这本书作为第一本书,是因为这本书描述了一些程序员编写大型项目时所应该遵循的最基本的原则和可以使用的最基本的工具。它没有描述某一种特定的语言、特定的算法,也没有推... 查看详情

程序员修炼之道_从小工到专家_读书分享

...分享了《大国工匠》,很是羡慕,嫉妒,恨。要知道我们程序员也是一名工匠,哈哈。最近用两天多的时间读了一本和工匠有关的书籍《程序员修炼之道-从小工到专家》这本书,现在分享给大家,因本人能力有限,拙劣之处请... 查看详情

《程序员修炼之道》之注重实效

   十月这一个月以来,读了关于程序员修炼之道的第二站,注重实效,其中有一句话让我印象深刻。   系统中的每一个知识都必须具有单一,无歧义,权威的表示。   通过这本书,我了解到我们... 查看详情