软件开发中的两种态度

一种态度认为,应该对程序员在软件开发中的行为进行约束(DirectingAttitude)。 持这种态度的人认为大部分的程序员水平都不高(谣传说有50%的人低于平均水平),所以应该对他们所做的事情进行管教约束。要防止他们做一些可能会给他们 正在开发的系统带来危害的事情。通常,这种态度体现在一些系统设计和工具中时,你会发现它们会试图阻止程序员去做某些事情,限制程序员的一些做法,以此避 免他们陷入过于复杂的境况。

另一种态度认为程序员都是可以信赖的专业人员,应该给他们做自己任何想做的事情的自由。秉持这种态度的软件设计 以好用易用为目标,但前提假设是程序员必须知道自己在做什么。所以,遵循这种态度的软件设计里并不会特意阻止程序员错误的使用它们。而你可以不正确的使用 它们,但因为这种态度认为你是知道如何正确的使用它,所以,如果你没有按正确的方式使用,后果自负。

软件开发中的很多争论的挑起都是因为观点方要么持约束态度,要么持纵容态度。这种态度上的差异影响到了对编程语言、设计方案、开发工具、开发过程等很多方面的选择。

下面是这两种对立态度的一些例子:

前不久有一场讨论,是由Joel Spolsky的一篇关于异常(Exceptions)的博客引起的。Joel Spolsky不喜欢异常,因为它很容易引起误用,导致代码混乱不堪(约束态度)。而Bill Caputo指出,异常,如果用的好,可以让你的编程更简单方便(纵容态度)。

一些关于静态/动态类型的争论也体现了这两种态度的差异。喜欢静态类型的人会说静态类型能防止你犯某些错误(约束态度)。而动态类型支持者提出静态类型限制了很多有用的语言功能(纵容态度)。

敏捷开发实践指导是面向人的(纵容态度),而计划驱动的开发方法是在确保即使一个很烂的开发团队也能完成工作(约束态度)。

这些态度未必是持久不变的。在某些情况下人们通常会持约束态度,而另外一些情况会持纵容态度。但我想是有一个底层的因素在起作用,通常是个人性格决定的,是个人性格在这些关于应该如何开发软件的讨论表象下发挥着作用。(我是完全属于纵容类的,也许你没看出来。)

也 许你会认为对一个程序员的行为的任何限制都反映了一种约束态度,可事情并不是这么简单。比如说对内存的管理。也许你会认为这是一种约束的表现:不能相信程 序员有能力正确的对内存进行管理,所以,剥夺他们分配内存的权利。但我却把内存上的这种管理视为一种纵容策略——它拿走了我一些不想为之操心的权利,反而 我可以专注于那些我很关心的事情。Steve通过将“问题”和“困难”进行比较,很好的支持了我的这种观点。

文章转载自 开源中国社区 [http://www.oschina.net]

时间: 2024-11-05 13:51:07

软件开发中的两种态度的相关文章

软件开发-下面这两种情况怎么输出这样的结果?

问题描述 下面这两种情况怎么输出这样的结果? 先继承Cengineer类的话,就输出Cengineer类的name和age.若改为先继承Cleader类的话,就输出Cleader类的name和age,这是什么道理?开发-下面这两种情况怎么输出这样的结果?-软件设计开发输出清单">文档"> 解决方案 先继承,先构造,而cbase::访问的是先构造的对象. 解决方案二: 编译器对于多重继承,也就是有多个可以匹配的方法,优先匹配找到的第一个方法. 这么写是不可靠的,为此,你应该修

讨论四种关键的质量保证实践在软件开发中的重要性

软件开发和工程被视为非常年轻的职业:但是,它们得到了广泛应用,并且正以比以往更快的速度增长.在许多国家,软件行业目前通常被视为经济增长的主要支柱之一.软件公司常常面临着提供高质量软件的许多困难挑战,而他们也在竭尽所能地让客户满意. 软件质量不可或缺 随着软件变成日常生活中不可或缺的一部分,对软件的需求也明显增长.相应地,高软件质量目前被视为是 "必须具备的" 而不是 "应该具备的".让质量保证团队从一开始就参与到项目规划和执行中,这一点至关重要.然而,仍然有一些公司

基于CruiseControl和Rational统一变更管理实现的软件开发中的自动化持续构建

基于CruiseControl和Rational统一变更管理实现的软件开发中的自动化持续构建 简介:本文介绍了持续构建工具 CruiseControl 和 IBM Rational 统一变更管理集成的解决方案.通 过本文中的解决方案,可以尽早的发现和规避代码中存在的风险,遵守统一的流程及时获取可发布的软件 ,确保敏捷开发的速度和质量. 统一变更管理系统中持续集成的必要性 使用 IBM Rational ClearCase 和 IBM Rational ClearQuest 实现的统一变更管理软件

评审技术在高质量软件开发中的应用分析(下)

接评审技术在高质量软件开发中的应用分析(上) 三.评审在高质量软件开发的实际应用 3.1 高质量软件开发项目介绍 高质量软件,如电信软件.金融证券类软件等,有较严格的要求:可用性要求非常高,并且不会因为系统维护和扩展而带来运营中断:支持使用现有管理工具和标准进行远程管理:能够提供更出色的性能以及运营在高可用性集群上的能力,减少任何单点的软硬件失效现象.五个九(99.999%)意味着一个系统的宕机时间一年不超过5分26秒.因此高质量软件项目是一种对可用性.可靠性.稳定性要求非常高的软件项目,要求软

Java开发中的23种设计模式详解(转)

Java开发中的23种设计模式详解(转) 设计模式(Design Patterns)                                   --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合

软件开发中的数据库测试技术

摘要:根据以往软件测试经验,对数据库测试的内容和方法,进行了详细的分析,阐明了数据库测试在软件开发中的重要性. 关键词:数据库测试:性能测试:DataFactory 1.引言 数据库系统的开发在应用软件开发中所占的比重越来越大,随之而来的问题也越来越突出.比如:数据冗余,功能和性能方面存在的问题已经严重影响应用软件的使用.软件测试人员往往重视对软件功能和编码的测试,而忽略对软件性能,特别是数据库访问并发测试.因为,他们固有的思想中认为数据库设计存在问题对系统性能影响不大,或从根本上忽略了数据库在

IOS开发:Unity3D 两种方式播放游戏视频

  Unity支持的播放视频格式有.mov..mpg..mpeg..mp4..avi和.asf.只需将对应的视频文件拖拽入Project视图即可,它会自动生成对应的MovieTexture对象.如下图所示,MOMO将default_video.mp4拖拽入Project视图中,如果视频中含有音频的话会对应生成audio文件,因为我的视频没有音频所以没有生成 audio文件.接着在Hierarchy视图中创建一个Plane对象视频将在它之上播放,Directional light世界定向光用于照亮

产品经理在软件开发中起到了十分重要的作用

提到产品经理的职责,我们首先想到的就是其要对整个产品周期负责,从市场调查.产品规划.设计.项目管理.产品上线.上线推广.产品改版升级等产品的全过程管理,可以说产品经理在软件开发中起到了十分重要的作用. 近日,专为企业挖掘潜在销售的大数据分析公司Infer的CEO兼创始人Vik Singh根据自身所闻和经历,就公司喜欢招募的产品经理.如何招到优秀的产品经理以及怎样成为优秀的产品经理撰文.Infer公司用户包括Tableau.SurveyMonkey.Zendesk.New Relic.AdRoll

Crystal Report在.net中的两种显示方式

原文:Crystal Report在.net中的两种显示方式 Crystal Report在.net中的两种显示方式 编写人:CC阿爸   2014-7-29   近来在完成深圳一公司的项目,对方对各方面要求相当严格,一不满意就拒绝签收,为了对修正水晶报表显示及导出的一些小问题,无赖之下,仔细了解一下水晶报表的操作方法,逼苦我们这些苦逼的程序,虽说在以前的项目中,也常使用crystal report 来制作报表.并且针对web与winform 都各有不同的地方.   但总的来讲:显示水晶报表目前