进攻性编程规范

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

如下有一串代码: 

这段代码的意思是将数据以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:最后产品交付之时采用统一处理方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值