首页 > 其他分享 >读书笔记1

读书笔记1

时间:2022-09-30 21:34:19浏览次数:43  
标签:遍历 hash 读书笔记 代码 作业 文档 bug

就同我在上篇读书笔记中说的那样,这本书中的一些方法和思想,需要我们在之后的编程学习过程中一点一点的参悟和领会。

比如说从我的第一次个人作业中,我对书中提到的曳光弹代码就有了很深的感触:根据书中给出的例子,我对“曳光弹”的理解是MVP,最小可用产品。甚至是比MVP更简单,进一步最小化的,一段核心算法,一个可操作的简单界面...等等。避免从复杂繁重的文档和大而全的设计开始,直击要害(或者说是你认为的“要害”),实现一个可供操作和评估的东西,观察用户的反应。一旦命中,再对其进行修缮和完备,反复在系统的各个部分实施这样的动作,形成最终的产品。在这次第一次的个人作业代码编写中,有一个很重要的功能实现就是文件夹的遍历,这是我所不熟悉的文件操作里面的,但我可以应用曳光弹的这个想法,让我的代码在黑夜中发光!!

我首先在网上查找相关系统函数的资料,然后写了一段递归的代码

我将这段曳光弹代码的输出功能设定在简单的输出所有的文件名,然后用数据进行训练

根据这个简单的输入和输出,我就可也直观的看出代码中间的核心逻辑部分是否存在问题根据问题指向就能轻松地对代码进行修正。

这样我就得到了一定没有错误的一段文件遍历的核心代码,之后我再这个代码的基础上增加文件读取等其他功能的时候就不会担心文件遍历这个核心逻辑的正确性。

同时就像书中所说,我同样可以将这个没有问题的简单的读取文件名称的代码保存起来,等到以后有用到文件遍历的时候就在其基础上进行开发。

代码管理

在书中,作者在基本工具的建议中建议使用源码管理工具。

在第一次的个人作业中,我使用了git作为我的源码管理工具,在使用的过程中,发现了这样做的好处。我可以大胆的修改我的代码,而不用担心我的代码不能回到原来的版本。其次,我还能在branch中规范自己分支的主要目的,这样可以明确目标。在git log中可以跟踪自己的commit,跟踪自己的开发进程,同时还可以通过github进行代码同步和跨平台开发。

调试

不要慌张。就像老师在课上提到的,真正有经验的程序员会花上几个小时的时间去修复一个bug而十分的平静。

开始修复bug的最佳途径就是再现bug

跟踪,发现一个预料之外的坏变量时候,当你准备修复之前应该快速的看一下这个变量旁边的几个变量的值。

不要靠巧合编程

在书中,作者举了一个例子,说明了很多时候,当我们测试时代码没有明显的错误,但是之后出现bug很大的一个原因就是,我们不知道这段代码为什么要这样工作

这里和老师在课上提出的意见:不要复制和粘贴代码,如果有需要,我们也应该一行一行的重新抄写,同时,理解这段代码的逻辑。

在这次的个人作业中,我就遇到了这个问题,在设计这个一个hash函数的代码中,我为了可以是字符在表中可以尽可能的散开,我在网上找到了一段有名的hash代码(针对于输入字符串)。

然后稍微看了一下后直接替代了原来的hash函数,在小的数据集中没有出现明显的错误,于是我就觉得这段代码没有什么问题,但是在应用到大的数据集的时候,就出现了大的冲突错误(我本来已经开了足够的哈希表空间)但是还是放不下。一开始,我不能很快的发现问题所在,因为我以为这个hash函数是没有问题的,在花费了大量的时间查找问题之后,才发想了这个问题出现在这个hash函数中,复制粘贴虽然节省了我几分钟的时间但是之后的debug却花费了我数百倍的时间,所以我感触极深。

不要猜想,要勇于尝试

结合我第一次代码编写的经历,我在对string数据类型的还是操作时候不是很熟悉,不是很有底,在需要用的时候就会在shell里面开一个小的程序来验证我的想法,当然按照这本书的建议,我之后可能可以尝试去使用assert断言,

#include <assert.h> 
void assert( int expression );

早测试,常测试,自动测试

不是很了解自动测试的概念,去网上查找了一下后,发现了几款自动测试的工具,争取下次用到个人作业或者结对作业中。

好记忆不如烂笔头

要把英语(中文)当做一种编程语言

文档分为外部文档和内部文档,内部文档包括源码注释,设计和测试文档,外部文档包括用户手册,技术文档等。

在这里,作者推荐我们学习一下标记语言,可以提高效率。

标签:遍历,hash,读书笔记,代码,作业,文档,bug
From: https://www.cnblogs.com/nanbei666/p/16746301.html

相关文章

  • 读书笔记2
    最近阅读了《程序员的修炼之道:从小工到专家》第四章:“注重实效的偏执”,再结合上周一的期中考试,让我感触颇深。本章开始先讲述了“按合约设计”,大该讲的是与计算机打交......
  • 程序员的修炼之道:读书笔记2
    在做软件的时候,我们需要看看我们做的对象是谁,这样来看看我们所作的软件的第一代是什么质量的,。如果,我们的工作对象是心脏起搏器,航天飞机等,我们需要将我们的软件做的很好,但......
  • [读书笔记]FDTD与YEE晶胞
    截图选自UnderstandingtheFinite-DifferenceTime-Domain Metho 作者是JohnB.Schneider有限差分时域(FDTD)方法使用有限差分作为麦克斯韦方程组(特别是安培定律和法拉......
  • 9月份读书笔记1
    importjava.util.Scanner;importjava.util.Random;importjava.math.BigInteger;publicclasssizeyunsuan{ //出题参数 Randomr=newRandom(); Strings[]=newStr......
  • 9月份读书笔记2
    importjava.util.Scanner;importjava.util.Random;importjava.math.BigInteger;publicclasssizeyunsuan{ //出题参数 Randomr=newRandom(); Strings[]=newStr......
  • 程序员修炼之道:从小工到专家读书笔记
    注重实效的哲学   注重实效的程序员对他的职业生涯负责,并且不害怕承认无知或错误,如果你确实同意要为某个结果负责,你就应切实负起责任。当你犯错误、或者判断失误时,诚实......
  • 《程序员修炼之道:从小工到专家》第一章读书笔记
     最近我读了《程序员修炼之道:从小工到专家》这本书的第一章:注重实效的哲学 注重实效的程序员的特征是它们处理问题、寻求解决方式时的态度、风格、哲学。 在第一个......
  • 《程序员修炼之道:从小工到专家》读书笔记1
    之所以选择这本书作为第一本书,是因为这本书描述了一些程序员编写大型项目时所应该遵循的最基本的原则和可以使用的最基本的工具。它没有描述某一种特定的语言、特定的算法,......
  • 读书笔记1
    每一程序员都有属于自己的编程风格,每个人都有自己擅长的和不擅长的,随着时间的推移会逐渐形成属于自己的编程环境。一个成功的程序员成功的一个关键是他们会对自己所做的事......
  • 第十一章读书笔记
    第十一章读书笔记11.1EXT2文件系统EXT2:Linux一直在用的默认文件系统EXT3:在EXT2之上拓展了任务日志功能EXT4:EXT4不再分配不连续的磁盘块,而是分配连续的磁盘块,称为区段......