软件开发第一宗罪:欲望(过度设计)
现代编程语言趋向于不断增加更新的功能让其臻于成熟。程序员们一层一层地往上堆叠抽象的代码,用新设计的关键字和结构来增加代码的可读性和可重用性——只要你肯花时间去学习如何正确地使用它们。
与此同时,编程的原则在这些年里有所改变。今天,你可以饱览到成千上万的设计方案和模式,而且每几个月就会有人想出新的开发方案。此外,开发人员总是信誓旦旦地宣称这些开发方案会让你成为程序员中们眼中的佼佼者。
但是纸上谈兵往往不见得在实际操作中奏效,这个道理很简单,打个比方来说就是你可以去做某些事情但是并不意味着你应该去这么做。就像编程大师Joel Spolsky所说的,那些盲目迷恋自己工具的程序员们都不可避免地忽略了这一点,甚至于最简单的项目也可能葬送进开发的地狱。所以,必须抵制这种不可取的冲动,那么首先要做到的就是坚持你最初的设计方案。
软件开发第二宗罪:暴食(不进行重构)
没有比开发软件更令人可喜的事情了。一旦你有一个正在开发的产品,就会很容易受到开始筹划下一次迭代的引诱。新产品应该具备什么样的新特征呢?我们在第一轮实施的时候没有注意到哪些问题?
人们总是很容易忘记代码很少能在运行的时候保持最佳状态。然后,当新功能不断地累积直至几个轮回的发展之后,程序员们往往会倾向于复合过去发生的错误,这样就导致了一个臃肿、脆弱的代码基础,难以进行有效地维持。
所以,在添加新功能之前尽量克制自己,对现有代码的质量和可维护性进行评估。对于每一次新一轮的开发,都必须将代码重构列入预算范围之内。用户可能只会关心每一个版本的新功能,但是从长远来看,他们一定会更希望你保持产品的精炼性。
软件开发第三宗罪:贪婪(团队之间的竞争)
对于财富和权利的过度欲望——要不然如何解释程序员与自己同僚之间竞争的动机?当一个团队得到了其他团队泄露出来的电子邮件,就开始进行闭门会议和开发。接下来的事情你应该知道,这个团队编写了一个代码库,它已经超越了其他团队已经完成的编码库功能的一半以上。
开发团队很少会出于 恶意来进行重复的工作,但是他们往往缺乏明确的目标和责任感。得到的结果则是多余、无力的代码库,更不要说预算的损失和之前付之一炬的努力。经营开发项目 的首要任务之一应该是了解其他团队正在做什么,然后所有的团队都朝着一个共同的目标去努力。分享与共享应该成为开发人员的座右铭。
软件开发第四宗罪:懒惰(不验证输入)
基本编程容易犯的错误清单很长,但是没有验证输入这样的错误非常低级以至于不能不从别的角度来思考犯这类错误的原因。这个看似低级的错误仍旧出现在许多经验丰富的程序员编写的代码中,这一点十分令人费解。然而,很多普通的安全漏洞,从缓冲区泛滥成SQL注入攻击,却可以直接追溯到用户输入的代码没有进行正确格式验证这一点。
现代编程语言提供了许多工具来帮助程序员来避免类似情况的发生,但是他们必须对其使用得当。切记,一个JavaScript的Web表单验证输入可能很容易被在浏览器中禁用的JavaScript回避,或者干脆不使用浏览器进行访问。输入验证应该是你应用程序的核心部分,而不是在用户界面上煞费苦心。如果做不到这一点只能归咎于程序员的懒惰了。
程序开发第五宗罪:愤怒(不对你的代码进行注释)
对于你的同僚而言,有什么行为能比不对你的代码做出任何注释这种行为更具敌意?我自己写的我当然知道:精心编写的代码是它本身最好的文档资料。那么,你知道吗,其他人能看懂吗?其实这些你自认为值得骄傲的代码可能并非天衣无缝。
程序员们自己很可能很快就会遗忘他们现在所写的代码,但是这些代码将在他们离开以后继续存在很长一段时间。对于取代他们的程序员而言,要想搞清楚每一个代码真正代表什么是一件吃力不讨好的工作。鉴于此,在你编写程序的时候,行行好吧,多给他们留下一些暗示。
但是请记住,难以理 解的注释或者注释过多都与不做任何注释的性质同样恶劣。类似于“这已经损坏”或者“不要碰这个”的注释对于任何人都没有什么帮助。也不要做多余的评论来解 释简单的操作,比如变量初始化。代码就是其本身最好的文件材料,所以出现的注释评论应该尽可能解释原因和本质。
软件开发第六宗罪:嫉妒(不使用版本控制)
也许你有理由对于你 的项目不推行版本控制。也许一开始你的项目很小。但是今天,功能强大并且高效的版本控制系统已经可以免费进行使用。服务供应商甚至可以对分布式项目提供价 格低廉的托管代码服务。所以没有理由不在一开始就使用一个代码库,即便是再小的项目也是如此——除非,你无法容忍除了你以外的任何人实施代码变化。
软件开发第七宗罪:骄傲(不进行单元测试)
你往往会认为自己的编程工作相当出色,但是你又如何知道自己做的到底是否唯美无缺呢?有什么指标来对你的工作好坏进行衡量吗?
除非你已经在特定的测试环境下对你的代码进行了验证和测试,否则你就不能证明它能像广告中说的那样完美无瑕。但是太多的开发人员并不对他们的代码进行单元测试。他们声称花时间进行测试就没有时间推行新功能了。事实上,一些开发人员甚至不将质量测试写入他们项目的预算范围。
那么我又能说什么呢?只能期待他们在品尝失败的滋味之前将这股傲气抛之脑后。一旦存在缺陷的代码抵达客户手中的时候,再撤销它们就未免太迟了。在进行代码传输之前,进行越多的单元测试,就能在今后越多地避免不必要的损失。
原文标题: The 7 deadly sins of software development
关于七宗罪
贪婪,失控的欲望,是七宗罪中的重点。其他的罪恶只是无理欲望的补充。
色欲:肉体的欲望,过度贪求身体上的快乐。
饕餮:贪食的欲望,浪费食物或者过度放纵食欲,过分贪图逸乐皆为饕餮一罪。
妒忌:财产的欲望,因对方拥有的资产比自己多而心怀怨恨(此处的资产并非限定于财产,更多的指才能、才华)
懒惰:逃避的欲望,懒惰及浪费所造成的损失为懒惰一罪的产物。
傲慢:卓越的欲望,过分自信导致的自我迷恋,以及过分渴求他人的关注为傲慢。
暴怒:复仇的欲望,源于心底的暴躁,因憎恨产生的不适当邪恶念头。
七宗罪在拉丁语中为: “superbia”,“invidia”,“ira”,“accidia”,“avaritia”,“gula” and “luxuria”
分享到:
相关推荐
七宗罪剧情解析.doc
企业在开发云应用时,应将云视为一个新的平台,实施严格的安全审计,确保身份验证、访问控制和加密等核心安全原则得到遵循。 第六,“没有正确运用云计算”是指黑客可能比IT专业人员更快速地掌握新的攻击技术,利用...
### Java学习七宗罪 在IT领域,尤其是对于初学者来说,Java无疑是一门非常重要的编程语言。然而,在学习过程中,不少学员会遇到各种各样的问题,这些问题往往会导致学习效率低下,甚至失去继续深入的动力。《Java...
七宗罪影评—人性罪恶的剖析.doc
【企业文化七宗罪】指的是国内企业在构建企业文化过程中常见的七个误区,这些误区往往阻碍了企业文化的健康发展,导致企业文化的空洞化、表面化。以下是这七个误区的详细解析: 1. 只文不化:企业中充斥着大量的...
这份名为"入门到精通02-五招破解七宗罪"的课件,主要针对设计中的七个常见问题提出了有效的解决策略。这七个问题被称为"七宗罪",包括糟糕的配色、错误的字体、任性的图片、无关的动画、混乱的逻辑、自我的陶醉和...
七宗罪剧情解析精选.doc
七宗罪电影观后感精选.doc
七宗罪电影观后感参考.doc
旅游参团遇“七宗罪”PPT.pptx
每次打开新标签时都会获得《七宗罪》不同的高清壁纸。这个新主题除此以外还包括天气,时间,记事本,时钟等其他你想要的强大功能。 七宗罪(拉丁语:septem peccata mortalia;英语:seven deadly sins),天主教称...
电影《七宗罪》的宗教链接归纳.pdf
认知战认知作战:认知战战术执行的七宗罪 关键词:认知战, 认知作战, 价值观灌输, 认知渗透年轻化, 私欲驱动, 战略认知缺失, 冗长说教, 创新过度, 战术执行目的遗忘,认知作战,新质生产力,人类命运共同体,认知战,...
【产品经理SAAS实施的“七宗罪”】 在IT行业中,SaaS(Software as a Service)已经成为企业数字化转型的重要工具,产品经理在推动SaaS产品实施过程中可能会遇到一系列问题,这些问题可归纳为“七宗罪”。以下是对...
相对应的,工作中也有需要避免的七宗罪,如欺诈、懒惰、贪婪、嫉妒、骄傲、愤怒和暴食。这些负面特质会影响团队协作、降低工作效率,甚至可能导致个人或组织的失败。例如,欺诈会破坏信任,懒惰阻碍进步,贪婪可能...
Component化允许产品灵活适应不同业务场景,同时保持高效开发和维护。 四、自下而上的实施策略 传统观点认为SAAS实施主要取决于产品和领导力,但实际操作中,员工的满意度同样重要。通过提高员工对系统的接受度和...
【雅思阅读七宗罪详解】 在备考雅思阅读的过程中,考生们常常会遇到一系列困扰,这些难题被称为“雅思阅读七宗罪”。以下是对这七个问题的深入解析和应对策略。 一、单词不认识 雅思阅读测试的核心词汇量大约为...
资本市场的四个公理和财务报告的七宗罪财.docx
旅游参团遇“七宗罪”过半消费者只在受损金额较大情况下才会选择维权。旅游参团消费者维权方式方法ppt模板。