程序员修炼之道

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

风格不统一 提交于 2019-12-02 20:00:13
每个工匠在开始其职业生涯时,都会准备一套品质良好的工具。这些工具将经过认真挑选、打造得更加坚固耐用、并用于完成很少与其他工具重合的特定工作。随后学习与适应的过程就开始了。每样工作都有自身的特性和古怪之处,并且需要得到相应的特殊对待。每样工具都需要以独特的方式进行打磨,或者以独特的方式把持。到时候工具就变成了工匠的头脑与所做的产品之间的通道——他们变成了工匠双手的延伸。到最后工具会放大工匠的才干。工具越好,工匠就越能更好的掌握他们的用法,生产力也就会越高。这指出了我们这些不成形的程序员以及一些新程序员的一个常见错误:采用单一的强力工具。比如特定的集成开发环境IDE,而且再也不离开其舒适的界面。这是个错误,我们要乐于超越IDE所施加的各种限制。要做到这一点,唯一的途径是保持基本工具集的锋利与就绪。 接下来,本书介绍了纯文本的威力。纯文本是可以直接让人理解的形式,与二进制编码相比,纯文本所处的层面更高。但是纯文本也有两个缺点:1.所需空间很大;2.需要解释及处理的文件,计算上的代价更大。但是纯文本也有很重要的优势特性:1.保证不过时;2.杠杆作用;3.更易于测试。保证不过时很容易达成,而且可以自动保存所有改动的历史,可以监视文件是否收到偶然的修改。 后面,又接连介绍了shell游戏、强力编辑、源码控制、调试、文本操控、代码生成器等,解释了他们各自的优缺点以及相应的特性

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

瘦欲@ 提交于 2019-12-02 16:58:45
Don't Repeat Yourself!(不要重复你自己!)重复包括强加的重复、无意的重复、无耐性的重复、开发者之间的重复。有些重复是强加的,例如项目标准中要求建立的含有重复信息的文档或是重复代码中的信息的文档;有时重复来自设计中的错误;有时重复是一种容易检测和处理的重复形势,但那需要接受训练并愿意为避免以后的痛苦而预先花费一些时间;另一方面,或许是最难检测和处理的重复发生在项目的不同开发者之间。 Make It Easy to Reuse!(让重复变得容易!)我们可以做的就是营造一种环境,在其中要找到并复用已有的东西,比自己编程更容易。如果不容易,大家就不会去复用,而如果不去复用,就会有重复知识的危险。 “正交性”是从几何学中借来的术语。在计算机技术中,该术语用于表示某种不依赖性或是解耦性。如果两个或更多事物中的一个发生变化,不会影响其他事物,这些事物就是正交的。在设计良好的系统中,数据库代码与用户界面是正交的,可以改动界面而不影响数据库,也可以更改数据库而不改动界面。正交可以提高生产率、降低风险。 计算机语言会影响一个人的思考问题的方式,以及他看待交流的方式。每种语言都含有一系列特性——比如静态类型和动态类型、继承模式这样的时髦话语——所以这些特性都在提示或遮掩特定的解决方案。 来源: https://www.cnblogs.com/vvxvv/p/11734982

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

我只是一个虾纸丫 提交于 2019-12-02 16:40:13
十月这一个月以来,读了关于程序员修炼之道的第二站,注重实效,其中有一句话让我印象深刻。 系统中的每一个知识都必须具有单一,无歧义,权威的表示。 通过这本书,我了解到我们程序员对我们所创建的应用进行维护时,我们必须找到并改变事情的表示,在我们开发的规范,过程和程序中很容易重复和表达知识,然而,这样会很容易让我们的代码失效,并且通过dry我了解到了,它不仅仅存在于我们的程序,更存在于我们的生活,我们在编写代码的时候,不是所有代码都需要加注释的,也不是所有的代码都不加注释,而是择优,选择你认为的高级代码,进行添加注释,这会让我们的代码效率更快, 还有一种重复就是可能是无意的重复,我们在应用的开发的过程中,我们可能会因为性能而违反DRY原则,这也就让我想到过我们的数据结构老师跟我们讲过的计算机很讨厌递归调用,因为这经常需要还存数据让计算机死机, 还有就是无耐性的重复,这是一种容易检测和处理的形式。 正交性:表示某种不依赖性。 正交的好处:消除无关事物之间的影响。提高生产率和降低风险, 项目团队也是一种正交问题,正交的团队效率越高,尽量分清各个人做什么工作,让工作减少重叠。 来源: https://www.cnblogs.com/sunhongbin/p/11755300.html

程序员修炼之道读后感

断了今生、忘了曾经 提交于 2019-12-02 16:35:38
初入软件工程专业的我,在读了部分程序员修炼之道之后感觉这本书十分的有用,目前我读到的对我最有价值的就是正交行,就是在编译工程项目时 一定要注意各个部分之间尽量的少牵扯联系,做到这些在我们改动某个部分的文件的内容时就就不会 “打扰”到隔壁的文件夹,对后期的维护和更新有着很大的帮助,还有就是在编写代码时一定要注意代码的可撤销性因为我们的策划不是一成不变的,他很有可能在某一天就会有着会影响到之前写完的工程的某个部分,可撤销性就是在不适用这段代码时,在删除他的情况下不影响其他代码,这里面讲到了“曳光弹”,这个的作用就是在自己接到自己从未接触过的项目工程时,需要一个通向前方的光束,这个光可以带你走进正确的道路,书中将写代码的人比作一个在黑夜中的枪手,这个例子再合适不过了,我们接触新鲜的事物时就好比在黑夜中需要完成狙击任务的,没有光束狙击手很难达到一枪毙命,就跟我们编程一样我们需要一些编写程序之前的过程,这个“曳光弹”为我们提供了足够的光束(虽然我目前在这方面没有积累,但是我会从现在开始积累我的“曳光弹”)。 还有就是我们需要储备一个我们自己的错误代码库,和一个工具库,可以根据不同的工程调用自己的工具库来减少工作量,这样不仅可以提高工作效率,还可以减少代码的错误(因为工具库时久经沙场的)。 来源: https://www.cnblogs.com/yizhixiaozhu/p/11755149

《程序员修炼之道——从小工到专家》阅读笔记二

两盒软妹~` 提交于 2019-12-02 06:30:33
  根据阅读笔记一中所说的,我坚持了下来,继续对《程序员修炼之道——从小工到专家》的学习。相对于上一次我有了更实际的收获。 第三章:基本工具的学习   1.在编写代码遇到问题时,要及时的修正问题,而不是发出职责和无关的抱怨。初次之外,还应该有一个意识,bug无论是团队中谁的过错,并不是很重要,他仍需要我的解决,以及团队的合作。   2.调试的思维方式:     首先是不应该对惶恐。 遇见bug的第一反应是“那不可能”,不要把情感浪费在这上面,它不仅可能,而且已经发生了。 调试是优化代码的必不可少的步骤,我们应该勇于的去面对,找到代码不足的根源,并且对代码不足的地方及时的加以修订和优化。     首先把编译器的编译级别调到最高,当你能够重视这个bug,可能很快发现它的原因了。bug可能会出现在操作系统、数据库、编译器中,但这不应该是你的第一想法。修正bug后想一想:以前为什么没有发现这个bug?是不是可以改进单元测试来发现这个bug?如果查找这个bug花了很长时间,反思一下问什么,下一次是不是可以更快地修复类似的bug? 第四章:注重实效的偏执     相对于前三章来说,我感觉第四章不好理解,有些词语更是没有听过,甚至所说的问题更也没有见过,可能是自己的基础太差,学习时间太短,还没有真实的完成项目参与工作的原因,所以我就在网上查了查相关的资料和内容,并进行基础的学习。   1

程序员修炼之道读后感(二)

Deadly 提交于 2019-12-02 05:20:43
俗话说,工欲善其事,必先利其器。作为软件工程师掌握好几门工具是取得成功的根本。花时间去学习这些工具,你会有意想不到的收获。用纯文本来保存知识,但其也有一些缺点如所占空间较大,但其优点也很明显如永不过时,杠杆作用,易于调试。 学会使用shell,使你的生产力提高。至少用好一种编辑器,彻底了解他,掌握它,因为它是可扩展,可配置,可编程。 使用源码控制系统来追踪你在源码和文档中所做的每一项变动,将自己日常工作保存在仓库中。不要恐慌,当调试时产生了BUG,要理清自己的思路,不要在一些不切实际的地方浪费时间。 作为程序员要明白自己不可能写出完美的软件,但是你可以让自己的程序变得更好,所以当有问题出现时不要害怕,去勇敢的解决他,你自己将会变得更加完美,能力将会更强。 学会断言时编程,计算机是不会说谎的,跟它打交道比与人更简单,它会如实的反应你的问题,你只需要改正就可以了。因此在编程是不要进行自我欺骗,而是尽快找到它的问题,加以解决,而断言则可以帮助你更好解决这一问题。 注重实际的程序员谁也不信任,包括我们自己。 来源: https://www.cnblogs.com/haheihei/p/11731605.html

程序员修炼之道第四、五章读后感

限于喜欢 提交于 2019-12-02 03:06:43
首先我读了第四章,感觉收获很多,因为很多代码都看得懂,所以很能理解书中所说的内容。首先我明白了一个人的精力是有限的, 不可能写出完美的软件,所以我们会对自己编写的代码可能出现的错误书写另外的代码进行处理。我们要明确每个软件要做的事,规 定每个方法应该发挥的作用,要控制好可能影响每个方法的结果的因素。我明白了要通过合约进行设计,并对输入方法的参数进行控制, 要在代码中加入断言进行方法用真判断,当问题发生时,能够找到出错原因。我了解不变项的重要性以及语义不变项的概念。要对代码 进行动态的约束,让组件相互协作。我还明白不要忽视一个bug的存在,当程序出现问题时,早崩溃比当程序引发重大问题时要好的多。 我们还要进行断言式编程,哪怕项目已经交付,断言也必须开着,因为你没有完全测试程序,不能保证绝对没问题。我还明白了什么时 候使用异常最合适,要将异常用于异常的问题。我们不仅可以使用异常,还要合理使用错误处理器。我们还要对系统资源进行合理分配, 当使用资源完毕时,要记得释放,不然程序可能会出现读写异常等错误,分配资源要有始有终。我还明白了如何在一些语言分配资源, 还明白了要检查配平。 来源: https://www.cnblogs.com/yang2000/p/11727955.html

程序员修炼之道读书报告2

喜你入骨 提交于 2019-12-01 20:20:00
看到这个书名,会不自觉的想起周星驰在《喜剧之王》中的经典桥段,手拿一本《演员的自我修养》激励着很多懵懂青年。 就像这本书的自序所讲的,这是一本包含有许多朴素的经验,写给注重实效的程序员的一本“演员的自我修养”。 刚刚步入编程队伍的我,正需要这样一本书给予我经验,也因为是多年精心耕耘的结果,一时不能全盘收入囊中,只能让思想先入为主,在开发中加以理解。 简单和朋友们摘录了几点: 与古鲁打交道的理解和教养 古鲁指经验丰富的,给你建议和答案的人。我觉得这个称谓很有趣,有点萌,一个古字,让人联想到时间的广度和知识的深度。 哈哈,其实就是怎样礼貌的提出你的问题,古鲁才能更好地帮助你。 1:确切地知道你想要问什么,并尽量明确具体;2:小心而得体地组织你的问题,记住你是在请求帮助;3:发邮件时请使用有意义的主题;4:坐回椅子上,耐心等候,古鲁很忙。 不要容忍破窗户 当你看到糟糕的设计、错误的决策和糟糕的代码时,修正它们。在工作中,很容易对源源不断的bug不耐烦,或许被自己说服侥幸绕过,以后就会有更多的直至难以修复。破窗户讲的故事是一个小区的一扇窗户没有及时维修导致整个小区陷入被更多破坏的现实,人们再想起维修时,代价巨大,治安特别好的地区也对破窗严格治理。 定期为你的知识资产投资 让学习成为习惯。编程语言、技术日新月异,小伙伴们都感受至深,幸运的是我们的知识获得比任何行业都更加容易和方便,大量的社区

程序员修炼之道:从小工到专家3

天涯浪子 提交于 2019-12-01 18:44:55
软件的成败与否,很大程度上取决于用户的看法,要“让你的用户参与权衡”,但也要知道进退, 知道何时止步,不能画蛇添足。对于现阶段的我们而言,处在知识经济的时代,知识资产变得尤 为重要,一不小心就会被这个社会淘汰,作者明确提出了自己的观点和建议,为我指明了方向。 当你编码时: 代码需要演化,它不是静态的事务。 重构 不要试图在重构的同时增加功能。 在开始重构之前,确保你拥有良好的测试。 采用短小,深思熟虑的步骤。 从一开始就可以把可测试性构建进软件中,并且在把各个部分连接在一起之前对每个部分进行彻底的测试。 在项目开始之前: 需求需要挖掘,而不仅仅是收集。找出用户为何要做特定事情的原因,而不是他们目前做这件事情的方式。 建立需求文档:把形式化的模板做备忘录 好的需求文档会保持抽象 Chap1 注重实效的哲学 程序员所应该遵循的实用主义原则。 我的源码让猫给吃了:出现错误时,要诚实,不要推诿或者找借口。要提供各种可能的解决方案与后果并 与他人沟通,而不是提供借口。 软件的熵:这是著名的破窗户原理。项目中一个小的、无人料理的问题可能带来后续编码时的懈怠,从而 造成更大的问题。不要容忍任何小的错误,解决它或至少打上TODO标签。 石头汤与煮青蛙:这个小节很有趣,它讲述了小的变化如何能渐进式地演变为大的变化。 一方面,在面对一个毫无生气的团体、试图催生积极的变化时,可以去做第一个带来改变的人

《程序员修炼之道》读后感(一)【第二章与第三章】

和自甴很熟 提交于 2019-12-01 08:46:09
第2章 注重实效的途径 从本章开始,作者终于开始介绍实际开发中将会运用到的技巧及原理,而在阅读中我也发现由于自身的经验不足知识浅薄而对作者提到的许多概念感到十分模糊。 7、 重复的危害:在过去的学习中,关于重复的危害我只认识到会使代码可维护性降低这点程度,而本章则说重复甚至会成为程序的“噩梦”,DRY原则简单又实用,我想起就在上一节java课上的测试中我还使用了很多重复来解决购票问题。作者将重复归为4类:强加的重复、无意的重复、无耐性的重复、开发者之间的重复;对于没有合作开发经验的我们来说,前三种更为常见。对于这些重复最好的解决方案就是严格遵守DRY原则,不断锻炼自身。 8、 正交性:“正交性”是一个几何术语,它表示两条直线相交成直角的状态;从向量角度上来讲,正交的两条直线不会相互影响,沿着某条直线移动不会影响其投影到另一条直线上的位置。对应到软件工程中,正交性指的是某种不相互依赖性,即改动某一或几个方向而不会影响其他方向。作者首先介绍了非正交性所带来的危险,一个系统如果是非正交的,那么其中的一个模块出错将会牵一发而动全身。而正交将会有诸多好处,其一最明显的即是降低风险,正交可以消除无关事物之间的互相影响,在某一部分出错或需要修改时不会影响到其他部分;另一方面,正交性可以显著提升生产率,正交性的系统使得整个工程得以划分为更小的模块,使改动变得局部化