Code Guideline Test 的一点点总结1

这两天在公司进行代码规范培训中,写了三个题目,一个是拆分字符串,一个是在本地目录下删除指定的目录,还有一个是阶乘。

先说拆分字符串题目看似很简单,但是在写的时候不然,一个方法不是说写出来就可以了,它要通过专门人的测试之后,才能说写好,就这道题说,写一个方法,给它一个字符串参数和字符,然后根据这个字符来拆分这个字符串,这样写的代码问题很多。如下面这个写法

public void spliteString(String str, ArrayList<String> list, char ch) {
   int index = 0;
   int first = 0;
   int count = 1;
   while (true) {
    index = str.indexOf(ch, first);
    if (index == -1) {
     if (count == 1) {
      list.add(str);
     }
     break;
    } else {
     String tempStr = str.substring(first, index);
     if (!tempStr.trim().equals("")) {
      list.add(tempStr.trim());
     }
     count++;
    }
    index++;
    first = index;
   }
 }

上面的方法确实是拆分字符串的,并且如果给它一个字符串和字符可以正确的拆分字符串的,但是往往我们用这个方法的时候,不一定给的就是一个正确的字符串,或者字符,所以在写这个方法的时候,首先要考虑传的参数的正确性。所以下一个方法之前,先要写一个测试函数,把所有可能的情况想出来,再写这个方法,然后测试,这样写出来的方法才会有说服力。如下面的方法,就比上面的好多了。

public void spliteString(String str, ArrayList<String> list, char ch) {
  if (ch == '\0') {
   assert false : "不能以'\\0'字符拆分字符串!";
  } else if (str == null) {
   assert false : "拆分字符串不能为null!";
  } else if (str == "") {
   list = null;
  } else {
   int index = 0;
   int first = 0;
   int count = 1;
   while (true) {
    index = str.indexOf(ch, first);
    if (index == -1) {
     if (count == 1) {
      list.add(str);
     }
     break;
    } else {
     String tempStr = str.substring(first, index);
     if (!tempStr.trim().equals("")) {
      list.add(tempStr.trim());
     }
     count++;
    }
    index++;
    first = index;
   }
  }
 }

然后再通过一下的测试用例进行测试,

  spliteString("shaoshanyang", list, '@');
  spliteString("shao@shan@yang", list, '@');
  spliteString("shao@@shan@yang@zhang", list, '@');
  spliteString("shao@ shan @yang zh@ang", list, '@');
  spliteString("@shaoshan@yang", list, '@');
  spliteString("shaoshan@yang@", list, '@');
  spliteString("@@", list, '@');
  spliteString("", list, '@');
  spliteString(null, list, '@');
  spliteString("zhong guo shou du", list, '\0');

代码规范要求:1,多行注释,要另起一行,并且注释和前一行之间要空一行

                    2,if else语句结构要尽量的少,不用嵌套太多。

                    3,代码不要写的太紧凑,比如 a=3应该写a = 3。

                    4,return语句要尽量少,争取在最后写一个returne语句

posted on 2012-07-25 14:42  ssy黑桃a  阅读(288)  评论(0编辑  收藏  举报