程序员应该有代码洁癖

最近忽然发现自己以前写的程序好“丑”...
冗余的变量,啰嗦的语句,糟糕的注释,晦涩难懂的算法表达...
自己多看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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值