`
daoger
  • 浏览: 529683 次
  • 性别: Icon_minigender_1
  • 来自: 山东济南
社区版块
存档分类
最新评论

让人头疼的新手

阅读更多
刚进公司没多久时,领导让我带两个新人(07年7月份毕业的)。他们两个是试用期3个月都过了之后才参与到我们现在的项目中来的,算起来他们也工作了快一年了,可是今天无意中修改一个他们写过的一个类文件时,看到他们写的一些代码,让我又好气又好笑。可能也是我以前只注意给他们测试功能了,没怎么注意代码方面的问题吧!

晒晒他们的部分代码!


/**
	 * 查询方案金额总和
	 * 
	 * @param lottype
	 *            Long
	 * @return double
	 */
	public Double getsummation(Long lottype)
	{
		double sum = 0.00;
		List ls = null;
		String sql = "";
		if (sql != null)
		{
			sql = " select sum(amount) from OccurProj a where a.lottype = '" + lottype + "' ";
		}
		ls = find(sql);
		if (ls != null && ls.isEmpty())
		{
			for (int i = 0; i < ls.size(); i++)
			{
				OccurProj occurproj = (OccurProj) ls.get(i);
				sum = sum + occurproj.getAmount();
			}
		}
		return sum;
	}




/**
	 * 根据主键查询明细信息
	 * 
	 * @param occurproj
	 *            OccurProj
	 * @return String
	 */
	public List queryById(Long id)
	{
		String sql = "";
		if (sql != null)
		{
			sql = " from OccurProj a where a.id=" + id;
		}
		return translateCode2Str(find(sql));
	}



/**
	 * 参数查询
	 * 
	 * @param occurproj
	 *            OccurProj
	 * @param lottype
	 *            Long
	 * @return List
	 */
	public List queryByPara(String username, Long lottype)
	{
		String sql = "";
		if (username != null && username.length() > 0)
		{
			sql += " and a.username like ? ";
		}
		if (sql.length() > 1)
		{
			sql = " from OccurProj a where 1=1 and a.lottype = '" + lottype + "' " + sql;
		} else
			sql = " from OccurProj where lottype = '" + lottype + "' ";
		return translateCode2Str(find(sql));
	}


我现在也体会到当初我找工作的时候为什么那么难了,同时也提醒一下即将毕业的朋友,想找到不错的工作,你的工作态度确实得端正!

以前没带过新人,大家也介绍一下,带新人的经验吧!


我需要说明一下,我发贴的目的是想提醒一下临近毕业的朋友,不是公司不需要应届毕业生,应届毕业生有优点也有缺点。但是你进入公司以后,自己的发展和进步还是要靠自己的努力。工作了半年还能写出这样令人佩服的代码,那就只能是你自己的问题了,当然也有我自己的责任,毕竟是我带他们。

有则改之,无则加勉,别无他意,仅此而已!
分享到:
评论
119 楼 rjzou2006 2008-05-16  
这个应该给他们一些时间吧,没人一生下来就会生很好的.
118 楼 vicksong 2008-05-16  
抛出异常的爱 写道
vicksong 写道
hotjava 写道
vicksong 写道
能满足客户功能的代码就是好代码

----------------------
4,5年以前我也信奉过这样的话,当时我还说过,我啥都不懂,就是能实现功能,这就足够了。 其实这就象一个医生告诉你,反正这药吃不死人,但是说不定有啥副作用一样。


你以为你工作4,5就很牛是吧,跟我比工龄和项目经验,我应该不输给你吧。
说名凭良心的话,我们这里这么多做IT的,有多少是做一些对代码质量或性能要求特别特别高的系统?大多人还是做一些中小型系统吧,功能相对来说,还算简单吧,如果不是做产品的话,有必要为了那20%的东西,浪费公司80%的成本吗?在满足客户功能的前提下,有必要让公司配一个小秘给你写文档吗,中国软件,可不象国外,有那么多小秘......

楼上我经验不如你但是:
能看的明白的代码
这个要求并不高吧


我也不理解你们做项目管理的是怎么做的,其实应界生,也只能做做界面什么的,一些核心的代码他们根本不需要理解,在一些简单的界面等非关键地方,代码只要没有错误也就行了,如果说你的系统核心只有SSH,那肯定完了,系统下来后,100%五花八门了,对于应界生,不能要求太高,关键是项目管理要可行......
117 楼 ddandyy 2008-05-15  
实际上null == sql 是c时代留下来的习惯
只是习惯问题   在JAVA里 sql == null的影响不是那么明显的

但是 text.equals("0")  就肯定不可以了.....
116 楼 ball_cao 2008-05-15  
yueye 写道
luyunjian 写道
armorking 写道
代码1问题多多

     public Double getsummation(Long lottype)
    {
        //1、既然是算钱,就应该用BigDecimal
        //2、sum和ls变量不需要这么早声明
        double sum = 0.00;
         List ls = null;

        String sql = "";

        //3、这个条件是无效(永真)的
        if (sql != null)
        {
            //4、既然lottype的类型是Long,那么在SQL语句中作为参数的时候,就不应该括上单引号
            sql = " select sum(amount) from OccurProj a where a.lottype = '" + lottype + "' ";
        }


借人气,想问一下,null==sql 和 sql==null 有怎样的区别?

第一种写法比较安全,如果你不小心写了一个=就惨了,莫名其妙还不知道怎么死的。。。

另 在大多数编译执行的语言中null==sql比 sql==null执行快 两个值比较将常量放在前面比将变量放在前面速度更快
115 楼 aboutibm 2008-05-15  
面对旧得发黄的电脑,我很难有写程序的冲动
114 楼 抛出异常的爱 2008-05-15  
vicksong 写道
hotjava 写道
vicksong 写道
能满足客户功能的代码就是好代码

----------------------
4,5年以前我也信奉过这样的话,当时我还说过,我啥都不懂,就是能实现功能,这就足够了。 其实这就象一个医生告诉你,反正这药吃不死人,但是说不定有啥副作用一样。


你以为你工作4,5就很牛是吧,跟我比工龄和项目经验,我应该不输给你吧。
说名凭良心的话,我们这里这么多做IT的,有多少是做一些对代码质量或性能要求特别特别高的系统?大多人还是做一些中小型系统吧,功能相对来说,还算简单吧,如果不是做产品的话,有必要为了那20%的东西,浪费公司80%的成本吗?在满足客户功能的前提下,有必要让公司配一个小秘给你写文档吗,中国软件,可不象国外,有那么多小秘......

楼上我经验不如你但是:
能看的明白的代码
这个要求并不高吧

113 楼 vicksong 2008-05-15  
hotjava 写道
vicksong 写道
能满足客户功能的代码就是好代码

----------------------
4,5年以前我也信奉过这样的话,当时我还说过,我啥都不懂,就是能实现功能,这就足够了。 其实这就象一个医生告诉你,反正这药吃不死人,但是说不定有啥副作用一样。


你以为你工作4,5就很牛是吧,跟我比工龄和项目经验,我应该不输给你吧。
说名凭良心的话,我们这里这么多做IT的,有多少是做一些对代码质量或性能要求特别特别高的系统?大多人还是做一些中小型系统吧,功能相对来说,还算简单吧,如果不是做产品的话,有必要为了那20%的东西,浪费公司80%的成本吗?在满足客户功能的前提下,有必要让公司配一个小秘给你写文档吗,中国软件,可不象国外,有那么多小秘......
112 楼 yueye 2008-05-15  
luyunjian 写道
armorking 写道
代码1问题多多

     public Double getsummation(Long lottype)
    {
        //1、既然是算钱,就应该用BigDecimal
        //2、sum和ls变量不需要这么早声明
        double sum = 0.00;
         List ls = null;

        String sql = "";

        //3、这个条件是无效(永真)的
        if (sql != null)
        {
            //4、既然lottype的类型是Long,那么在SQL语句中作为参数的时候,就不应该括上单引号
            sql = " select sum(amount) from OccurProj a where a.lottype = '" + lottype + "' ";
        }


借人气,想问一下,null==sql 和 sql==null 有怎样的区别?

第一种写法比较安全,如果你不小心写了一个=就惨了,莫名其妙还不知道怎么死的。。。
111 楼 luckaway 2008-05-15  
跟应届没关系。跟公司的环境、规模、态度有关系;
就算有几年工作经验!
写的代码也不考虑性能问题,怎么能实现就怎么写。
这些设计都没经过大脑思考的


110 楼 Jissbon 2008-05-15  
楼主的话有道理,干什么都得首先端正自己的态度!
  态度决定一切!
109 楼 抛出异常的爱 2008-05-15  
luyunjian 写道
是我说的不清楚,我的问题引申自
"aaa".equals(userName)和
userName.equals("aaa")的区别;
同事告诉我道理类似于
null==userName和
userName==null的区别;
我也百度google搜索过,一直没有答案,放在心中快半年了

平时不用这种裸函数了

apache.common这个包下面好像有个stringutil类常用这个。。。。少写N多代码。
108 楼 luyunjian 2008-05-15  
是我说的不清楚,我的问题引申自
"aaa".equals(userName)和
userName.equals("aaa")的区别;
同事告诉我道理类似于
null==userName和
userName==null的区别;
我也百度google搜索过,一直没有答案,放在心中快半年了
107 楼 抛出异常的爱 2008-05-15  
niwei 写道
dingji 写道
借人气,想问一下,null==sql 和 sql==null 有怎样的区别?

------------------------------------------------------
假设,你不小心将"=="写成了"=",如果是sql==null就变成了sql=null,对于编译器来说,语法没有问题,如果是if判断则条件永真。。反过来如果是null==sql就变成null=sql,语法错误,不能给一个常量赋值,报错。。所以我一般将这种句式的变量写后面,自从采用这样写法,腰不酸了,背不疼了,生活更和谐了


终于解决了我很长时间的疑问。

很多人一眼看不明白了。
在写代码时
有很多两可的选择。。。。比如大扩号,缩进,都是两可的。

你看看代码大全这本书很多想法会在你的代码中体现出来
比如:
你写的 sql==null
在一般用法中是
if(sql!=null){
//nothing to do 
}else{
//do something 
 return ;
}

这种形式的工作
106 楼 niwei 2008-05-15  
dingji 写道
借人气,想问一下,null==sql 和 sql==null 有怎样的区别?

------------------------------------------------------
假设,你不小心将"=="写成了"=",如果是sql==null就变成了sql=null,对于编译器来说,语法没有问题,如果是if判断则条件永真。。反过来如果是null==sql就变成null=sql,语法错误,不能给一个常量赋值,报错。。所以我一般将这种句式的变量写后面,自从采用这样写法,腰不酸了,背不疼了,生活更和谐了


终于解决了我很长时间的疑问。
105 楼 抛出异常的爱 2008-05-15  
sai619 写道
spiritfrog 写道
String sql = "";  
        if (username != null && username.length() > 0)  
        {  
            sql += " and a.username like ? ";  
        }  
        if (sql.length() > 1)  
        {  
            sql = " from OccurProj a where 1=1 and a.lottype = '" + lottype + "' " + sql;  
        } else  
            sql = " from OccurProj where lottype = '" + lottype + "' ";  
        return translateCode2Str(find(sql));  
没有想通为什么要写where 1=1 恒等的条件, 而且这里的参数处理明显麻烦了点,只要检测参数是否为空,再拼接where好了


确实有点诡异 有点乱

--我是说我的脑子 呵呵


a =" select XXX ,XXX ,XXX ";
b =" form XXX where 1=1  ";
c =" and tt =?";
d =" and mm =?";

这样子写if时简单一点
104 楼 sai619 2008-05-15  
spiritfrog 写道
String sql = "";  
        if (username != null && username.length() > 0)  
        {  
            sql += " and a.username like ? ";  
        }  
        if (sql.length() > 1)  
        {  
            sql = " from OccurProj a where 1=1 and a.lottype = '" + lottype + "' " + sql;  
        } else  
            sql = " from OccurProj where lottype = '" + lottype + "' ";  
        return translateCode2Str(find(sql));  
没有想通为什么要写where 1=1 恒等的条件, 而且这里的参数处理明显麻烦了点,只要检测参数是否为空,再拼接where好了


确实有点诡异 有点乱

--我是说我的脑子 呵呵
103 楼 sai619 2008-05-15  
还好 我在刚开始学习java的时候就找了个规范看了看 至少代码风格还凑合啊 呵呵
至于字符串用+连接 并不只是新手的专利 老手也会出现的

感觉应该严于律己 宽以待人

建议看看重构 嘿嘿 很不错的书 专门买了一本当枕头呢 哈哈
102 楼 spiritfrog 2008-05-14  
String sql = "";  
        if (username != null && username.length() > 0)  
        {  
            sql += " and a.username like ? ";  
        }  
        if (sql.length() > 1)  
        {  
            sql = " from OccurProj a where 1=1 and a.lottype = '" + lottype + "' " + sql;  
        } else  
            sql = " from OccurProj where lottype = '" + lottype + "' ";  
        return translateCode2Str(find(sql));  
没有想通为什么要写where 1=1 恒等的条件, 而且这里的参数处理明显麻烦了点,只要检测参数是否为空,再拼接where好了
101 楼 dingji 2008-05-14  
借人气,想问一下,null==sql 和 sql==null 有怎样的区别?

------------------------------------------------------
假设,你不小心将"=="写成了"=",如果是sql==null就变成了sql=null,对于编译器来说,语法没有问题,如果是if判断则条件永真。。反过来如果是null==sql就变成null=sql,语法错误,不能给一个常量赋值,报错。。所以我一般将这种句式的变量写后面,自从采用这样写法,腰不酸了,背不疼了,生活更和谐了

100 楼 miracle9i 2008-05-14  
晕 晒代码的就那水平,还不让别人说几句....

说真的,我要晒代码,至少重构一次再拿出来,第一次写出来的过程性语言,就不要出来丢人了

相关推荐

    AJAX——新手快车道

    是也同样会碰到麻烦,遇到障碍,感觉头痛。如果没有真正的专家的指导,我不 可能如此迅速地将AJAX掌握到目前这样的程度,要真是让我自学三个月,然 后就写出书来的话,那真是在骗钱了。 老手能够快速学习的另一个...

    结构设计中让人头疼的超筋.pdf

    在结构设计中,"超筋"是一个常见的问题,尤其对于新手设计师来说,它可能造成困扰。超筋是指结构或构件的配筋量超过了其实际所需的承载能力,这通常与位移、相对位移过大或者变形不协调有关。位移包括水平位移、竖向...

    新手如何看懂电路图 硬件工程师电路分析物联网模电单片机嵌入式技术.doc

    电路图是电子工程师日常工作中不可或缺的一部分,但新手如何看懂电路图却是一件让人头疼的事。特别是在单片机控制电路中,电路图的理解对整个项目的成功至关重要。 首先,让我们来理解电路图中的符号。VCC 和 GND ...

    Java软件开发工程师简历模板包装教学问题完整版.doc以及工作面试指导技巧

    为什么收费? 1、这是花了我很多天的心思,用心打造...我们每个人平均每年都要做一次简历修改,你跳槽的时候就不会头疼简历了; 我应该怎么用? 因为有很多人照搬,最好不要照搬,按照你自己的想法用这样的套路去包装!

    素材管理软件,媲美eagle

    如日常工作中因为某个项目所收集的图片,或是平时逛设计网站所保存的图,又或者是平常收集的一些源文件,管理起这些素材总是让人头疼。 于是就诞生了开发一个素材管理工具。而且得到了光大设计师的高度认可。 软件...

    postfix权威指南 中文版

    如果sendmail让你头痛万分,现在你有更好的选择 —— Postfix。安全的结构设计与优异的可靠性,使它广受专家的好评与赞赏。Postfix也是许多新手的第一选择,因为它太容易架设了!事实上,Postfix已经成为MacOS X默认...

    熊海博客 v1.4

    不少问题确实让我有些头痛,得到的大部分是埋怨,也慢慢失去了继续开发的动力了,大部分业余时间开发PHP版本的博客了,但我知道,好的东西是要经过千锤百炼的,不管什么事,无法做到让所有人都满意,现在整理了一个...

    常见的PC机硬件、软件故障现象及对应的故障处理方法

    电脑出现的故障总是让人头疼,但掌握了正确的处理方法,大部分问题都能迎刃而解。我们汇总了常见的PC硬件和软件故障现象及其解决方法,帮助你快速诊断并修复电脑问题。 从硬件方面,我们探讨了诸如电源问题、散热...

    金士顿16GU盘DT101 G2量产加全内置UD

    1、前言:为了制作成功这个U盘,我着实费了不少时间和精力,因为是新手。在网上教程很多,看得我是眼花眼花缭乱,看得头疼。不过功夫不负有心人,我用了两天时间终于把这个可爱的启动U盘搞定啦。并且用了一下午时间...

    金士顿16G U盘双启动教程

    1、前言:为了制作成功这个U盘,我着实费了不少时间和精力,因为是新手。在网上教程很多,看得我是眼花眼花缭乱,看得头疼。不过功夫不负有心人,我用了两天时间终于把这个可爱的启动U盘搞定啦。并且用了一下午时间...

    KnockOut 2.77-超强抠图软件及教程

    KnockOut 解决了令人头疼的抠图难题,使枯燥乏味的抠图变为轻松简单的过程。Knockout 2.0不但能够满足常见的抠图需要,而且还可以对烟雾、阴影和凌乱的毛发进行精细抠图,就算是透明的物体也可以轻松抠出。即便你是...

    单片机入门的方法与学习误区介绍

    ARM单片机是大多数新手选择的入门切入点,但由于知识的不足,在设计过程中新手们经常会遇到这样或那样的问题,ARM异常中断返回就是这样一种令人头疼的问题。在ARM的使用问题中异常中断返回是新手们较为苦恼的问题,...

    ARM单片机三种中断返回情况的分析与解决办法

    ARM单片机是大多数新手选择的入门切入点,但由于知识的不足,在设计过程中新手们经常会遇到这样或那样的问题,ARM异常中断返回就是这样一种令人头疼的问题。在ARM的使用问题中异常中断返回是新手们较为苦恼的问题,...

    ARM单片机三种中断返回情况的分析

    ARM单片机是大多数新手选择的入门切入点,但由于知识的不足,在设计过程中新手们经常会遇到这样或那样的问题,ARM异常中断返回就是这样一种令人头疼的问题。在ARM的使用问题中异常中断返回是新手们较为苦恼的问题,...

    MCGS数据采集单片机数据传送的设计资料.zip

    - 想实现创新,但电路设计让您头疼? - 答辩前夜,PPT资料和报告成为你的噩梦? 一份资料,解决所有问题! - 完整方案设计:从构思到实现,步步为营,轻松拿下创意点! - 专业电路设计:科学合理的电路图,无需再因...

    出租车计价器设计资料.zip

    - 想实现创新,但电路设计让您头疼? - 答辩前夜,PPT资料和报告成为你的噩梦? 一份资料,解决所有问题! - 完整方案设计:从构思到实现,步步为营,轻松拿下创意点! - 专业电路设计:科学合理的电路图,无需再因...

    电子万年历设计与制作资料.zip

    - 想实现创新,但电路设计让您头疼? - 答辩前夜,PPT资料和报告成为你的噩梦? 一份资料,解决所有问题! - 完整方案设计:从构思到实现,步步为营,轻松拿下创意点! - 专业电路设计:科学合理的电路图,无需再因...

    基于单片机的作息时间控制钟系统资料.zip

    - 想实现创新,但电路设计让您头疼? - 答辩前夜,PPT资料和报告成为你的噩梦? 一份资料,解决所有问题! - 完整方案设计:从构思到实现,步步为营,轻松拿下创意点! - 专业电路设计:科学合理的电路图,无需再因...

Global site tag (gtag.js) - Google Analytics