2022年聚集大全C代码优化的一些案例.docx
精选学习资料 - - - - - - - - - C#代码优化的案例1. 代码简洁代码简洁,削减代码量,初始值尽可能在属性上设置,而不是编写代码;合同统计分析中 JToolComBox_ColmunType_SelectedIndexChanged 方法中:switch jToolComBox_ColmunType.SelectedIndex.ToString case"0" : / 执行金额 jWebChart1.chartId = ;"9cc897e5-99dd-468d-84db-3390a18f0e22"; jWebChart1.SetUrlbreak ;case"1" : / 变更金额 jWebChart1.chartId = ;"9cc897e5-99dd-468d-84db-3390a18f0e23"; jWebChart1.SetUrlbreak ;case"2" : / 索赔金额 jWebChart1.chartId = ;"9cc897e5-99dd-468d-84db-3390a18f0e24"; jWebChart1.SetUrlbreak ;case"3" : / 付款批复金额 jWebChart1.chartId = ;"9cc897e5-99dd-468d-84db-3390a18f0e25"; jWebChart1.SetUrlbreak ;case"4" : / 实际支付金额 jWebChart1.chartId = ;"9cc897e5-99dd-468d-84db-3390a18f0e26"; jWebChart1.SetUrlbreak ;case"5" : / 合同份数 jWebChart1.chartId = ;"9cc897e5-99dd-468d-84db-3390a18f0e27"; jWebChart1.SetUrlbreak ;default: / 执行金额;"9cc897e5-99dd-468d-84db-3390a18f0e22"; jWebChart1.chartId = jWebChart1.SetUrlbreak ; 重构后:switch jToolComBox_ColmunType.SelectedIndex.ToString 1 / 9 名师归纳总结 - - - - - - -第 1 页,共 9 页精选学习资料 - - - - - - - - - case"0" : / 执行金额 jWebChart1.chartId = "9cc897e5-99dd-468d-84db-3390a18f0e22";break ;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: / 执行金额"9cc897e5-99dd-468d-84db-3390a18f0e22"; jWebChart1.chartId = break ; jWebChart1.SetUrl;合同综合查询中 jTabControl8_SelectedIndexChanged 方法中多个 If 语句 3 个以上 ,改写为 switch 合同综合查询中 JeMisQuery_V_HT_CONTRACT_SHOW_TJ_OnQueryFinished 方法中/ 请填写脚本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 = 0;decimal de_APPLY_APPROVE_AMOUNT = 0string str_where = eMisQuery_V_HT_CONTRACT_SHOW.UserCustomCondition ;string sql = "select count* as ht_contract_count,sumSIGN_AMOUNT as SIGN_AMOUNT,sumALTER_AMOUNT as ALTER_AMOUNT,""sumALL_CLAIM_AMOUNTas ALL_CLAIM_AMOUNT,sumPAY_AMOUNT as PAY_AMOUNT, sumALL_RP_AMOUNT as ALL_RP_AMOUNT, sumEXE_AMOUNT as EXE_AMOUNT"2 / 9 名师归纳总结 - - - - - - -第 2 页,共 9 页精选学习资料 - - - - - - - - - ",sumAPPLY_AMOUNT as APPLY_AMOUNT, sumAPPLY_APPROVE_AMOUNT as APPLY_APPROVE_AMOUNT from GCMIS.v_ht_contact_show t where " + str_where; DataSet ds = eMisSurface1.ExecQuerySqlsql;if ds .= null && ds.Tables.Count > 0 / 有意义不,确定为 True DataRow dr = ds.Tables0.Rows0;.ToString; / 为什么要 jLabel_Jl.Text = dr"ht_contract_count"object obj = dr"SIGN_AMOUNT" ;is DBNull . 0.00 : obj de_SIGN_AMOUNT = Convert.ToDecimalobj 先转成 Decimal ,再转成 String jLabel_QD.Text = de_SIGN_AMOUNT.ToString"0.00" ; obj = dr"ALTER_AMOUNT" ; de_ALTER_AMOUNT = Convert.ToDecimalobj is DBNull . 0.00 : obj; jLabel_BG.Text = de_ALTER_AMOUNT.ToString"0.00" ; obj = dr"ALL_CLAIM_AMOUNT" ; de_ALL_CLAIM_AMOUNT = Convert.ToDecimalobj is DBNull . 0.00 : obj jLabel_SP.Text = de_ALL_CLAIM_AMOUNT.ToString"0.00" ; obj = dr"PAY_AMOUNT" ; de_PAY_AMOUNT = Convert.ToDecimalobj is DBNull . 0.00 : obj; jLabel_ZF.Text = de_PAY_AMOUNT.ToString"0.00" ; obj = dr"ALL_RP_AMOUNT" ; de_ALL_RP_AMOUNT = Convert.ToDecimalobj is DBNull . 0.00 : obj; jLabel_JF.Text = de_ALL_RP_AMOUNT.ToString"0.00" ; obj = dr"EXE_AMOUNT" ; de_EXE_AMOUNT = Convert.ToDecimalobj is DBNull . 0.00 : obj; jLabel_ZX.Text = de_EXE_AMOUNT.ToString"0.00" ; obj = dr"APPLY_AMOUNT" ; de_APPLY_AMOUNT = Convert.ToDecimalobj is DBNull . 0.00 : obj; jLabel_SQ.Text = de_APPLY_AMOUNT.ToString"0.00" ; obj = dr"APPLY_APPROVE_AMOUNT" de_APPLY_APPROVE_AMOUNT = Convert.ToDecimalobj is DBNull . 0.00 : obj jLabel_PF.Text = de_APPLY_APPROVE_AMOUNT.ToString"0.00" ; Else / 永久不会执行 3 / 9 名师归纳总结 - - - - - - -第 3 页,共 9 页精选学习资料 - - - - - - - - - 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_SOURCE 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 = 0;decimal de_APPLY_APPROVE_AMOUNT = 0 decimal de_FINAL_AMOUNT = 0;int conatratCount = dt.Rows.Count;if conatratCount = 0 this .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 ; 4 / 9 名师归纳总结 - - - - - - -第 4 页,共 9 页精选学习资料 - - - - - - - - - DataTable cloneTable = dt.Clone;foreach DataRow item in dt.Rows string code = item"ZONE_CODE" .ToString;string codeLength = code.Split'_' ;if codeLength.Length = 3 DataRow copyRow = cloneTable.NewRow;asobject ; copyRow.ItemArray = item.ItemArray.Clone cloneTable.Rows.AddcopyRow object obj = cloneTable.Compute "sumCONTACT_COUNT" , "true" ;string count = Convert.ToStringobj is DBNull . 0 : obj;this .jLabel_Contrat_Count.Text = count; obj = cloneTable.Compute "sumSIGN_AMOUNT", "true" ; de_SIGN_AMOUNT = Convert.ToDecimalobj is 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.ToDecimalobj is 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.ToDecimalobj is 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.ToDecimalobj is 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.ToDecimalobj is 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.ToDecimalobj is 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.ToDecimalobj is DBNull . 0.00 : obj;5 / 9 名师归纳总结 - - - - - - -第 5 页,共 9 页精选学习资料 - - - - - - - - - this .jLabel_APPLY_AMOUNT.Text = de_APPLY_AMOUNT.ToString "0.00" ; obj = cloneTable.Compute "sumAPPLY_APPROVE_AMOUNT " , "true" ; de_APPLY_APPROVE_AMOUNT = Convert.ToDecimalobj is DBNull . 0.00 : obj;this .jLabel_APPROVE_AMOUNT.Text = de_APPLY_APPROVE_AMOUNT.ToString "0.00" ; obj = cloneTable.Compute "sumFINAL_AMOUNT ", "true" ; de_FINAL_AMOUNT = Convert.ToDecimalobj is DBNull . 0.00 : obj;this .jLabel_FINAL_AMOUNT.Text = de_FINAL_AMOUNT.ToString "0.00" ;重构后:DataRow hz_Row = dt.Select "ZONE_CODE='DT'" ;if hz_Row.Length = 0 return ; DataRow cur_hzRow = hz_Row0;this .jLabel_Contrat_Count.Text = cur_hzRow "CONTACT_COUNT" .ToString;this .jLabel_SIGN_AMOUNT.Text = cur_hzRow "SIGN_AMOUNT" .ToString;this .jLabel_ALTER_AMOUNT.Text = cur_hzRow "ALTER_AMOUNT" .ToString;this .jLabel_CLAIM_AMOUNT.Text = cur_hzRow "ALL_CLAIM_AMOUNT" .ToString;this .jLabel_PAY_AMOUNT.Text = cur_hzRow "PAY_AMOUNT" .ToString;this .jLabel_RP_AMOUNT.Text = cur_hzRow "ALL_RP_AMOUNT" .ToString;this .jLabel_EXE_AMOUNT.Text = cur_hzRow "EXE_AMOUNT" .ToString;this .jLabel_APPLY_AMOUNT.Text = cur_hzRow "APPLY_AMOUNT" .ToString;this .jLabel_APPROVE_AMOUNT.Text = cur_hzRow "APPLY_APPROVE_AMOUNT" .ToString;this .jLabel_FINAL_AMOUNT.Text = cur_hzRow "FINAL_AMOUNT".ToString;合同统计分析 JBtn_Query_Click 方法if jCHK_ALL.Checked .= true if jCHK_FENG.Checked sb.Append" G.PROJECT_TYPE IN'1'" ; if jCHK_HUO.Checked if sb.Length = 0 sb.Append" G.PROJECT_TYPE IN'0'" ; else sb.Append",'0'" ;6 / 9 名师归纳总结 - - - - - - -第 6 页,共 9 页精选学习资料 - - - - - - - - - if jCHK_SHUI.Checked if sb.Length = 0 sb.Append" G.PROJECT_TYPE IN'2'" ; else sb.Append",'2'" ; if sb.Length > 0 sb.Append "" ;if jCHK_OTHER.Checked if sb.Length > 0 sb.Append" AND G.PROJECT_TYPE NOT IN'0','1','2'" ; else sb.Append" G.PROJECT_TYPE NOT IN'0','1','2'" ; 3. 削减网络传输时间削减数据查询次数,削减结果数据集;合同统计分析GET_CONTRACT_COLLECT_SOURCE, ;DataView 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;多个查询控件,但查询的是同一个表,能否一次查询,再过滤;(如合同综合查询中的查询控件)7 / 9 名师归纳总结 - - - - - - -第 7 页,共 9 页精选学习资料 - - - - - - - - - 4. 常量常量尽可能进行定义,而不是直接写在代码中;5. 代码重构代码重构和设计是互补的 重构使设计方案更简洁重构能防止过度设计重构代码的目的:1:提高效率 2:代码简洁、整齐 3:代码更易读在什么时机重构代码:1:增加新功能时 2:修改 Bug 时 3:代码走读6. 代码走读建议设计人员进行各自模板的代码走读;建议每周每人抽半天时间可以任意挑选部分代码进行走读,一方面是发觉问题,二是 相互沟通、学习;参考资料: 重构 -改善既有代码的设计8 / 9 名师归纳总结 - - - - - - -第 8 页,共 9 页精选学习资料 - - - - - - - - - 9 / 9 名师归纳总结 - - - - - - -第 9 页,共 9 页