第4章 两人合作
问题1
原文: P69 4.3.2 goto
函数最好有单一的出口,为了达到这一目的,可以使用goto。只要有助于程序逻辑的清晰体现,什么方法都可以使用,包括goto。
问题:对于goto语句,大一上学期C语言老师总是跟我们强调说要少用goto语句,所以一直都没有使用过goto语句。但是,书上却说可以使用goto语句。是否应该使用goto语句呢?
我的看法:百度百科上说,在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。从六七十年代开始人们对goto语句就有争论,后来,G·加科皮尼和C·波姆从理论上证明了:任何程序都可以用顺序、分支和重复结构表示出来。这个结论表明,从高级程序语言中去掉goto语句并不影响高级程序语言的编程能力,而且编写的程序的结构更加清晰。但是,仍然有些情形可以考虑使用goto语句:1.从多重循环中直接跳出2. 出错时清除资源3.可增加程序的清晰度的情况。所以,我认为不加节制的使用goto语句对我们的程序会带来很大的弊端,但如果我们能在适当的时候使用goto语句,对程序是有好处的。
问题2
原文: P71 4.3.4 如何处理C++中的类
虚函数
1) 使用虚函数来实现多态。
2) 仅在很有必要时,才使用虚函数。
3) 如果一个类型要实现多态,在基类中的析构函数应该是虚函数。
构造函数
1) 不要在构造函数中做复杂的操作,简单初始化所有数据成员即可。
2) 构造函数不应该返回错误(事实上也无法返回)。把可能出错的操作放到HrInit()或FInit()中。
析构函数
1) 把所有的清理工作都放在析构函数中。如果有些资源在析构函数之前就释放了,记住要重置这些成员为0或NULL。
2) 析构函数也不应该出错。
问题:虚函数、构造函数、析构函数都是什么?它们对应着哪些具体的函数。对于多态,Java课上也有提到过,C++中的多态和Java中的多态有区别吗?
我的看法:
百度百科上说,虚函数是那些被virtual关键字修饰的成员函数。构造函数 主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。析构函数与构造函数相反,当对象结束其生命周期时,系统自动执行析构函数。虽然知道了这几个函数的概念,但是理解还不是很充分,以后遇到相关的知识,注意学习,加深理解。多态是指用父指针指向不同子类对象时,调用其共有的函数,不同的子类会有不同的行为。C++和Java都具有多态机制,但是他们的实现不同,使用时的效果也会略有不同,所以C++和Java中的多态是有区别的。它们具体的区别可以看https://blog.csdn.net/pi9nc/article/details/12057863,其中有详细的解释。
第17章 人,绩效和职业道德
问题1
原文:在软件团队中,不合理的绩效考核不但影响个人的收入,而且会影响人员的士气、流动、后续的合作以及产品质量,不能不慎重。
问题:怎样的绩效考核比较合理呢?
我的看法:对于比资历这一点,书上认为资历并不能作为绩效考核的标准,我认为对于团队中工作效率不高,但是付出时间明显比其他人多出很多的成员,可以给予适当的鼓励,让他更有动力提高自己的效率。但是,资历也只能对绩效考核产生很小的影响,绩效考核的关键还是在看效率。对于书中提到的大锅饭平分的方法,我认为对于一个团队来说这是最没有好处的。对于效率的衡量方法,我认为背靠背评比还是比较合理的,可以让队友评估的结果占绩效考核的一小部分比例,以免发生小团体抱团和劣币驱逐良币的现象,又能清楚团队成员对某一个成员的看法,这对以后分配任务和团队成员及时认识到自己的不足都是有好处的。
问题2
问题:对于一个团队而言,是“萝卜快了不洗泥”型还是“慢工出细活”型的成员更有好处?
我的看法:我认为这两种成员各有其优势和劣势。虽然,到现在为止,我并没有过参与一个团队和大家一起完成一个项目的经历。根据自己在其他地方积累的经验,我认为对于一个团队而言,白菜多一点更好。文中提到,由于萝卜的设计有缺陷,导致模块非常复杂,萝卜也成为了唯一了解其模块的开发人员。我认为模块太复杂会给将来的修改和维护带来很大的麻烦,如果团队里面有太多萝卜,会导致当任何一个萝卜离开了团队,他写得功能出现问题时维护不好的可能,这时,可能需要其他人再重新写一遍这个功能,浪费更多的时间。然而,一个团队也需要一小部分萝卜这样的人,他们能效率更高地完成一些比较简单的功能。当然,最好的情况是团队中的萝卜和白菜能相互影响,共同进步,才能更好地完成团队的项目。