您的位置: 首页 > 业界动态 > 其它信息 > 好代码不值钱
免费:OPhone主题设计大赛宣讲会 回到列表 两个程序员的故事
 好代码不值钱

作者:外刊IT评论 时间: 2011-03-27 文档类型:翻译 来自:外刊IT评论

长久以来我一直主张:好代码是廉价的代码。

当我跟做开发的同事说出这话时,他们的第一反应是一种惊愕,然后是将近一个星期的嘲笑,把它当作一个笑话来讲。当他们走近看我的表情、知道我是认真的时,才收敛一点。

当最初的惊愕消退后,他们会用一些这样的话来反驳:“好代码不廉价,好代码是采用经过数十年计算机科学研究和积累得出的最佳实践设计模式和方法论建立起来的精心制作的程序代码。”
我只好继续解释为什么他们给出的好代码的定义有问题的原因是(这是很多开发人员都忽视了的一个原因):知晓各种设计模式,框架,技术技巧只是事情的一方面,而知道何时该、何时不该应用他们才是更重要的问题。在不知道一种技巧方式如何能对系统的开发有帮助的情况下,这种模式方法极有可能成为一种开发的阻碍,而不是一种有益的帮助。

我还要解释说,我所说的“廉价的代码”是指这些代码只需要很少的人/天数就能开发出来,并不是说是由没有经验的开发人员、在很少的工资报酬下、用6个月封闭式、只有烤白薯和豆腐汤可吃的环境中开发出来的东西。

但是 … 设计模式毕竟是个好东西 … 不是吗?
当然,但它们好在哪里?它们能提供什么好处?

  • 容易维护
  • 产品更健壮
  • 容易理解
  • 易于日后的改进提高
  • 更好的可跟踪性

你会发现所有的这些最终都落到一点上:从长期的角度看,它们能让你更快的做事情。这事情有可能是系统迁移,或是增加一个新功能,不论是什么,通过运用这些方法模式,你会在时间效率上获得实实在在的好处。

这么说,我们观点一致吗?

怎么说呢,让我给你们说个例子,我们看看实现它的几种方式。

系统

用PHP创建一个发邮件的表单,表单里有几个表单项,用邮件把这些数据发送给某个人。除此之外,表单里的内容还要存入MySQL数据库里。

现在,用什么方式实现它们最好?按照传统的说法,采用最好的实践设计模式,你可能会想到这些:

  • MVC
  • N-层设计,包括数据库抽象层
  • 对象关系映射(ORM)
  • 可能用到的框架
  • XML配置和相关模型
  • 等等.

我可以说,这简直是疯了,客户的这些需求完全可以用10几行代码、一个小时里(包括测试时间)完成,而且所有的那些方法模式所希望达到的效果(诸如可读性,可移植性,稳定性)都有了。如果使用上面列出的那些,反而真正的会达不到这个目标,使代码复杂化,难于理解和维护修改。

那现在,假设客户又来了,要求做一些改动,比如要增加一个管理员的界面。这样的话,你就胜利了,你已经实现了很多很有用处的东西;然而这是因为你在第一次开发这个系统时付出了很大的代价。我要向你声明的是,即使我现在把这些简单的代码进行重构,增加一些简单的业务层,也仍然比按你要求的那种过度技术化的初始实现方案要简单的多。

再说了,如果客户要求的只是在表单里增加一个属性,那你的N-层设计方案会让你痛苦不堪,因为你需要改动各个层,包括那些CRUD代码。

SCRUM

我发现Scrum能吸引我的最大一个原因是它能迫使你敏捷开发;它能迫使你在每个Sprint结束的时候把东西都实现、发布。它不会让你做出目前用不到的多余的东西;它不会允许你在实现东西上有任何所谓“正确方式”的奢侈行为。

相反,在你需要的时候你才去重构。当然,这会有一定的风险,因为在实现某些功能上你会花去比当初已经做了一些基础工作的情况下要更长的时间。然而,产品开发就像是一个沙漠中四处漂移的沙丘,你永远不可能准确的知道一个产品在将来会做如何的改动。所有的你花在实现这些很有吸引力的各种模式上的时间很可能会成为一种完全的浪费。

复用性

有些人会指出,我所说的方式产生的代码不具有太多的复用性,不能在新开发的一些其它系统中使用。我对这个问题的回复就是,在根本不知道某些东西是否/如何/在哪将会被复用的情况下去设计一个可复用的东西,这就跟去实现一些你根本用不到的功能或你的应用里跟本用不到的功能一样愚蠢而糟糕。如果你有一个清楚的远见,知道什么地方会复用这些东西,这就不同了,因为你确实有一个内部的业务需求在指导你正确的开发方向。

我的最后的思考 …

  • 了解你的设计模式,知道它们各自的好处(我一直认为,好的程序员和伟大的程序员之间的区别就在于伟大的程序员理解他们的模式);
  • 让你的代码廉价:
    • 当模式能够给你带来好处,而且为你省时时才去使用它们;
    • 如果不是这样就不要使用它们(例如:想想你最近的一次为什么要把系统迁移到一个不同的数据库上?);
    • 当框架能够帮你提高开发速度时才使用它们;
  • 在必要的时候重构,不要做一些超前性的开发;

我想,如果你能按照这些指导原则做事,你会发现开发周期变短、实现的代码更简洁,易于调试,易于维护修改。

原文:http://www.aqee.net/2011/03/16/good-code-is-cheap-code/

本文链接:http://www.blueidea.com/news/other/2011/8367.asp 

出处:外刊IT评论
责任编辑:bluehearts

作者文章
两个程序员的故事
有多少开发人员是超过四十的?
创业该怎样开始
关键字搜索 常规搜索 推荐文档
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
周大福“敬•自然”设计大赛开启
国际体验设计大会7月将在京举行
中国国防科技信息中心标志征集
云计算如何让安全问题可控
云计算是多数企业唯一拥抱互联网的机会
阿里行云
云手机年终巨献,送礼标配299起
阿里巴巴CTO王坚的"云和互联网观"
1499元买真八核 云OS双蛋大促
首届COCO桌面手机主题设计大赛
栏目最新 栏目最新列表
《YoungNWP》第3期发布
奥斯卡大师亚洲巡讲火热报名中
Internet Explorer 9 平台预览版4
国内最大规模web前端技术聚会深圳站
绿色IT--云计算真的环保吗?
妙手回春:网站可用性测试及优化指南
Phpcms 2010模板大赛火热开赛
水晶石技法西安特训营系列报道
插画中国56期插画培训火爆招生中
乔家大院里的女人与Photoshop创意设计

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
网站可用性测试及优化指南
《写给大家看的色彩书1》
《跟我去香港》
众妙之门—网站UI 设计之道
《Flex 4.0 RIA开发宝典》
《赢在设计》
犀利开发—jQuery内核详解与实践
作品集 更多内容

杂⑦杂⑧ Gold NORMANA V2