软件开发中最流行的错误观点有哪些?
fmms 13年前
<p> 英文原文:<a href="/misc/goto?guid=4958338606278583088">What are some popular myths in software development?</a></p> <p> 本文译自 Quora 的同名问答贴:软件开发中最流行的错误观点有哪些? <a href="/misc/goto?guid=4958338607201597008" rel="nofollow" target="_blank">Lee Semel</a> 给出的答复得票数最高,他列出了一些流行的错误观念:</p> <p> ● 瀑布模型是在实施软件之前最行之有效的描述系统的模型,它能帮助软件实施时循序渐进,而非循环反复。人们一直当它是一个好的实施方案,而一篇论文中恰好将它列为很差的实施方案,因此引起广泛讨论。<a href="/misc/goto?guid=4958338608005370465">http://en.wikipedia.org/wiki/Waterfall_model</a></p> <p> ● 用户知道他们想要什么,他们也能够将需求阐述清楚。</p> <p> ● 有某种语言、技术或是流行方法将会是杀手锏,能够取代你正在使用的方法,解决你的问题。</p> <p> ● <a title="人月神话" href="http://www.amazon.cn/gp/product/B0011C2P7W/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=vastwork-23&linkCode=as2&camp=536&creative=3200&creativeASIN=B0011C2P7W" rel="nofollow" target="_blank">人月神话</a>里说,在一个开发团队中增加人手会让效率成线性增长。<a href="/misc/goto?guid=4958338609528942252">http://en.wikipedia.org/wiki/The_Mythical_Man-Month</a></p> <p style="text-align:center;"><a title="The Mythical Man-Month 人月神话" rel="lightbox[17470]"><img title="The Mythical Man-Month 人月神话" alt="软件开发中最流行的错误观点有哪些?" src="https://simg.open-open.com/show/59839148a3021622bcc7da9028658339.jpg" width="408" height="580" /></a></p> <p> ● 对规范文档的认同意味着对实际功能的认同,甚至规范文档本身写的很模糊或是有出入也要遵守规范文档。<a href="/misc/goto?guid=4958338610324759550">http://gettingreal.37signals.com/ch11_Theres_Nothing_Functional_about_a_Functional_Spec.php</a></p> <p> ● 唯有一种方法能将开发实施得最好,程序员的自由被所用的语言严格束缚。</p> <p> ● 有多于一种方法来完成一个任务,程序员有完全的自由。</p> <p> ● 设计样式是通用的,而不像某种编程语言的表达式一样有诸多限制。</p> <p> ● 最好的技术方法就是最好的方法。</p> <p> ● 你可以用正则表达式来解析 HTML:<a href="/misc/goto?guid=4958338611127790526">http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags</a></p> <p> ● 不需要理会市场反应,应该让市场来适应软件。</p> <p> ● 软件可以被精确估计。</p> <p> ● 软件开发可以被当作固定价格、固定限期的项目出售。</p> <p> ● 对象是对现实世界最好的描述。对象最好的应用方面便是描述真实世界中的实体。</p> <p> ● 数据应该隐藏在对象后面,对象应提供操作数据的需要的所有方法。</p> <p> ● JavaScript 和 Java 有关系。</p> <p> ● 逻辑应该和显示完全分离开。</p> <p> ● 软件开发最重要的是需要好的数学能力,最好的学习方法是学习理论的计算机科学,数学能力强的也能写出好的软件。解决逻辑难题的能力是判断一个软件工程师能力在最有效方法。</p> <p> ● 软件就是表面上看到的,设计后面发生了什么不需要引起我们的注意,尤其对于那些非技术出身的经理和客户来说更是这样。</p> <p> ● 编写软件对于缺乏人际沟通能力的人来说是一个好职业。</p> <p> ● 软件可以有效的用其他媒介来模拟和设计,例如 wireframes 或 Photoshop comps,因为用实际的代码来设计(HTML 和 CSS)太难,太贵了。</p> <p> ● 设计师们不能也不需要学习写代码,应该尽量远离真实的代码。</p> <p> ● 设计仅仅是表面上的装饰,其重要性没有好的开发重要。</p> <p> ● 软件可以基于一系列的抽象的基础之上可靠的构建,你仅需要理解最上的抽象层,而不需要了解背后的实现细节。参看 Joel Spolsky 关于抽象漏洞定律的讨论:<a href="/misc/goto?guid=4958338611934410234">http://www.joelonsoftware.com/articles/LeakyAbstractions.html</a></p> <p> ● 当你最终发布了新的应用或是网站,就意味着一切结束了。</p> <p> 原文: <a href="/misc/goto?guid=4958318299370965824" rel="nofollow" target="_blank">Quora</a> 编译:<a href="/misc/goto?guid=4958338613453938753" target="_blank">伯乐</a>在线 – <a href="/misc/goto?guid=4958338614255278290" target="_blank">唐小娟</a></p>