聚集大全代码优化的一些案例 .docx
精品名师归纳总结C#代码优化的案例1. 代码简洁代码简洁,削减代码量,初始值尽可能在属性上设置,而不是编写代码。合同统计分析中 JToolComBox_ColmunType_SelectedIndexChanged方法中:switchjToolComBox_ColmunType.SelectedIndex.ToStringcase"0" : /执行金额jWebChart1.chartId ="9cc897e5-99dd-468d-84db-3390a18f0e22"。jWebChart1.SetUrl。break 。case"1" : /变更金额jWebChart1.chartId ="9cc897e5-99dd-468d-84db-3390a18f0e23"。break 。jWebChart1.SetUrl。case"2" : /索赔金额jWebChart1.chartId ="9cc897e5-99dd-468d-84db-3390a18f0e24"。jWebChart1.SetUrl。break 。case"3" : /付款批复金额jWebChart1.chartId =jWebChart1.SetUrl。"9cc897e5-99dd-468d-84db-3390a18f0e25"。break 。case"4" : /实际支付金额jWebChart1.chartId ="9cc897e5-99dd-468d-84db-3390a18f0e26"。jWebChart1.SetUrl。break 。case"5" : /合同份数jWebChart1.chartId ="9cc897e5-99dd-468d-84db-3390a18f0e27"。jWebChart1.SetUrl。break 。default: /执行金额jWebChart1.chartId ="9cc897e5-99dd-468d-84db-3390a18f0e22"。break 。jWebChart1.SetUrl。重构后:switchjToolComBox_ColmunType.SelectedIndex.ToString可编辑资料 - - - 欢迎下载精品名师归纳总结case"0" : /break 。执行金额jWebChart1.chartId ="9cc897e5-99dd-468d-84db-3390a18f0e22"。case"1" : /变更金额jWebChart1.chartId ="9cc897e5-99dd-468d-84db-3390a18f0e23"。break 。case"2" : /索赔金额jWebChart1.chartId ="9cc897e5-99dd-468d-84db-3390a18f0e24"。break 。case"3" : /付款批复金额jWebChart1.chartId ="9cc897e5-99dd-468d-84db-3390a18f0e25"。break 。case"4" : /实际支付金额jWebChart1.chartId ="9cc897e5-99dd-468d-84db-3390a18f0e26"。break 。case"5" : /合同份数jWebChart1.chartId ="9cc897e5-99dd-468d-84db-3390a18f0e27"。break 。default: /执行金额jWebChart1.chartId ="9cc897e5-99dd-468d-84db-3390a18f0e22"。break 。jWebChart1.SetUrl。合同综合查询中jTabControl8_SelectedIndexChanged方法中多个 If语句3 个以上 ,改写为 switch合同综合查询中JeMisQuery_V_HT_CONTRACT_SHOW_TJ_OnQueryFinish方ed法中/ 请填写脚本decimal de_SIGN_AMOUNT = 0。decimal de_ALTER_AMOUNT = 。0 decimal de_ALL_CLAIM_AMOUNT = 0。decimal de_PAY_AMOUNT = 0。decimal de_ALL_RP_AMOUNT = 。0 decimal de_EXE_AMOUNT = 0。decimal de_APPLY_AMOUNT = 。0decimal de_APPLY_APPROVE_AMOUNT 。= 0stringstr_where = eMisQuery_V_HT_CONTRACT_SHOW.UserCustomCondition 。stringsql ="select count* as ht_contract_count,sumSIGN_AMOUNT as SIGN_AMOUNT,sumALTER_AMOUNT as ALTER_AMOU+NT,""sumALL_CLAIM_AMOUNTas ALL_CLAIM_AMOUNT,sumPAY_AMOUNT as PAY_AMOUNT, sumALL_RP_AMOUNT as ALL_RP_AMOUNT, sumEXE_AMOUNT as EXE_AMOU+NT"可编辑资料 - - - 欢迎下载精品名师归纳总结",sumAPPLY_AMOUNT as APPLY_AMOUNT, sumAPPLY_APPROVE_AMOUNT as APPLY_APPROVE_AMOUNT fromGCMIS.v_ht_contact_show t where "+ str_where。DataSet ds = eMisSurface1.ExecQuerySqlsql。ifds .=null&& ds.Tables.Count > 0/有意义不,确定为 TrueDataRow dr = ds.Tables0.Rows0。jLabel_Jl.Text = dr"ht_contract_count".ToString。objectobj = dr"SIGN_AMOUNT "。de_SIGN_AMOUNT = Convert.ToDecimalobjis DBNull . 0.00 : obj。 /为什么要先转成 Decimal ,再转成 StringjLabel_QD.Text = de_SIGN_AMOUNT.ToString"0.00" 。obj = dr"ALTER_AMOUNT。"de_ALTER_AMOUNT = Convert.ToDecimalobjis DBNull . 0.00 : obj。jLabel_BG.Text = de_ALTER_AMOUNT.ToString"0.00" 。obj = dr"ALL_CLAIM_AMOUNT。"de_ALL_CLAIM_AMOUNT = Convert.ToDecimalobjis DBNull . 0.00 : obj。jLabel_SP.Text = de_ALL_CLAIM_AMOUNT.ToString"0.00" 。obj = dr"PAY_AMOUNT 。"de_PAY_AMOUNT = Convert.ToDecimalobjisDBNull . 0.00 : obj。jLabel_ZF.Text = de_PAY_AMOUNT.ToString"0.00" 。obj = dr"ALL_RP_AMOUNT 。"de_ALL_RP_AMOUNT = Convert.ToDecimalobjis DBNull . 0.00 : obj。jLabel_JF.Text = de_ALL_RP_AMOUNT.ToString"0.00" 。obj = dr"EXE_AMOUNT 。"de_EXE_AMOUNT = Convert.ToDecimalobjisDBNull . 0.00 : obj。jLabel_ZX.Text = de_EXE_AMOUNT.ToString"0.00" 。obj = dr"APPLY_AMOUNT。"de_APPLY_AMOUNT = Convert.ToDecimalobjis DBNull . 0.00 : obj。jLabel_SQ.Text = de_APPLY_AMOUNT.ToString"0.00" 。obj = dr"APPLY_APPROVE_AMOUN。T"de_APPLY_APPROVE_AMOUNT = Convert.ToDecimalobjis DBNull . 0.00 : obj。jLabel_PF.Text = de_APPLY_APPROVE_AMOUNT.ToString"0.00" 。Else /永久不会执行可编辑资料 - - - 欢迎下载精品名师归纳总结jLabel_Jl.Text =" 0" 。jLabel_QD.Text ="0.00" 。jLabel_BG.Text ="0.00" 。jLabel_SP.Text ="0.00" 。jLabel_ZF.Text ="0.00" 。应当直接在属性中设置初始值jLabel_JF.Text ="0.00" 。jLabel_ZX.Text ="0.00" 。jLabel_SQ.Text ="0.00" 。jLabel_PF.Text ="0.00" 。return 。2. 提升代码的执行效率尽量削减不必要的运算、循环等,提升代码的效率合同统计分析GET_CONTRACT_COLLECT_SOU方R法CEdecimal de_SIGN_AMOUNT = 0。decimal de_ALTER_AMOUNT = 。0decimal de_ALL_CLAIM_AMOUNT = 0。decimal de_PAY_AMOUNT = 0。decimal de_ALL_RP_AMOUNT = 。0 decimal de_EXE_AMOUNT = 0。decimal de_APPLY_AMOUNT = 。0decimal de_APPLY_APPROVE_AMOUNT 。= 0 decimal de_FINAL_AMOUNT = 0。intconatratCount = dt.Rows.Count。ifconatratCount = 0this .jLabel_Contrat_Count.Text =" 0" 。jLabel_SIGN_AMOUNT.Text ="0.00" 。jLabel_ALTER_AMOUNT.Text ="0.00" 。jLabel_CLAIM_AMOUNT.Text ="0.00" 。jLabel_PAY_AMOUNT.Text ="0.00" 。jLabel_RP_AMOUNT.Text ="0.00" 。jLabel_EXE_AMOUNT.Text ="0.00" 。jLabel_APPLY_AMOUNT.Text ="0.00" 。jLabel_APPROVE_AMOUNT.Text ="0.00" 。return 。可编辑资料 - - - 欢迎下载精品名师归纳总结DataTable cloneTable = dt.Clone。foreachDataRow itemin dt.Rowsstringcode = item"ZONE_CODE."ToString。string codeLength = code.Split'_' 。ifcodeLength.Length = 3DataRow copyRow = cloneTable.NewRow。 copyRow.ItemArray = item.ItemArray.Cloneasobject 。cloneTable.Rows.AddcopyRow。objectobj = cloneTable.Compute"sumCONTACT_COUNT, ""true" 。stringcount = Convert.ToStringobjis DBNull . 0 : obj。this .jLabel_Contrat_Count.Text = count。obj = cloneTable.Compute"sumSIGN_AMOUNT," "true" 。de_SIGN_AMOUNT = Convert.ToDecimalobjis DBNull . 0.00 : obj。this .jLabel_SIGN_AMOUNT.Text = de_SIGN_AMOUNT.ToString"0.00" 。obj = cloneTable.Compute"sumALTER_AMOUNT," "true" 。de_ALTER_AMOUNT = Convert.ToDecimalobjis DBNull . 0.00 : obj。this .jLabel_ALTER_AMOUNT.Text = de_ALTER_AMOUNT.ToString "0.00" 。obj = cloneTable.Compute"sumALL_CLAIM_AMOUNT," "true" 。de_ALL_CLAIM_AMOUNT = Convert.ToDecimalobjis DBNull . 0.00 : obj。this .jLabel_CLAIM_AMOUNT.Text = de_ALL_CLAIM_AMOUNT.ToString "0.00" 。obj = cloneTable.Compute"sumPAY_AMOUNT," "true" 。de_PAY_AMOUNT = Convert.ToDecimalobjis DBNull . 0.00 : obj。this .jLabel_PAY_AMOUNT.Text = de_PAY_AMOUNT.ToString "0.00" 。obj = cloneTable.Compute"sumALL_RP_AMOUNT," "true" 。de_ALL_RP_AMOUNT = Convert.ToDecimalobjis DBNull . 0.00 : obj。this .jLabel_RP_AMOUNT.Text = de_ALL_RP_AMOUNT.ToString "0.00" 。obj = cloneTable.Compute"sumEXE_AMOUNT," "true" 。de_EXE_AMOUNT = Convert.ToDecimalobjis DBNull . 0.00 : obj。this .jLabel_EXE_AMOUNT.Text = de_EXE_AMOUNT.ToString "0.00" 。obj = cloneTable.Compute"sumAPPLY_AMOUNT," "true" 。de_APPLY_AMOUNT = Convert.ToDecimalobjis DBNull . 0.00 : obj。可编辑资料 - - - 欢迎下载精品名师归纳总结this .jLabel_APPLY_AMOUNT.Text = de_APPLY_AMOUNT.ToString "0.00" 。obj = cloneTable.Compute"sumAPPLY_APPROVE_AMOUNT, ""true" 。de_APPLY_APPROVE_AMOUNT = Convert.ToDecimalobjis DBNull . 0.00 : obj。this .jLabel_APPROVE_AMOUNT.Text = de_APPLY_APPROVE_AMOUNT.ToStrin"g0.00" 。obj = cloneTable.Compute"sumFINAL_AMOUNT ","true" 。de_FINAL_AMOUNT = Convert.ToDecimalobjis DBNull . 0.00 : obj。this .jLabel_FINAL_AMOUNT.Text = de_FINAL_AMOUNT.ToString"0.00" 。重构后:DataRow hz_Row = dt.Select"ZONE_CODE='DT'" 。ifhz_Row.Length = 0return 。DataRow cur_hzRow = hz_Row0。this .jLabel_Contrat_Count.Text = cur_hzRow"CONTACT_COUN.TT"oString。this .jLabel_SIGN_AMOUNT.Text = cur_hzRow"SIGN_AMOUNT."ToString。this .jLabel_ALTER_AMOUNT.Text = cur_hzRow"ALTER_AMOUNT.T" oString。this .jLabel_CLAIM_AMOUNT.Text = cur_hzRow"ALL_CLAIM_AMOUNT.T" oString。this .jLabel_PAY_AMOUNT.Text = cur_hzRow"PAY_AMOUNT."ToString。 this .jLabel_RP_AMOUNT.Text = cur_hzRow"ALL_RP_AMOUNT.T" oString。 this .jLabel_EXE_AMOUNT.Text = cur_hzRow"EXE_AMOUNT."ToString。 this .jLabel_APPLY_AMOUNT.Text = cur_hzRow"APPLY_AMOUNT.T" oString。this .jLabel_APPROVE_AMOUNT.Text = cur_hzRow "APPLY_APPROVE_AMOU.NTTo"String。this .jLabel_FINAL_AMOUNT.Text = cur_hzRow"FINAL_AMOUNT".ToString。合同统计分析JBtn_Query_Click方法ifjCHK_ALL.Checked .=true ifjCHK_FENG.Checkedsb.Append" G.PROJECT_TYPE IN'1'" 。ifjCHK_HUO.Checkedifsb.Length = 0可编辑资料 - - - 欢迎下载精品名师归纳总结elsesb.Append" G.PROJECT_TYPE IN'0'" 。sb.Append",'0'" 。可编辑资料 - - - 欢迎下载精品名师归纳总结ifjCHK_SHUI.Checkedifsb.Length = 0可编辑资料 - - - 欢迎下载精品名师归纳总结elsesb.Append" G.PROJECT_TYPE IN'2'" 。sb.Append",'2'" 。可编辑资料 - - - 欢迎下载精品名师归纳总结ifsb.Length > 0sb.Append"" 。ifjCHK_OTHER.Checkedifsb.Length > 0可编辑资料 - - - 欢迎下载精品名师归纳总结elsesb.Append" AND G.PROJECT_TYPE NOT IN'0','1','2'" 。sb.Append" G.PROJECT_TYPE NOT IN'0','1','2'" 。可编辑资料 - - - 欢迎下载精品名师归纳总结3. 削减网络传输时间削减数据查询次数,削减结果数据集。合同统计分析 GET_CONTRACT_COLLECT_SOU方R法CEDataView dv = eMisSurface1.ExecProcedureSQL"GCMIS","p_ht_contrat_collect", param.Tables0.DefaultView。dv.RowFilter =string.Format "ZONE_ID='0' OR PARENT_ID='1'",eMisSurface1.CurUserZoneActorInfo.Zoneid, eMisSurface1.CurUserZoneActorInfo.Zoneid。DataTable dt = dv.ToTable。 jTreeGridV_V_HT_CONTRAT_COLLECT.DataSource = dt。多个查询控件,但查询的是同一个表,能否一次查询,再过滤。(如合同综合查询中的查询控件)可编辑资料 - - - 欢迎下载精品名师归纳总结4. 常量常量尽可能进行定义,而不是直接写在代码中。5. 代码重构代码重构和设计是互补的重构使设计方案更简洁 重构能防止过度设计重构代码的目的:1:提高效率2:代码简洁、整齐3:代码更易读在什么时机重构代码:1:增加新功能时2:修改 Bug 时3:代码走读6. 代码走读建议设计人员进行各自模板的代码走读。建议每周每人抽半天时间可以任意挑选部分代码进行走读,一方面是发觉问题,二是相互沟通、学习。参考资料: 重构 -改善既有代码的设计可编辑资料 - - - 欢迎下载精品名师归纳总结可编辑资料 - - - 欢迎下载