程序员的懒惰与勤奋(绝对原创)

原创 2006年06月12日 10:28:00
    记得在深圳做诉讼系统的时候,采用Delphi开发,有一位同事做立案模块,这个模块里各种立案审批表很多,比如民事案件、刑事案件、商事(经济)案件、行政案件、国赔等都需要不同的审批表,这位同事在时间很紧急的情况下,Ctrl+C、Ctrl+V再修改完成了这些审批表的制作,但是他也察觉了问题:
    (1)如果再添加新的审批表,可能还需要重复上面的操作,费时费力而且容易出错,查错困难。
    (2)由于业务的变更,可能需要修改上面这些审批表的几个或者所有的相同信息,可能代码都一样。
    后来,在项目开发完毕,我对这部分代码进行了重构(由于某些原因该模块交给我进行修改):
    (1)抽取审批表的头:都具有案由、当事人(原告和被告)等。
    (2)抽取审批表的尾:都具有庭长审批意见、院长审批意见等。
    (3)把诸如费用计算等其他的部分审批表相同的部分也进行抽取
    (4)对不同案件不同的部分单独做成一个Form,然后把上述几个部分按需进行拼装。
    改过之后,系统的稳定性得到了很大的提高,以后业务变更只需要修改一个地方即可。但是这些方法不是perfect,对相同部分的抽取对业务的熟悉要求很高,对抽取粒度要控制好,修改的时候需要考虑很周到,另外业务变更可能对需要把原来相同的部分移植到不同的部分,修改变得更费事些,当然这种情况较少出现。
   值得一提的是,在上面的数据存储过程中,我采取了一个简单的持久化方案:把输入控件的命名按照表名_字段名这种进行办法进行命名(前提字段名不能有_,不过我们设计字段名都是采用单词首字母大写),然后遍历控件再根据数据字典自动组装SQL语句,采用参数的办法插入和更新数据库,对插入的先后顺序我们根据在数据字典设置的外键来确定。这样简化了不少写SQL语句的时间,而且也移植到了其他的模块开发。很遗憾,当时没有考虑到用XML(象现在的Hibernate)进行持久化。
    说了这么多,似乎和程序员的懒惰和勤奋无关,如果你这样认为,那么可以说你错了!我认为:程序员必须具备懒惰和勤奋这两种素质。
    懒惰是人的天性,谁都想在家看看球赛、玩玩游戏,对吧??!!不过作为程序员,你需要懒惰的巧妙!Ctrl+C、Ctrl+V的不辞辛苦不一定是不可取的,你需要最大限度的复用,那么怎么样实现最大限度的复用呢?我想从下面几个方面入手:
    (1)代码复用:这是软件工程里已经提到的,在此不作过多赘述。简单一点的说:如果超过n行(在不同人的眼中这个数字可能不一样)代码相同,你可能就需要考虑把这段相同的代码抽取出来作为一个函数或者类。所以,在公司成长的过程中,应该积累一些公有函数库、公有组件等。在我上面提到的一个案例中,我就较好地进行了抽取公有的业务,将业务分拆为几个不同的模块,然后拼装。另外,在我的一个.Net项目中,我采用了通用查询,即根据查询视图,根据视图配置表,自动生成查询条件,再根据查询条件生成查询结果,并且提供导入到Excel和XML功能,在这个项目中复杂的查询都是通过该通用查询来实现的,较好的实现了代码复用,而且界面一致,大大缩短了开发时间。
    (2)模型复用:这里最典型的要数MDA(模型驱动架构),现在流行的建模工具都或多或少的对它进行了支持,比如最新的Rose、PowerDesigner都提供类图直接转换为Java、C++、C#等语言的实体类;都提供概念模型转换为物理模型。Borland Together还提供类图和实体类之间的相互转换。
    (3)框架复用:说起框架,这里有一个很有趣的事:在我研究生开题答辩的时候,有一位老师硬说框架和体系架构是一码事,我给他解释了半天。这里简要的说明以下它们的区别:框架包括:.Net、Spring、Hibernate、Struts、WebWork都是框架,他们大多从纯技术的角度出发的,都提供丰富的API,都让编程更加容易更直观,象Spring、Struts、WebWork都提供了对MVC设计模式的实现。而体系架构是从整个系统的角度上出发的,比如B/S、SOA等都是一种体系架构。其实细微的差别只有靠你慢慢体会了,我说的不一定全面,也不一定正确。
    (4)资源复用:提到资源复用我们不得不提两个很时髦的字眼:设计模式和池化。比如说前者的单例模式和后者的数据库连接池都提高了资源利用率。当然资源复用不仅包括这些,设计模式不仅使得熟练设计者的设计经验可以被初学者和其他设计者掌握,而且为软件重构提供了目标,提高了代码复用。
    (5)构件复用:构件最早提到的是在美国,但最早转化为产品是在中国,上海普元信息系统有限公司就是第一个吃螃蟹的人,该公司的EOS平台中把构件分为:基础计算构件、基础业务构件、基础应用构件、工作流构件、页面构件,为构件复用开拓了实际应用的篇章。但是,该平台想流行起来仍面临着很多困难:(1)其他公司不愿捆绑在这辆战车上;(2)对于程序员,不愿被束缚住手脚,同时学习起来仍有一定的难度。
    (6)模板复用:比如Java中Velocity和PHP中的Smarty,这里举一个我本人最近开发的一个框架:原理是利用模板、XML等技术自动生成和实体表相关的一系列文件:Struts Action文件,Struts ActionForm文件(如果是该页面不牵涉到其他的表,将ActionForm文件和Hibernate POJO类文件合在一起)、Hibernate POJO类文件、Hibernate映射文件、实体详细信息JSP页面、实体列表JSP页面,并实现Hibernate、Struts配置文件的自动生成。这里面大量使用了模板,包括实体详细信息JSP页面的使用到的控件模板,大大提高了框架的适用性。
    兄弟,今天你复用了吗?:)
    同时,作为程序员,你不能一味的懒惰,还需要你的勤奋,需要你不断地学习新知识,更新你的知识库,不要半年不更新一次哦!不仅如此,还需要你懒惰的巧妙哦!

相关文章推荐

程序员小故事-战术上的勤奋和战略上的懒惰

几年的工作下来,大大小小的项目也接触过几个,但是突然对自己的产生了怀疑。我的应该怎样来规划我的生活,我不希望简单的工作就是我的事业全部,我想去接触更加丰富的世界拓展更加广阔的视野。就如我这样的程序员在...
  • Scalzdp
  • Scalzdp
  • 2014年08月27日 10:32
  • 1933

被其他程序员骂懒惰!不够勤奋!(程序员的一天)

转载于:点击打开链接 这样算懒惰的程序员吗? 1)7:20醒 赖床到7:40起来刷牙洗脸。 2)8:00左右,急忙跑下楼。 路上路边摊买个肉包子1元一个,边走边吃,连奔带跑跑去车站。...

被其他程序员骂懒惰!不够勤奋!(程序员的一天)

这样算懒惰的程序员吗? 1)7:20醒 赖床到7:40起来刷牙洗脸。 2)8:00左右,急忙跑下楼。 路上路边摊买个肉包子1元一个,边走边吃,连奔带跑跑去车站。 老妈打来电话,正好在...
  • t80t90s
  • t80t90s
  • 2014年12月16日 14:17
  • 1458

勤奋是懒惰的元凶

勤奋是懒惰的元凶经过一翻思想斗争之后,我还是选择了辞职。公司没日没夜的加班让我的身体一度招架不住。 半年来这份工作占据了我几乎所有的时间。每天一睁眼洗漱完,吃了早餐就开始工作。下班回到家常常是晚上十...

程序员不懒惰!2017,软考为你升职加薪!

软考是什么 引用 软考 指的是国家系统集成项目管理工程师、信息系统项目管理师等专业技术资格/水平的考试项目。 软考是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试,既属于国家职业资...

随记--做一个“懒惰”的程序员

当时由于各种外部接口的不稳定,经常发生各种各样的网络异常,后来总结出一些统计脚本,来统计这些异常,每天都要出一个程序员,对几个机器上的日志进行统计,然后把统计结果进行汇总记录,出报表,这是发生在程序员...

高效程序员的特征:聪明,懒惰

转载:http://www.oschina.net/news/52498/productive-developers-smart-lazy 这里我使用了聪明,懒惰和程序员这几个词。我说的这几个词...

做一个懒惰的程序员

本文写给所有可爱的程序员,(我)你们都是一群可爱的,用双手建造世界的思想家。从今天起,我要做一个懒惰的程序员。第一 拒绝鼠标从今天,我将拒绝鼠标。鼠标,是鼠标手的根源,无数的程序员都被鼠标手所困扰,这...

关于JAVA中事件分发和监听机制实现的代码实例-绝对原创实用

转载:http://blog.csdn.net/5iasp/article/details/37054171 谢谢博主 ==================================...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:程序员的懒惰与勤奋(绝对原创)
举报原因:
原因补充:

(最多只允许输入30个字)