`
emavaj
  • 浏览: 49896 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

程序员应该有代码洁癖

    博客分类:
  • Java
阅读更多

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

 

2
0
分享到:
评论
6 楼 lvjin948 2013-07-09  
mark.
5 楼 houxinyou 2010-06-28  
我以前有同事写了一个函数几百行代码,几十个变量折腾了一大顿,啥都没用上,只有一行语句是有用的!那个语句,一个变量都用不上!
4 楼 風一樣的男子 2010-06-26  
emavaj 写道
風一樣的男子 写道
LZ 是没见过烂代码而已
一个方法十几个甚至二十几个参数
一个方法近千行
反正我看到都无语了
真不知道是 Java 代码还是什么

呵呵,这个我到没见过...看来我孤陋寡闻了...


或许你去做做政府部门的项目就有体会了
特别是哪些几年前的老项目
3 楼 emavaj 2010-06-26  
風一樣的男子 写道
LZ 是没见过烂代码而已
一个方法十几个甚至二十几个参数
一个方法近千行
反正我看到都无语了
真不知道是 Java 代码还是什么

呵呵,这个我到没见过...看来我孤陋寡闻了...
2 楼 風一樣的男子 2010-06-26  
LZ 是没见过烂代码而已
一个方法十几个甚至二十几个参数
一个方法近千行
反正我看到都无语了
真不知道是 Java 代码还是什么
1 楼 mercyblitz 2010-06-25  
好好沟通就行咯,问题不大。

相关推荐

    基于JavaScript实现的程序员表白爱心代码(2套)

    基于JavaScript实现的程序员表白爱心代码(2套) 基于JavaScript实现的程序员表白爱心代码(2套) 基于JavaScript实现的程序员表白爱心代码(2套) 基于JavaScript实现的程序员表白爱心代码(2套) 基于JavaScript实现的...

    程序员表白专用代码

    "程序员表白专用代码"这个主题,就是程序员们利用编程语言进行创意表白的一种方式。下面,我们将深入探讨这个话题,了解如何通过编程语言来传达爱意。 1. **编程语言的艺术性** - 编程不仅仅是一种实用技术,它也...

    程序员之表白代码

    在IT行业中,程序员不仅以编写代码为日常,也常常利用技术来表达个人情感,比如“程序员之表白代码”。这个主题通常涉及到将编程语言与创意相结合,以独特的方式向心仪的人传达爱意。在这个实例中,“紫色背景恋爱...

    程序员表白代码之情人节快乐!

    这种代码可以是基于各种编程语言实现的,如Python、JavaScript、C++或Java,这些语言都有丰富的库和功能,能够帮助程序员实现创意。 1. **Python**: Python以其简洁明了的语法,常被用来编写表白代码。例如,使用...

    好的程序员如何写代码

    9. **持续进步**:好的程序员有成为更好的自己的决心,不断学习和实践,他们的代码随着经验积累而不断提升。 10. **面试和招聘**:评估程序员能力不应仅依赖于基础理论和面试,而应包括实际编程和重构任务,以更...

    程序员数学3 的源代码

    通过学习《程序员数学3》中的线性代数部分,并结合配套代码,读者可以加深对线性代数的理解,掌握如何在实际编程项目中运用这些概念,从而提升解决问题的能力,特别是在涉及数据处理、机器学习和统计分析的领域。...

    程序员佛祖代码注释.txt

    程序员佛祖代码注释,佛祖保佑,代码无BUG

    程序员表白代码\爱的时间 html+js

    程序员表白代码\爱的时间 html+js 程序员表白代码\爱的时间 html+js 程序员表白代码\爱的时间 html+js 程序员表白代码\爱的时间 html+js程序员表白代码\爱的时间 html+js 程序员表白代码\爱的时间 html+js程序员表白...

    女程序员征婚需求分析与代码

    女程序员征婚需求分析与代码女程序员征婚需求分析与代码女程序员征婚需求分析与代码女程序员征婚需求分析与代码女程序员征婚需求分析与代码女程序员征婚需求分析与代码

    VC++60程序员指南配套代码

    《VC++60程序员指南配套代码》是一份针对微软Visual C++ 6.0(简称VC60)开发环境的编程教程所附带的实践代码资源。这份资源旨在帮助学习者深入理解和应用VC60的编程环境,通过实际操作来巩固理论知识。VC60作为一款...

    8套 程序员表白代码

    在IT行业中,程序员通常以其独特的思维方式和技能表达情感,而“程序员表白代码”则是一种将技术与浪漫结合的独特方式。这些代码通常是用各种编程语言编写的,用来展示程序员的创意和对技术的热爱,同时也表达了他们...

    程序员向妹子表白专用代码

    在IT行业中,编程不仅仅是解决技术问题的工具,它还可以是一种表达情感...通过学习和理解这些代码,程序员可以为自己的浪漫行动增添一份科技色彩,同时,这也是一种展示编程魅力的方式,让非程序员看到代码也能有温度。

    程序员浪漫-浪漫爱心代码(附赠源码html)

    程序员—专属浪漫爱心代码 胆大心细脸皮厚是表白的不二法门。第一次表白表示被拒绝了后,通常后来慢慢相处再表白就成功了。 要耐心,要脸皮厚,要细心。不要怕你的主动会带来她的反感,你不主动,她也不主动,也就...

    程序员代码面试指南-代码

    程序员代码面试指南:IT名企算法与数据结构题目最优解左程云 著 这是一本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一痛点,...

    黑马程序员ssm代码分享

    内容概要:通过带着读者手写简化版 Spring 框架了解 Spring 核心原理。在手写Spring源码的过程中会摘取整体框架中的核心逻辑,简化代码实现过程保留核心功能, ...本代码基于黑马程序员的课程,最好根据课程同步学习

    程序员向妹子表白专用代码.zip

    在这个名为“程序员向妹子表白专用代码.zip”的压缩包文件中,我们可以期待找到一系列与编程相关的浪漫方式,旨在帮助程序员向他们心仪的对象表达爱意。这个压缩包可能包含了一系列精心设计的代码片段,这些代码在...

    程序员七夕告白源码

    精美的网页加上动听的音乐效果是程序员七夕告白的绝佳神器。里面包含了十三个源代码。第一个是计算你和另一半在一起的时间。只需要改动源码里面的起始时间就可以实现你想要的结果。怎么改动起始时间和怎么将音乐改成...

    玫瑰花的浪漫 程序员表白代码 可自行修改

    玫瑰花的浪漫 程序员表白代码 可自行修改 简单易懂 html静态页面 玫瑰花的浪漫 程序员表白代码 可自行修改 简单易懂 html静态页面玫瑰花的浪漫 程序员表白代码 可自行修改 简单易懂 html静态页面玫瑰花的浪漫...

    JS版的程序员表白代码

    【标题】"JS版的程序员表白代码"是一个利用JavaScript及其他编程语言创造的浪漫技术展示,旨在向心仪的对象表达心意。JavaScript作为前端开发的核心语言,以其动态性和交互性为载体,可以构建出各种有趣的互动效果,...

Global site tag (gtag.js) - Google Analytics