两年程序员的感悟,SQL才是重点,JAVA无所谓。
我不是喷子,这只是真实的感受,其中也包含着很多无奈。。。
JAVA是我第一门掌握的语言,可以说是我在程序设计语言上的母语。也正是如此,我的设计思路从一开始就倾向于OO。已经习惯于把业务场景抽象为object之间的交互,一直以来数据库仅被我作为持久化数据的解决方案之一来看待(其实简单应用的话,格式合理的文件作为持久化也未尝不可)。换句话讲,总是先有应用程序对象模型,再有配套的持久化方案。
然而上班以后才发现,现实完全不需要这样。业务被化解为神圣的表,实体表,引用表,链接表。整个系统非常灵活,所有的程序配置也全部在表里,还有专门的表来记录表和表之间的join关系和一些预先写好的sql子句。真是表中有程序,程序在表中。
JAVA需要做什么呢?对,拼接SQL。代码再恶心也没关系,而且只要面向过程,完全不必担心有性能问题,要知道应用程序的响应时间是纳秒级的,而数据库的相应时间是毫秒级的。万一很慢,那肯定只是你SQL没写好。什么灵活性更是没意义,客户都是外行。只要找个留学归来,擅长沟通,像模像样的客服,耐心给他讲道理:“看似简单的修改,其实我们要增加表,增加字段。。。”,首付都给了,为那么个小修改的成本可能另起炉灶吗?反过来讲,就算你OO厉害,别人程序一改一周,你的程序半天搞定,也只是给项目经理认为是你的改动本身简单,别人的复杂。再退一万步讲,就算客户丢了,那也是客服的事情,销售或者财务出身的老板完全不会把这些怪罪到你头上。
JAVA说完了,回头看看SQL。数据越来越多,系统越来越慢。起初毫秒级响应的操作,慢慢变成秒级,到了分钟级客户就会来抱怨了。这个时候如果你SQL不错就可以自告奋勇去调优,很容易就能发现很多初级错误。简单改改,再优化下索引,效果立竿见影。立刻领导对你赞赏有加,认为这就是技术的力量。。。
我真的很无奈,以上讲的也多少有些极端,其实领导也曾称赞我的OO思想很好,代码简洁、明晰。
只是有时我从一个旁观者的角度来看这个问题。同样能满足一个需求的前提下,两种实现的差距果真有我们设想的这么大吗?
[该贴被scf37于2009-05-29 14:18修改过]