进攻性编程规范

来源:互联网 发布:谜样女友x 淘宝 编辑:程序博客网 时间:2024/06/06 02:50

一次一次的排除错误早已成了习惯性的动作,一天两天甚至一个月都很难找到错误的原因,在上万行的代码中更是如此。也许错误是沧海一粟,那么就会考验耐心。

如下有一串代码: 

这段代码的意思是将数据以CSV的形式保存起来,它使用的是软件提供商的类库。

try {

            objBAOStream 
= new ByteArrayOutputStream();

            objPrWriter 
= new PrintWriter(objBAOStream);

            CSVWriter csvWriter 
= new CSVWriter(objPrWriter);

            List lstDetailsData 
= logicDataResult.getList();

            
int intSize = lstDetailsData.size();

            List lstCSVData 
= new ArrayList(intSize + 1);

            
for (int i = 0; i <= intSize; i++) {

                
if (i == 0) {
                    java.util.List lstTitle 
= java.util.Arrays
                            .asList(strArrTitle);
                    lstCSVData.add(lstTitle);
                }
                
if (i > 0) {
                    KSK08AP01LogicData logicDataRow 
= (KSK08AP01LogicData) lstDetailsData
                            .get(i 
- 1);
                    List lstCSVRowData 
= new ArrayList();

                    lstCSVRowData.add(logicDataRow.getNYK_KYT_CDE());

                    lstCSVRowData
                            .add(replaceStr(logicDataRow.getKYT_NAM_RYK()));
                
                    lstCSVRowData.add(logicDataRow.getSRS_CDE());
                    
                    lstCSVRowData.add(replaceStr(logicDataRow
                            .getDAI_SRS_NAM_RYK()));
                    
                    lstCSVRowData.add(logicDataRow.getMKR_CDE());
                    
                    lstCSVRowData
                            .add(replaceStr(logicDataRow.getMKR_NAM_RYK()));

                    lstCSVRowData.add(StringUtil.unformatDate(logicDataRow
                            .getSIR_KZY_YMD()));
                    
                    lstCSVRowData.add(StringUtil
                            .unformatDate(replaceStr(logicDataRow
                                    .getSRS_NOU_YMD())));

                    lstCSVRowData
                            .add(replaceStr(logicDataRow.getSRS_DEN_NUM()));
                    
            lstCSVData.add(lstCSVRowData);
                }
            }
    

            csvWriter.write(strFirstTitle, lstCSVData);
        } catch(Exception){//do nothing for it}
        
finally {
            if (objPrWriter != null) {
                objPrWriter.close();
                objPrWriter 
= null;
            }
            
if (objBAOStream != null) {
                objBAOStream.close();
            }
            previousForm.reset(mapping, request);
        }

出现的问题是文件出来了,但是数据没有加载,其实很简单,类已经GET异常,但是却什么也没有做,代码继续往下执行导致了这样的结果。

这样的情况还有很多类型。

1.预防的方法不适用于出现的异常或错误。

2.出现的异常或错误过于宏观。

当然这样的方式还有很多情况,换句话讲,我们不应该预防错误,而应该主动的将其爆发出来。这样的方式有如下的几点好处:

1.方便了测试。

2.降低了偶然性错误,降低了时间性错误。

3.降低了后期维护的成本。

当然好处不止这么多,但是我们要做的需要如下几点:

A:采用预防性思维但是不要采用预防性编程。

B:制定文档,针对各种类型的错误制定解决方案,这样可以达到程序的规范性。

C:程序开发之时要采用,注释之类的标签,也可制定既定方案。

D:最后产品交付之时采用统一处理方式。

原创粉丝点击