您的位置:首页 > 产品设计 > UI/UE

Code Guideline Test 的一点点总结1

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

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

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语句
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: