关于代码民工的一些见解

    首先声明一下,我是一个新手,本人发表文章意在交流学习,如果大家不同意我的看法还请手下留情。

    前几天看了一篇园子里的文章,下面的留言让我惨不忍睹,到现在还心有余悸……..

    先大体介绍一下,我今年毕业,出来也和很多人一样:写代码的。如果你愿意称我为代码民工也可以。最近很多同学向我抱怨不想做程序员了,感觉程序员太累每天还要加班,并且每天对着代码让人恶心。

     我身边的朋友加班的也不少,前几个月我一个同学来北京实习,去了一家公司(公司名我就不提了),他每天都是九点之后回来,而且周末还要加班。有一次晚上不想加班了,以洗衣服为由请假回来休息下。他实习不到半个月就辞职了,现在好像离开北京回家了。

    我现在在公司也不加班,每天偶尔也会感觉很累,周末也会有这么一天下午完全的休息一下---不睡一觉感觉确实很累。

因为我加班较少,前一天一个同学介绍给接了一个私活,帮人家维护网站。其实说的具体些就是给人家改程序,服务器买的现成的,几乎不用看着。一共是两个程序,代码分别都给我了,看完代码我都有一种想哭的冲动。我从程序中拿出来点代码给大家看一下,但是前提给大家说好,看了之后不准哭的。

SELECT 
	*,(SELECT StudentName FROM Sys_Student WHERE StudentID = inf_Student_Exam.StudentID AND ClassListID IN (SELECT ClassListID FROM inf_Exam WHERE ExamID = '" + ExamID + @"')) AS StudentName,
	(SELECT GenearchName FROM Sys_Student WHERE StudentID = inf_Student_Exam.StudentID AND ClassListID IN (SELECT ClassListID FROM inf_Exam WHERE ExamID = '" + ExamID + @"')) AS GenearchName,
	(SELECT Relation FROM Sys_Student WHERE StudentID = inf_Student_Exam.StudentID AND ClassListID IN (SELECT ClassListID FROM inf_Exam WHERE ExamID = '" + ExamID + @"')) AS Relation,
	(SELECT Mobile FROM Sys_Student WHERE StudentID = inf_Student_Exam.StudentID AND ClassListID IN (SELECT ClassListID FROM inf_Exam WHERE ExamID = '" + ExamID + @"')) AS Mobile,
	(SELECT IsEnabled FROM Sys_Student WHERE StudentID = inf_Student_Exam.StudentID AND ClassListID IN (SELECT ClassListID FROM inf_Exam WHERE ExamID = '" + ExamID + @"')) AS IsEnabled,
	(SELECT ExamName FROM inf_Exam WHERE ExamID = inf_Student_Exam.ExamID) AS ExamName,
	(SELECT ExamDate FROM inf_Exam WHERE ExamID = inf_Student_Exam.ExamID) AS ExamDate
  FROM 
	inf_Student_Exam
  WHERE 
	ExamID = '" + ExamID + @"' 
  ORDER BY 
	(SELECT ExamDate FROM inf_Exam WHERE ExamID = inf_Student_Exam.ExamID) DESC";
		

这个是从cs文件中拿出来的一点代码,我大体做了一下修改:

select 
	inf_Student_Exam.*,
	Sys_Student.StudentName,
	Sys_Student.GenearchName,
	Sys_Student.Relation,
	Sys_Student.Mobile,
	Sys_Student.IsEnabled,
	inf_Exam.ExamName,inf_Exam.ExamDate
from inf_Student_Exam, Sys_Student,inf_Exam
where 
	Sys_Student.StudentID = inf_Student_Exam.StudentID 
	and Sys_Student.ClassListID = inf_Exam.ClassListID 
	and inf_Exam.ExamID = inf_Student_Exam.ExamID
	and inf_Student_Exam.ExamID = @ExamID
order by inf_Exam.ExamDate DESC

看上去字母确实少了很多,我这一年都在做sl程序了,一直没有碰过数据库,可能是我sql学的不好吧,顺便在这里问问大家,这两个查询语句效率如何?

按照我N年前学的那点数据库知识,我写的这个应该算是笛卡尔积吧,效率估计也好不到哪里去。

很多地方都不细说了。

上面的代码时第一个程序的,还有一个程序,这个程序一个有四个项目,一个名字叫BLL,一个叫DAL,一个叫Models, 还有一个叫web。当时拿到代码时,一看项目感觉还蛮不错的。我在IIS中部署了一下,打开首页时居然提示我超时了,按照我的理解是:客户端发出请求后,在指定的时间内程序没有执行完毕,发送给客户端一个超时的提示。我用vs打开程序运行了一下,用了很长时间把首页给打开了,然后我又监听了下数据库,重新打开了一下首页,截图如下:

捕获2

当时我就震惊了,一把辛酸泪…….

还有一张前台的图片得给大家看看:

11111

其实这也没有什么,当年写asp的时候不也是这样吗?

你仔细观察下第16行,24行以及32行,你会发现哦,他调用的是静态方法哎。这些吧都不算什么,其实吧,整个BLL,DAL这两个项目啊,全部是静态方法,真真的,咱是老实人咱不说假话。其实你像StudentManage这个名字叫的还不错,但是lmzagv,这个东东我想了半天了,没有想出来到底是哪几个拼音的首字母。

我当时真不知道怎么忍住的,全部是静态方法,出了aspx生成的cs文件外的全部类全部是静态的,我靠,这和面向过程有什么区别?

上初中的时候第一次接触电脑,当时就想着好好学习将来做一个电脑高手(黑客之类的),等上了高中发现自己英语水平很菜,于是感觉自己和电脑无缘了,干脆从事重工业方面吧。后来谁知道大学居然读的是网络工程,大学第一个寒假自学的C语言,第一个暑假自学的C#,学习C#的时候还没有学习过数据结构没有学习过面向对象,用了一个月的时间才开始慢慢理解什么叫对象,什么叫类。

学习编程不容易,写代码更得要用心。本来写代码就是一件很有艺术感的事情,别把自己陷入到代码民工的行列中去。百无聊赖的代码没有任何意义,富有艺术感的代码才具备高效率的体制。一个新手可能还没有经过亿万行代码的磨练,可能还没有经历过加班的痛苦,可能还没有能力说三到四。

个人目前还是比较喜欢编程,朝着软件架构师努力……….

posted @ 2011-04-23 23:02  Honker Snow  阅读(3745)  评论(31编辑  收藏  举报