一种态度认为程序员在软件开发中的行为应该受到约束(DirectingAttitude)。持有这种态度的人认为,大多数程序员都不够好(传言说50%的人低于平均水平),他们应该对自己的工作有纪律。防止他们做可能损害他们正在开发的系统的事情。通常,当这种态度体现在一些系统设计和工具上时,你会发现,它们会试图阻止程序员做某些事情,限制一些程序员可以做的事情,以防止他们陷入一种他们被束缚的境地。太复杂。另一种态度是,程序员是可靠的专业人士,应该给予他们做任何想做的事情的自由。以这种态度设计的软件旨在易于使用,但前提是程序员必须知道自己在做什么。因此,遵循这种态度的软件设计并不会刻意阻止程序员错误地使用它们。你可以不正确地使用它们,但由于你知道如何正确使用它们的态度,如果你没有正确使用它们,你将自行承担风险。软件开发中的许多争论都是由限制或宽容的观点引发的。这种态度上的差异会影响编程语言的选择、设计方案、开发工具、开发流程等诸多方面。以下是这两种对立态度的一些示例:不久前,JoelSpolsky的博客引发了一场关于异常的讨论。JoelSpolsky不喜欢异常,因为它们很容易导致误用,导致代码混乱(约束态度)。而BillCaputo指出,异常如果使用得当,可以让你的编程变得更简单、更方便(放纵的态度)。一些关于静态/动态类型的争论也显示了这两种态度的不同。喜欢静态类型的人会说,静态类型可以防止你犯某些错误(约束态度)。动态类型的支持者认为静态类型限制了许多有用的语言特性(宽容的态度)。敏捷开发实践指导是以人为本(宽容的态度),而计划驱动的开发方法是要确保即使是一个糟糕的开发团队也能完成工作(约束的态度)。这些态度不一定是永久性的。在某些情况下,人们通常是克制的,而在另一些情况下,他们是宽容的。但我认为有一个潜在的因素在起作用,通常是个人因素,它在这些关于应该如何开发软件的讨论的表面下发挥作用。(我完全属于宽容的范畴,可能你没看出来。)你可能会认为对程序员的行为的任何限制都体现了一种克制的态度,其实并没有那么简单。例如,内存管理。也许你会认为这是一种约束的表现:不能信任程序员有正确管理内存的能力,因此剥夺了他们分配内存的权利。但我把这种内存管理看作是一种纵容策略——它剥夺了一些我不想操心的权利,让我可以专注于我关心的事情。史蒂夫通过比较“问题”和“困难”很好地支持了我的观点。英文原文:SoftwareDevelopmentAttitude翻译链接:http://www.vaikan.com/softwaredevelopmentattitude/
