最新更新的文章列表
2008-03-04 让人看无语的程序代码
2008-03-04 22:43:07.0
今天再写写工作上的一些经历。牢骚应该是发完了,做人不能永远活在回忆里面,生活还是要过,工作还是要忙。
前段时间,我看了一下以前同事写的一些程序代码,弄得我真是哭笑不得。
我们用.net开发的一套系统,主要分为三层,WEB层、BLL层和DAL层。下面就讲一些,作为一个很基本的程序员,也会看出问题的地方。
我们在WEB层开发了一个分页的控件,这个控件在被我修改之前是只能在页面代码上写SQL语句向数据库取数的。某位同事在使用这个控件时,做了一些超搞笑的东西。他也明白这个控件只能在页面文件上写语句,所以,查询时,他根据页面收集来的数据构造了一个字符串。这个字符串是怎么样的呢?就是类似于“where numcode = '000101' and iswas = 0”等语句。高手的地方就在下面来表现了,他将该字符串作为参数,传到BLL层,然后再从BLL层传到DAL层。之后用return string.Format("select * from sex {0}", sWhere)把处理过的字符串再返回给BLL层,之后又从BLL层传送给WEB层,之后在WEB使用企业库连接数据库取数……无语!不仅破坏了3层的架构,而且将一个字符串传入一个方法,然后从这个方法里面又返回一个字符串,又何必要呢?为什么不自己处理,而要写一个方法来处理那么简单的东西?为了通用?我完全看不到可以通用的地方,反而要加一个字段或者多关联一个表,需要改好几个地方……无语……
还有一点,有些代码的地方,传送多个参数,他们竟然使用了某种符号作为分隔符的字符串来传送……例如,返回一个物品的数据,用“000101,手套,30双/箱,XXX公司,0,1,1”这样的字符串来传输。唉,郁闷啊,你不会用XML就用字符串数组不就解决了吗?如果某天,刚好某个物品的规格里面或者某家公司的名称里面就是含有一个“,”,这程序不就完蛋了……开发初期如果不注意这些问题,真的会隐藏起一个很大的炸弹,可能调试或者测试时都发现不了问题,但说不定以后就有一天就出大问题了。可能有人说,使用微软写给我们的Request["txtDepId"]之类的方法获取页面控件的值时,返回的字符串也是用“,”做分隔符的。但我会说,我们这点上不能学微软,微软提供给我们的这个方法是面向程序员的,而我们写的程序是面向用户的。你觉得不好用或者有其他问题可以不用Request,但我们的用户不能不用我们的方法,我们也不能规定他们的厂家名称里面不能含有“,”等字符……
今天和几个领导出去了吃饭,也没吃什么特别的东东,不过吃饭过程中,听到一些内幕,例如某某同事工作不行,经常被医院投诉什么什么的,是不是要做一下处理之类的。有的时候,一场同事,我也会帮说说话。唉,可是老板开公司就是为了赚钱,我能帮得上什么忙?
文章评论
[以下网友留言只代表其个人观点,不代表中华网的观点或立场]