程序员修炼之道-从小工到专家读后感2

花了半个月进行了两章内容的阅读,其中这两章中,印象深刻的是关于bug方面的阅读,曳光弹的使用,构建软件原型,还有对于shell编程的使用。

    当你构建从未构建过的东西时,你尝试在黑暗中射击目标,因为你从来没有做过,他们的需求含糊不清,你也不知道,而且你在用不熟悉的算法,技术,语言,或库,你面对着大量未知的事物,同时还有时间的限制,工作环境将在你完成工作之前变化,经典的做法就是系统定死,费力,然而注重实效的程序员就会使用曳光弹:曳光弹与子弹下载相同的环境,相同的约束条件下一起飞向目标,可以给枪手及时的反馈,可以使编写代码的效率大大提高,曳光代码,便携而的目的是为了保留它,有完整的错误检查、结构、文档、以及自查,只不过是功能不全,可检查离目标还有多远,一旦你完全瞄准,增加功能就会变得很容易。同样曳光代码有很多优点,用户能够及早看到能工作的东西,构建了一个开发者能在其中工作的结构,有了一个集成平台,有了可用于演示的东西,感觉到工作的进展。可是曳光代码不一定能够击中目标,反而需要你不断地调整直至集中目标,完成任务,但即使是这样也要比你在黑暗中射枪,要简单得多,也更能及早的让你完成任务。

在我们不清楚怎么做的时候,或者说有很多种方法,而采用何种方法,就是提升效率的关键了,我们是要每个方法都试一次还是,做出每个方法的原型呢,显然后面的方法更加高效率。我们可以构架那软件原型进行测试,分析,然后再分析过后再改进,这样可以大大降低你的劳动力,如果你已经完成了代码但是有错误或者不合实际,不满足要求,你就要构思,然后再去重新做,这样及费力又费时间,而且成功几率还很小,不能直接成功,那就不如去做多个你认为可以的软件原型,这样你就可以在同一时间测试多个原型然后筛选出最好的最能达到目的的那一个原型,再去考虑有什么欠缺的地方如果有继续更改原型,如果没有就可以实现了,这样的话你知完整的实现了一次,但是第一种方法,要在不断地更改中才能完成,实现了很多次,由此可见,建立软件原型的效率之高。你可以忽略原型的正确性,完整性,健壮性,风格等。

我是先读的本书的利用好shell编程,内容大致如下,可以通过对shell编程,构建复杂的宏命令,,完成你经常进行的各种活动。利用命令shell的力量,熟悉shell,你自己的生产率迅速提高,多花一些精力去熟悉shell,事情会变得清楚起来,多使用shell命令。然后老师让我们用cmd运行java的反编译,其实步骤只有四个,第一步,不能跨盘,所以要更改磁盘的位置,然后再换目录。第二步,执行javac  *.java。第三步,执行 java 源文件。第四步,执行javap *.class文件 然后就可以得到整个程序的调用方法顺序,可以更加清楚的了解自己的程序,如果是别人的程序,你更可以通过使用反编译来剖析程序,使代码为自己所用。

Bug是一个程序员必须要面对的东西,在处理bug的时候,有些事情就显得尤为重要。发现bug后你应该专注于修正问题而不是指责,bug是你的过错还是别人的过错,并没有关系,你应该考虑的应该是怎么修改错误,这样才能解决问题。在调试的过程中不要恐慌,越到最后要验收或者提交的时候越不能恐慌,如果有人在旁边催你未完成任务更不能紧张恐慌,这样你会调试不出来,反而要思考是什么造成了bug,调试的是够小心近视,只有迫切修改bug的愿望,但是真正出问题的代码可能是在大前面或者大后面,要想到或者考虑到bug的根源而不是bug的具体表现我,这就相当于生病时的治标不治本,如果不解决源头上的问题,会有好几个表面问题,没准你解决一个还有很多个心得问题出来,这样是不能解决问题的,因此要注重问题的源头,这样才能将问题彻底解决。在查看bug之前要先看看是否有警告,人工合成测试,不能足够的演练应用,你必须既强硬的测试边界条件,有测试现实中的用户的使用模式,你需要系统的进行这样的测试。一旦你知道了发生了什么,你就找出除了错误。使你的数据可视化,可以画图,这时候问题就会表现在你面前,检查变量的时候,发现了一个坏变量这时候看看其他的变量,问题也许就会迎刃而解。不要假设,要证明,当你遇到bug时,先要假设看看是什么造成这个bug,考虑是否要改进单元测试或其他测试,以让他们有能力找出这个故障。

要编写能编写代码的代码,简而言之就是我们在生活中看到木匠重复的制作一个东西的时候,他们给自己建造夹具或者模板,一旦做好了这些,他们就可以快速的做出相同的东西出来,并且降低了出错的机会,只要第一个作品是正确的还有模具没有问题,同样我们也需要这样,要构建代码生成器,构建好了整个项目生命期内都可以用它并且没有人格代价。而代码生成器分为主动和被动两种,被动相当于参数化模板,而主动是一种便利手段。代码生成不一定很复杂,并且代码生成器不一定要生成代码。

要清楚你不可能写出完美的软件,金无足赤,人无完人,虽然这听起来你难以接受,但你可以把它转化为有利条件,针对自己的错误进行防卫性的编码,要确保在找出bug的过程中,不会造成任何破坏,所以我们设法,检查各种事项,并在程序出问题的时候终止程序

猜你喜欢

转载自www.cnblogs.com/tkg1314/p/11695316.html