1、软件开发与项目管理软件开发与项目管理常州信息职业技术学院模块四 编码能力目标p学会在编码中使用代码优化知识目标p理解代码优化常用技术、局部优化p理解函数内的代码优化、类的代码优化、类之间的代码优化p理解C#代码优化、数据库访问性能优化等知识软件开发与项目管理软件开发与项目管理常州信息职业技术学院代码优化常用技术p 删除多余运算p 代码外提p 强度削弱p 变换循环控制条件p 合并已知量与复写传播p 删除无用赋值模块四 编码软件开发与项目管理软件开发与项目管理常州信息职业技术学院删除多余运算模块四 编码软件开发与项目管理软件开发与项目管理常州信息职业技术学院代码外提模块四 编码软件开发与项目管理软
2、件开发与项目管理常州信息职业技术学院强度削弱模块四 编码软件开发与项目管理软件开发与项目管理常州信息职业技术学院变换循环控制条件模块四 编码软件开发与项目管理软件开发与项目管理常州信息职业技术学院合并已知量与复写传播模块四 编码软件开发与项目管理软件开发与项目管理常州信息职业技术学院删除无用赋值模块四 编码软件开发与项目管理软件开发与项目管理常州信息职业技术学院局部优化p基本块的划分p基本块的变换模块四 编码软件开发与项目管理软件开发与项目管理常州信息职业技术学院划分中间代码为基本块步骤p求出四元式程序中各个基本块的入口语句p对每一入口语句,构造其所属的基本块p凡未被纳入某一基本块的语句可以把
3、它们删除模块四 编码软件开发与项目管理软件开发与项目管理常州信息职业技术学院基本块的变换p删除公共子表达式p删除无用代码p重新命名临时变量p交换语句次序模块四 编码软件开发与项目管理软件开发与项目管理常州信息职业技术学院函数内的代码优化p去掉从来没有用到过的参数p始终进行参数检验p函数的参数不宜过多p如果函数从来不会修改某个参数的值,则应该尽量将参数声明为constp如果函数中用到的类成员变量或者其他全局变量可以用传入参数的方式代替p一个单一的函数的代码量不宜过多p单个函数中尽量避免相同的代码p尽量保持函数只有一个出口,即只有一处return语句模块四 编码软件开发与项目管理软件开发与项目管理
4、常州信息职业技术学院类内的代码优化p只有类对外的接口才声明为publicp在类的成员函数中如果存在着相同的代码,则将其抽取成为private的成员函数,以减少代码的冗余p尽量减少成员函数之间依赖,特别是对成员变量值的依赖模块四 编码软件开发与项目管理软件开发与项目管理常州信息职业技术学院C#代码优化方法p撤消p事务p值类型p字符串p内联模块四 编码软件开发与项目管理软件开发与项目管理常州信息职业技术学院数据库访问性能优化p数据库的连接和关闭p使用存储过程 p优化查询语句p使用Preparep用索引号访问代替名称索引号访问属性p利用索引加快查找行的效率模块四 编码软件开发与项目管理软件开发与项目
5、管理常州信息职业技术学院任务实施用户数据库访问层接口实现代码 模块四 编码 public class User:IUser /使用数据库连接池访问数据库 private static string DBContionString=SqlHelper.ConnectionStringLocalTransaction;/以下为存储过程名称 private const string UP_GET_LOGONINFO=“UP_UGetLogonInfo”;public User()public IList GetUserLogonInfo(string userID,string userPasswo
6、rd,string userIdentity)List userLogonInfoList=new List();SqlParameter parms=new SqlParameter new SqlParameter(PARM_LOGON_USERID,SqlDbType.NVarChar,20),new SqlParameter(PARM_LOGON_USERPASSWORD,SqlDbType.NVarChar,20),new SqlParameter(PARM_LOGON_USERIDENTITYID,SqlDbType.NVarChar,1);parms0.Value=userID;
7、parms1.Value=userPassword;parms2.Value=userIdentity;软件开发与项目管理软件开发与项目管理常州信息职业技术学院模块四 编码任务实施用户数据库访问层接口实现代码using(SqlDataReader sdr=SqlHelper.ExecuteReader(DBContionString,CommandType.StoredProcedure,UP_GET_LOGONINFO,parms)while(sdr.Read()UserLogonEntity userLogonInfo=new UserLogonEntity(sdrOrganizeID.T
8、oString(),sdrOrganizeName.ToString(),sdrUserID.ToString(),sdrUserName.ToString(),sdrUserLevel.ToString();userLogonInfoList.Add(userLogonInfo);return userLogonInfoList;软件开发与项目管理软件开发与项目管理常州信息职业技术学院任务实施代码优化分析p代码中使用连接池 private static string DBContionString=SqlHelper.ConnectionStringLocalTransaction;使用连接
9、池改善打开和关闭数据库对性能的影响,提高数据库访问的效率。p使用存储过程 private const string UP_GET_LOGONINFO=“UP_UGetLogonInfo”;存储过程在服务器端运行,独立于ASP.NET程序,减少数据库操作语句在网络中的传输。模块四 编码软件开发与项目管理软件开发与项目管理常州信息职业技术学院任务实施代码优化分析p函数内代码优化 上述代码中的函数内的代码进行了优化。去掉了没有用过的参数,没有冗余,保持函数内的代码只有一个出口,即return语句。p类中代码优化 上述代码中类内的代码进行了优化。对外的接口声明为public,没有成员函数之间的依赖,类的成员函数中不存在相同的代码。模块四 编码软件开发与项目管理软件开发与项目管理常州信息职业技术学院p代码优化常用技术p局部优化p函数内的代码优化p类的代码优化pC#代码优化p数据库访问性能优化模块四 编码软件开发与项目管理软件开发与项目管理常州信息职业技术学院拓展训练p实施学分管理系统源代码中函数内部代码优化;p实施学分管理系统源代码中类内部与类之间的代码优化;p实施学分管理系统源代码中C#相关代码优化;p实施学分管理系统源代码中数据库访问性能优化。模块四 编码再再 见见