16
回答
java中,有种挖坑的感觉,大家会怎么做呢。
华为云数据库免费试用   

有种挖坑的感觉,大家会怎么做呢。

package com.test.test;

import java.util.ArrayList;
import java.util.List;

/**
 * 有人像我这样写代码的吗,我是看具体情况而定<br>
 * 感觉像是在挖坑<br>
 * 怎么做更好点呢,大家平常都怎么做。<br>
 * 
 * @author test
 * @see JDK 1.4 
 *
 */
public class Test1 {
    public void test(){
        final List list = new ArrayList();
        final List list_free = new ArrayList();
        String id = "t1";
        String action = null;
        String result = null;
        
        /**
         * 请注意,如果将所有代码写进入一个方法里面,可能超过1000行也说不定。<br>
         * 如果你需要在原来的功能上加些新功能。
         * 
         */
        
        result = "test_test;t1;ttt2;tttttttt3"; // 业务要求,这里会新赋值
        if(id != null && !id.matches("^\\s*$")){
            getInfoById(id.trim(), list); // 会修改list
            // getInfoById(id.trim(), list, list_free); // 如果是这样子的
        }
        
        if("条件1".equals(action)){
            result = join(list, result); // 不修改list,只做数据的来源
        } else if("条件2".equals(action)){
            result = join(list, result); // 不修改list,只做数据的来源
        } else {
            result = join(list, result); // 不修改list,只做数据的来源
        }
        
        System.out.println(result);
    }
    
    public String join(List list, String result){
        StringBuffer sb_result = new StringBuffer();
        String[] arr = result.split(";");
        int arr_length = arr.length;
        String item = null;
        
        for(int i = 0; i <arr_length; i++){
            item = arr[i];
            if(item.matches("^\\s*$")){
                continue;
            }
            if(list.contains(item)){
                continue;
            }
            
            sb_result.append(item).append(";");
        }
        
        int list_size = list.size();

        for(int i = 0; i < list_size; i++){
            sb_result.append((String) list.get(i)).append(";");
        }
        
        return sb_result.toString();
    }
    
    public void getInfoById(String id, List list){
        // 根据id查询数据库
        String str = null;
        // while(rs.next()){
            list.add(str);
        // }
    }
    
    public void getInfoById(String id, List list, List listFree){
        // 根据id查询数据库
        String str = null;
        String str1 = null;
        
        // while(rs.next()){
            // str = rs.getString("a");
            // str1 = rs.getString("b");
        
            list.add(str);
            listFree.add(str1);
        // }
    }
    
}

举报
共有16个答案 最后回答: 5年前

领导说,开始挖坑...那你就挖呗!

争取挖的大点,深点,将来不可填平的坑啊!

一坑在手,所向披靡!谁都开不掉你!

要大!要深!要复杂!

--- 共有 8 条评论 ---
大漠穷秋回复 @晓骏 : 比如说,什么样的公司叫做【正规公司】? 5年前 回复
铂金小猪这是你喷子说的最正确的一句话,不错,继续保持。猪哥看好你。 5年前 回复
loyal回复 @晓骏 : 这取决于你挖坑的技术水平了,和代码评审没关系.两码事!评审通过,坑照样挖的很好! 5年前 回复
首席安全砖家回复 @雨翔河 : 如果碰到正规的大公司,你敢挖坑,代码审查的时候,不K 死你都有怪 5年前 回复
easymbol一坑在手天下我有?!!! 5年前 回复

我觉得可以把第一个if完全提出,然后下面几个public方法改成private,join()方法中的参数list改成final。

好的代码是不断重构出来的,会有通用的法则么?

--- 共有 2 条评论 ---
just4scala回复 @不喜欢吃素的菜鸟 : 因为第一个if和下面的if逻辑是完全不一样的,所以可以提出做一个单独的方法,同样下面的那些if也可以这样处理。加final是只是一个提示作用,说明这个list是在方法中是不允许改变的。不过你这里似乎用unmodifiableList会更好。 5年前 回复
不喜欢吃素的菜鸟1___.第一个if指:if(id != null && !id.matches("^\\s*$")){。id是在一个对象中获取的,并不一定存在。 2___.下面的几个方法改成private,是会比较好。 3___.这里的public String join(List list, String result){,List 为什么要改成final? 5年前 回复

这个真有, 以前 老公司一个 框架就是这么玩的

if(action.equals("")){

action1();

}

if(action.equals("")){

action2();

}

--- 共有 6 条评论 ---
cyper第二个if应该改成else if,10年前的java代码确实是这么写的。 5年前 回复
不喜欢吃素的菜鸟你上面写的if(...){...} if(...){...}想要说明什么呢,不是很清楚。 5年前 回复
不喜欢吃素的菜鸟getInfoById(...)方法。 5年前 回复
不喜欢吃素的菜鸟这个是if判断。其实我更想问一般写方法都是有返回值的,你们看我把List 单参数传入到方法中,但是在方法中进行了修改List,而不是返回一个List。 5年前 回复
panmingguang你一说, 我到也想起来了, struts1 也是这么玩的, 我以前偷懒 就这么写, 否则配置 太麻烦 5年前 回复

引用来自“Mallon”的答案

完全看不懂你的代码要做什么

Java写出来的代码都好奇怪 -- 脱裤子放屁

引用来自“宏哥”的答案

引用来自“Mallon”的答案

完全看不懂你的代码要做什么

Java写出来的代码都好奇怪 -- 脱裤子放屁

而且写Java的语言表达能力都很差劲,头脑也很混乱
顶部