[置顶] 读《编程匠艺》有感

10.28

         昨天晚上睡觉前在床上看了会《编程匠艺》,有几个部分给我很大的感触,于是第二天上课前抽空把感想写下来。只为自己以后能看一看,反思反思。

         我原本以为,在软件开发这个行业最重要的是技术。当我一口气看完书的推荐序后,我发现自己现在好幼稚,希望掌握一门技术就可以成功,可是现实真的是这样吗?软件开发者的核心竞争力是什么?我原来一直认为就是 coder 自己的编程能力和创造力,以至于自己太过于看重技术方面。

         在我看来,当代程序员的核心竞争力至少体现在这么几点上:有扎实的基本功,活跃的想象力与创造力。快速学习的能力,具备行业和领域知识,以及专业的软件工艺能力。而在这其中,专业软件技能是最根本、也是最重要的一项。

         上面这段话是书上的,读了好几遍。我现在大二了,我具备其中的几种能力呢?在刚开学的时候,我的 C# 老师对我们说:现在有的程序员整天光想着敲代码,语言表达能力严重不足,当自己的项目完成后,却总是让别人去替自己汇报,你不在领导面前表现自己你可能升职吗?老师这段话确实是语重心长,我自己也有点感触,从那时开始觉得程序员不应该只会编程,其他的技能和能力也要具备。

         在注重专业能力培养的同时,也需要培养其他能力。

         专业软件技能就是真确开发软件的能力。对于一个程序员来说,这是你的看家老本,对于一个软件团队来说,这是你们的立足之基。算法不会,可以查资料慢慢掌握;不了解行业,可以边做边学,逐渐深入;缺乏创新,可以站在巨人的肩膀上慢慢摸索;甚至基本功不足,也可以自我弥补,可如果没有做软件的专业态度和实践技能,没有制作合格软件工艺的水平,连一段高质量的代码都写不出来,还剩下什么?

         IT 行业,我个人觉得一个人的编程思想和他的计算机思维最重要。不懂算法、不了解行业、不会技术,这些都不重要,这些都可以学。但是如果一个人年计算机思维都没有,怎样去学?就算他学会了也不会用,一句话:他根本没入门

         这些话都是自己想的,有可能有不对的地方,欢迎指出来,现在我还是菜鸟,我需要学习。文中有些话是《编程匠艺》中的原话,如要使用请注明来处。有时间就写一写,看看书,对我有好处。

 

10.29

        程序员编写程序,几乎傻子都知道。但这里有一点细微的区别:只有优秀的程序员才会写出优秀的代码。

        我想成为优秀的程序员!

        在电脑周围,现实世界正处于纷繁的变化之中。机会所有的软件都已不断改动为特点。所有的变动和外界因素都使得编写优秀的代码成为一项困难的工作。在编写代码,学习别人的代码时,要抓紧注意力。只有优秀的、用心的程序员才能写出优秀的代码。

        那么优秀的代码与糟糕的代码有什么区别呢?在我们编写代码时,写出能够使用的代码是非常容易的的。但是正确的代码逻辑会很难理解,代码很不自然或很难维护。在写代码之前,要设想一下。在写代码的期间不断测试自己的设想。没有记录下来的设想不断的造成缺陷,特别是随着代码的增长。在工作上,使代码编写速度变慢或延迟一段时间的机会正是太少了。世界变化太快,程序员需要努力更上而不落后。所以,我们必须抓住每一个机会来减少错误。 

        现在我自己有时写的代码很杂乱。有些很多开始的设计如定义变量和函数等都没有想好,我不应该追求编程的速度,而要追求代码的质量的清晰度。写一个程序前确实应该先大致想出每个函数的功能,再来编写。好吧,向着优秀的程序员前进!

        代码是写给谁看的?代码的主要作用是被编译器编译成可执行程序,但代码是写给人看的。代码清不清晰,编译器照样执行,只不过是时间和消耗资源的不同。代码不清晰,日后怎样维护?昨天我想把自己原先的 C# 计算器升级一下,但是我确实弄不清楚自己定义变量的意义。定义变量时所取得名字很重要,不是吗?代码需要注释,需要清晰的易懂的注释。开始学 C++ 时觉得写注释很无聊,现在觉得注释确实值得写,不管对自己以后代码的优化有帮助,还对其他看代码的人有帮助。

 

11.1

        代码的命名很重要,一般变量的名字要反应变量的功能和作用,不能简单的取个名字就完了。注释不是用来解释变量的作用,注释不是来描述代码的。注释有很多风格。当代码改变时,注释也应该改变。

        结课了,下个星期不包括早晚自习就两节课。真心不想复习,考完回家算了,还是利用复习的时间来学一点东西,充实一下自己。

        《编程匠艺》这本书确实很好,但现在我的知识面确实太窄,也没有做过项目,后面几章:代码生命、团队合作等我都没有经验。所以后面的章节就不写感想了,这个感想是自己结合这本书所得反思。明天就把这本书还回图书馆,想以后工作的时候买一本好好看看。前几天做了一个带历史菜单的程序,那个程序条例很乱,也很繁琐。今天我想重写一编,写了一下午还是没出来。原因是自己前期准备少了,每个函数功能没有想好就开始写了。发现这个学期开始学习 C# 很烦,因为编写一个程序需要几个不知道的知识点。例如网络传输包括线程、进程、Socket编程、网络流、文件流等知识点,带语法分析的计算器需要学习一下编译原理,等等。自己想学的很多,但需要学的跟多。晚上看了下July大神的算法文章,发现自己一点都不懂,有精力也把算法和数据结构简单学一下,但主要目的还是编程,以编出程序为最终目的来学习各种知识。


原文地址:https://www.cnblogs.com/finlay/p/3234749.html