接触了一些项目,经过师姐在代码优化方面的指点,收获很多。代码优化问题直接决定系统的优劣,代码执行速度快,用户体验程度才会好,才能得到客户的喜爱。
【系统容灾】
在关于数组或实体等语句的循环时,一定要有if判断,这样可以在数组或是实体没有数据时避免报错。
举一个简单的实例:
<span style="font-size:18px;"> <pre name="code" class="csharp"> for (int i = 0; i < userList.count; i++)
{
nameArr[i]=userList[i].userName;
}
</span>
修改为:
<span style="font-size:18px;"> if(userList.count>0)
{
for (int i = 0; i < userList.count; i++)
{
nameArr[i]=userList[i].userName;
}
}
</span>
另外try{...}catch{...}的添加能保证自己的代码在出现错误的情况下不给用户报黄页,但会在调试的过程中给程序员带来难度,因此,代码开发过程中还是要慎用的。
错误页面的添加,在用户使用过程中一旦程序出错,进入出错页面,给用户以极大的心理安慰,不至于让他们举足无措。
【提高执行速度】
使用Easy-ui设计的系统会涉及大数据量的增删该查,这时,如何巧妙的去实现增删改查功能,是提高系统性能的关键。
1. 尽量在循环外使用查询加载语句
举例:已经一个userIDArry数组,查询所有ID的user信息
<span style="font-size:18px;"> for (int i = 0; i < userIDArry.count; i++)
{
IList<UserEntity> loadItem = seriesService.LoadItems("select * from UserEntity where ID='" + <pre name="code" class="csharp">userIDArry<span style="font-family: Arial, Helvetica, sans-serif;">[i] + "'").ToList();</span></span>
}
上面的语句,每循环一次,都会执行一条select语句,这样,导致访问数据库的次数增多,每次都要执行:建立数据库连接--查询数据--关闭数据库,势必降低执行速度。
我们完全可以采用sql的批量查询功能,一条查询得到所需数据:
<span style="font-size:18px;"> select *
from user
where id in (1001,1003,1002,1004)</span>
这时,我们就需要考虑如何将sql语句进行拼接,用什么变量来接收就可以了。
不仅可以实现批量查询,批量删除和批量修改同样可以办到:
<span style="font-size:18px;"> DELETE FROM TestTable WHERE ID IN (1, 3, 54, 68)</span>
<span style="font-size:18px;"> INSERT INTO TestTable SELECT 1, 'abc' UNION SELECT 2, 'bcd' UNION SELECT 3, 'cde' </span>
2. 删除掉注释代码,如果代码中存在大量冗余代码的话,代码加载的过程速度将减慢。
3. 尽可能缩小变量生命周期
【数据容器选取】
数据在代码执行过程中有多种表现形式,其代码执行也不尽相同,常见的有实体entity,泛型集合list,数组array,数据字典dictionary,哈希表hash,datatable等等。
这些数据存储方式在不同的场合有不同的应用,期代码优化程度也不同,因此我们在合适的场合使用合适的数据容器对代码的优化也非常有帮助。
【总结】
代码只有在实现过程中经过不断测试,不断实践,才能得到不断优化,尽管刚开始进入项目主要是想着把功能实现为目的,但随着学习的深入,我们必须要把代码优化提上日程。本次学习过程中对数据容器的优劣没有进行深入学习,期待在接下来的学习中进行系统化总结。