如何使下面的代码更易于阅读

时间:2019-08-08 14:28:59

标签: java

我下面的代码是取消产品请求。产品也有子产品。如果根或子产品的验证中存在错误,则取消唯一根。如果完全没有错误,请取消root及其子产品。如何改善下面的代码

private void cancel(ProductCancelRe root){
    root.validateProduct(root);
    Errors errors = root.getErrors();
    List<ProductCancelRequest> list = null;

    if(root.hasSubProducts){
       list = //  some function to getProductCancelRequest for sub products
    errors.addErrors(getErrorsForSubProducts(list)
    }
    if(errors.size == 0){
        cancelProduct(root);
        if(root.hasSubProducts()){  
            for(ProductCancelRequest r : list){ 
                cancelRoot(r); // cancel subProducts also if bo errors
            }
        }
    }
    else{ 
        cancelProduct(root); // if errors cancel only root product
    }
}

2 个答案:

答案 0 :(得分:2)

  1. 一致的缩进。
  2. 或者在同一行或下一行中插入左括号。不要混在一起。
  3. 无论条件如何,您都致电cancelProduct(root),因此只需将其放在顶部即可。
private void cancel(ProductCancelRe root) {

    root.validateProduct(root);
    Errors errors = root.getErrors();
    List<ProductCancelRequest> list = null;

    if(root.hasSubProducts) {
        list = //  some function to getProductCancelRequest for sub products
        errors.addErrors(getErrorsForSubProducts(list));
    }

    cancelProduct(root);

    if(errors.size == 0 && root.hasSubProducts) {
        for(ProductCancelRequest r : list) { 
            cancelRoot(r); // cancel subProducts also if bo errors
        }
    }
}

答案 1 :(得分:0)

使代码更易于阅读的一种方法是在代码编辑器中添加更多/更好的颜色。 其他方法包括:添加空行,注释,空格和缩进。

某些编辑器具有向代码添加空格的功能。例如,Visual Studio会按照以下顺序清理代码“ Ctrl + K,Ctrl + D”。

随着时间的流逝,您将学到更多的东西。

private void cancel(ProductCancelRe root)
{
    root.validateProduct(root);
    Errors errors = root.getErrors();
    List<ProductCancelRequest> list = null;


    //adding values to 'list'
    if(root.hasSubProducts)
    {
        //some function to getProductCancelRequest for sub products
        list = errors.addErrors(getErrorsForSubProducts(list)
    }


    if(errors.size == 0)
    {
        cancelProduct(root);
        if(root.hasSubProducts())
        {  
            for(ProductCancelRequest r : list)
            { 
                cancelRoot(r); // cancel subProducts also if bo errors
            }
        }
    }
    else
    { 
        cancelProduct(root); // if errors cancel only root product
    }
}