在读了第四章和第十七章后,在对代码的规范和设计风格上有了新的认识,对结对编程有了必定的认识;同时对程序员在将来公司中的工做情况有了必定的了解,在对绩效和职业道德上有了新的认知。html
第四章:两人合做程序员
1、书中75页4.3.2goto一节中提到:函数最好有单一的出口,为了达到这一目的,可使用goto。只要有助于程序逻辑的清晰体现。什么方法均可以使用,包括goto。我有一些疑惑,在大一上学期咱们学习C语言的时候,当时对goto语句的印象是认为goto语句不建议使用。因而我上网查了一些资料,有如下两种说法。算法
(一)建议使用goto语句编程
goto语句使用起来比较灵活,并且有些情形可以提升程序的效率。若是一味强调删除goto语句,有些情形反而会使程序过于复杂,增长一些没必要要的计算量【2】。在结构化程序设计中通常不主张使用goto语句, 以避免形成程序流程的混乱,使理解和调试程序都产生困难。【1】模块化
(二)建议废除goto语句函数
goto语句是对程序结构影响最大的一种有害语句;他们的主要理由是:goto语句使程序的静态结构和程序的动态执行之间有很大的差异,这样使程序难以阅读,难以查错。对一个程序来讲,人们最关心的是他运行的正确与否,去掉goto语句后,能够直接从程序结构上反映程序的运行过程。这样,不只使程序的结构清晰、便于阅读,便于查错,并且也有利于程序正确性的证实。【2】学习
D.E.Knuth (算法界的超级大牛,The art of computer programming 的做者)对于goto语句的争论做了全面的公正的评述,他的基本观点是:不加限制地使用goto语句,特别是使用往回跳的goto语句,会使程序的结构难于理解,这种情形应该尽可能避免使用goto语句;另外,为了提升程序的效率,同时又不破坏程序的良好结构,有控制地使用一些goto语句是有必要的。用他的话来讲:“有些情形,我主张废除转向语句,有些情形我主张引进转向语句。”(见D.E.Knuth的大做:《带有转向语句的结构化程序设计》)测试
综合以上说法,我认为咱们应该谨慎的使用goto语句。goto语句的设计自身是没问题的,之因此建议避免,我以为这是一个软件工程的问题。好比说,容易破坏代码的模块化组织结构,容易下降代码的可读性,以及代码增加到必定规模后的可控性等等。毕竟,在一个团队中,项目的代码不老是一我的维护的,你的goto你懂,但不表明别人也懂,并且你们技术水平以及对代码的理解谁也不能保证步调一致,滥用goto,会提高项目出现bug的几率。【3】spa
ps:什么状况下用到goto:.net
当程序有多层嵌套,当处在嵌套内的逻辑判断为真或为假时,须要完全或者连续跳出几层循环时,通常考虑使用goto,由于break一次只能跳出一层,而且须要跳出多层循环时须要假如更多的判断逻辑,这种状况下,会考虑使用goto,还有就是在大型程序中处理复杂逻辑时,通常也会考虑使用goto。【4】
2、书中88页4.6:疑问:当结对编程时双方在磨合阶段发生意见难以调和,难以过渡到规范阶段,此时应该怎么处理?
第十七章:人,绩效和职业道德
1、书中400页中提到:重大决定应该由“猪”来定夺,这与个人观点不一样,从技术角度来说,研发和市场的第一线全心投入的人,他们在技术最有发言权和决定权,可是从现实角度来说,作决定的每每应该是领导阶级,由于他们在项目的将来发展上更具备市场前瞻性和掌控全局的能力,我认为领导应作重大决定,这样能更好的引领整个工程的发展。
2、书中402页17.6绩效管理部分关于如何才能更好的衡量技术人员的工做量以及如何分配工资,我有一些想法。一开始我认为在一个团队中,通过一段时间的磨合,每个技术人员的能力和工做量想必团队的每一个人都心知肚明,背对背的评比我认为是比较合适的,可是确实又存在“小团体现象”,因而我上网查阅了相关资料,找到了认为比较合适的方法:主客观相结合、合理量化、双向和多向评价:对于上级对下级能够直接给予评价的行为,下级应该也能集体给上级打分。对于主观考核部分,应该作到360度测评,对某个开发人员的评价,能够先由开发人员本身给本身的主观评价部分打分,再由主管、团队内同事review评价,综合肯定最终评价、考核程序员的侧重点应该放在过程上,而不是业务的结果上、参与了多少项目,写了多少代码和文档,多少测试代码,完成多少模块和用例,解决了多少问题,bug率多少,reopen的bug率多少,多少次工做交付延期,多少次工做失误,内部作了多少次技术交流分享。等等在研发过程当中的工做度量、制度考勤。【5】
但很遗憾的是至今没有任何可行的具体测量方法能精确的评估程序员个体的贡献度。并无解决这个问题的“银弹”。只能综合各方面,尽可能的达到公平化以及合理化,最大限度的激励技术人员。
参考博文
【1】goto语句百度百科https://baike.baidu.com/item/goto%E8%AF%AD%E5%8F%A5/7603004?fr=aladdin
【2】关于goto语句,https://blog.csdn.net/starfish/article/details/10599
【3】做者:张国钰,来源:知乎,连接:https://www.zhihu.com/question/21981058/answer/19931297
【4】 C语言之goto浅,https://www.cnblogs.com/newbeeyu/p/5837347.html
【5】谈谈程序员的绩效考核,https://blog.csdn.net/kimmking/article/details/9946319