一位初入门的新员工的代码分析(2)

前文分析了一个类的头文件定义。从头文件定义中可以看出类的一个大致功能,可以分析该类的设计是否合理。其它还可以观察到编码规范、函数参数、返回值等类型的合理性。在类的设计中,一定要充分明确类的职责,不是此类职责范围内的事,不要随意让这个类来处理,保持类的独立性,降低耦合度,这点非常的重要。很多新人对如何设计类很模糊,很多情况下,类设计不合理,这需要逐步的积累经验,提高自己。

今天对函数体进行分析,通过函数体的分析,找出问题,完善自己的代码。

void CStudentList::InitializeStudentList(int nSize,CStudent *Student)
{
	m_head=new StudentNode;
	if(m_head!=NULL)
	{
		m_head->m_Student=Student[0];
		m_head->next=NULL;
	}
	StudentNode *PreNode=NULL;
	PreNode=m_head;
	for(int i=1;i<nSize;i++)
	{
		StudentNode *NewStudentNode=NULL;
		NewStudentNode=new StudentNode;
		if(NewStudentNode!=NULL)
		{
			NewStudentNode->m_Student=Student[i];
			NewStudentNode->next=PreNode->next;
			PreNode->next=NewStudentNode;

		}
		PreNode=PreNode->next;
	}
}








好吧,你已经有自己的判断了吗?那么我们来分析一下吧。

首先,m_head=new StudentNode 就有问题,如果m_head当前不为空,那么不就产生内存泄漏了吗?所以,在这句之前,应该先清空列表。

其次,m_head->m_Student=Student[0]; 也有问题,确定Student这个参数不为空?应该先检查一下,代码要有自我保护意识,提高程序的健壮性

另外,既然if(m_head!=NULL)进行了判断,那么为什么不考虑条件不成立的时候呢?一旦不成立,因为m_head为空,后续的代码中,所有相应的指针处理都会导致崩溃。同样,后续代码中的if(NewStudentNode!=NULL)也存在同样的问题。

通过对这个函数的分析,让我们认识到写代码不能只看到理想的一面,更多的要考虑各种例外,才能确保你的程序经得起考验。希望IT新人能够有所收获,编写自己的强壮代码。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-29 01:01:53

一位初入门的新员工的代码分析(2)的相关文章

一位初入门的新员工的代码分析(1)

公司刚来的新员工,刚毕业,经过几个月的实践,完成了一个实训编码练习.通过对其代码的阅读,发现了一些问题.这些问题对于初学者来说,是比较容易犯的错误,而且以他们目前的经验来说,不容易发现或理解.对此进行专门的解读和分享,希望各位初学者能够有所启发,早日提高编码水平. 任务比较简单,是完成一个学生管理系统,现在很多大学生都自己玩这样的系统.要求使用链表.XML等考核点. 以下是其写的学生链表类头文件: #include "Student.h" #include "XMLWrapp

阿里感悟(十四)-如何带新员工(转)

引言 在阿里,每一位新员工进来之后都会有一位导师,导师一般都是团队中非常优秀的员工.有些部门可能不叫导师了,而是叫师兄,可能更亲切,但是我觉得导师更贴切. 导师指导新员工的过程,我觉得应该是一个PDCA的过程,即计划,执行,检查和总结. 第一.定计划 对于新员工一定要给帮主他们制定学习和工作计划,做到计划驱动学习,互联网开发要学的东西比较多,对于新员工生来说不知道该先学什么后学什么,学到什么程度.所以计划驱动比较重要,在工作和学习之前给新员工列一份详细的学习和工作计划,并询问下新员工这个计划有没

为什么企业宁愿开高工资给新员工,都不愿意给老员工加工资?

有朋友问到: 俺的建议: 先从这位被低薪压制的老员工角度说说: 决定你的薪资水平的根本原因是你的实力,而影响因素是你的性格.为什么说是你的性格呢?比方说你比较好欺负,不好意思和老板提要求,老板就会继续低薪用你,最多每年加你一点点.你作为老员工和老板谈工资,你的筹码比较弱,因为你需要保住这份工. 老板招聘新员工就不同了,老板需要这个岗位才去招聘的,有必要的话,他会出他能接受范围内的最高工资的. 所以从这位老员工的角度看来,自己就被欺负了,感觉自己实力比新员工还好,为啥我的待遇低? 当然这些都是自我

任正非对新员工的寄语——要承受,要集中精力并熟能生巧,要学习,要主动,要思考,要判断,要行动

总结一下,变成两句话: 第一封信:要群体奋斗,要求助,要奋斗,要贡献,要承受,要集中精力并熟能生巧,要循序渐进,要学习技术.管理技能.思维方法和工作方法,要服务,要主动,要诚信.第二封信:要自己去做,要思考,要判断,要行动,要主动建议和质疑. ------------------------------------------------------------------------------------- 任正非对新员工的寄语:烧不死的就是凤凰 注:这一篇简短却能足够阐述华为创始人任正非用

〔远大云商〕&quot;新员工入职仪式&quot;暨&quot;寿星生日会&quot;圆满举行!

[远大云商]"新员工入职仪式"暨"寿星生日会"圆满举行! 3月是一个特别的月份,在即将过去的3月,[远大云商]迎来了7位新同事,新鲜血液的融入,让团队力量不断壮大,远大势必越走越远.越来越辉煌.在今天,公司特别为这7位俊男靓女举办了隆重的"新员工入职仪式" .

正则表达式30分钟入门教程-新

本文目标 30分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它.一旦入门后,你可以从网上找到更多更详细的资料来继续学习. 别被下面那些复杂的表达式吓倒,只要跟着我一步一步来,你会发现正则表达式其实并不像你想像中的那么困难.当然,如果你看完了这篇教程之后发现自己明白了 很多,却又几乎什么都记不得,那也是很正常的--其实我认为没接触过正则表达式的人在看完这篇教程后能把提到过的语法记住80%以上的可能性为零.这里只 是让你明白基本道理,以后你还需要多练习,多查

it新员工如何快速学习

沟通是学习的第一步: 我和一批新员工一起入职,我工作8年,其他5个新员工基本上工作年限在1~2年之间,经过了3天之后出现了截然不同给的2种情况 第一天项目组给我分配开发需求,其他5人在学习,主要是我的工作经验比较长,项目组认为我参与进来没有问题.          第二天我一边自学习一遍找周围同事沟通,其他5人在接受了一次半个小时的培训.                    在这天他们基本上都是一边看资料一边娱乐...          第三天我的一个功能模块出来了一半,其他5人的工程都没搭建

C++初入门

C++ 程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互.现在让我们简要地看一下什么是类.对象,方法.即时变量. 对象 - 对象具有状态和行为.例如:一只狗的状态 - 颜色.名称.品种,行为 - 摇动.叫唤.吃.对象是类的实例.最后,如果大家如果在自学遇到困难,想找一个C++的学习环境,可以加入我们的C++学习圈,点击我加入吧,会节约很多时间,减少很多在学习中遇到的难题.类 - 类可以定义为描述对象行为/状态的模板/蓝图. 方法 - 从基本上说,一个方法表示一种行为.一个类可以包含多

SpringBoot 初入门

SpringBoot 初入门 关于介绍什么之类的就不讲了,主要做一下学习记录. 1. 启动方式 IDEA 启动 命令行启动: mvn spring-boot:run 部署到服务器启动: 先进行打包, mvn clean package 移动到项目的 target 目录下,可以看到一个后缀名为 jar 的文件,便是刚刚我们打包的 jar 包, 使用命令行启动: java -jar target/luckymoney-0.0.1-SNAPSHOT.jar 传参方式启动: java -jar -Dsp