最近忽然发现自己以前写的程序好“丑”...
冗余的变量,啰嗦的语句,糟糕的注释,晦涩难懂的算法表达...
自己多看2遍就觉得想吐...
正如某个家伙说的一样:每个程序员都应该对代码有洁癖!
从代码的一桩桩“丑事”,足可以看出,自己的功力...准确说,应该是自己的内力,远远达不到“拿出去见人”的水平
package Manager; //包名居然用大写!
......
import KGW_hbm.Brand;
import KGW_hbm.Commodity;
import KGW_hbm.SPType;
import KGW_hbm.User;
public class KGWManagerImp extends HibernateDaoSupport implements KGWManager {
....
public boolean checkregistername(String usn) {
List l = this.getHibernateTemplate().find("from User as u where u.username=?",usn);
if( l==null || l.size()==0){
return true;
}else{
return false;
}
}
......
public int login(String usn, String pwd) {
Object[] para = new Object[]{usn,pwd};
List l = this.getHibernateTemplate().find("from User as u where u.username=? and password=? ", para);
if( l==null || l.size()==0){ //权限判断居然这样
return -1;
}else{
User u = (User) l.get(0);
if (u.getType() >= 0 && u.getType() <= 10) {
return 0;
} else if (u.getType() == 999) { //getType用了N次,也不懂弄个局部变量
return 1;
} else if (u.getType() == 9999) {
return 2; //返回值简单的1、2又没有Javadoc,谁懂?
} else {
return -1;
}
}
}
....
public Set loadCommodityById(int id, int model) {
/**
* model==0 按品牌查找
* model==1 按类别查找
*/
if(model==0){ //没有写Javadoc ,而且还用什么0、1表示类型...叫别人怎么知道?!
Brand b = (Brand)this.getHibernateTemplate().load(Brand.class, id);
return b.getCommodity();
}else if(model==1){
SPType t = (SPType)this.getHibernateTemplate().load(SPType.class, id);
return t.getCommodity();
}else{
return null;
}
}
....
}
以前根本没怎么在意,那些什么语句精不精简、注释是否合理(当然,代码缩进,和基本注释还是有的)自己觉得没太大必要,有起码的缩进和基本的注释,写下去标记一下就得了...
现在明白了,注释和缩进等等,就像是程序员之间的礼仪,不求华丽,只求整洁简练,简单易懂。如果你是老板,你的员工给你的代码乱成一团,注释或者啰嗦、或者描述模糊,你会是什么感觉? 就像一个脏兮兮的东西跑进了你的工作室?!
再如果你是员工,你要和这样一个马马虎虎、写东西乱七八糟的家伙合作,你是否会嫌弃他污染你的辛辛苦苦写的代码?!
现实世界中,我们应该以礼相待,那么虚拟世界中,也应该保持着这样的礼仪!————代码之间的礼仪!
代码书写方面,强烈建议使用Sun的CheckStyle!它能检查你的Java代码是否符合一定的格式(可以配置),比如空格的有无、命名规范、函数参数final、常量使用、Javadoc等等方面(推荐使用Eclipse的格式配置,Sun的太严格了)
至于语句的精简 和 注释的位置、多少等...就需要相当的时间去磨炼一下了...
堆排序:
//调整函数
void reBuild(int *num, int top, int size) {
//初始化
int lastIndex = size - 1;
int suKey = top * 2 + 1;
int lcIndex = suKey > lastIndex ? top : suKey;
int rcIndex = suKey + 1 > lastIndex ? top : suKey + 1;
//交换
if (!(num[top] >= num[lcIndex] &&
num[top] >= num[rcIndex])) {
int changeIndex = num[lcIndex] > num[rcIndex] ? lcIndex : rcIndex;
swap(num, changeIndex, top);
reBuild(num, changeIndex, size);
}
}
//堆排序
void dsort(int *num, int size) {
//构建堆(大顶堆)
int buildKey = size / 2;
for (; buildKey >= 0; --buildKey) {
reBuild(num, buildKey, size);
}
// output(num, size); //测试
//调整堆
int lastNoSorted = size;
while (lastNoSorted > 0) {
--lastNoSorted;
swap(num, 0, lastNoSorted);
reBuild(num, 0, lastNoSorted);
}
}
int main() {
int num[] = {0, 2, 4, 1, 8, 3, 5, 9};
int size = sizeof(num)/sizeof(num[0]);
dsort(num, size); //堆排序
output(num, size);
return 0;
}