这是关于主要是由于答案SQL的问题。UDF和子查询是故意省略,因为的性能。我不包括可靠性不应被认为是理所当然的,但是代码,有工作。

不能永远是第一位?因此,许多答复提供了与表现作为主要的优先事项。我的用户似乎更关心如何快速的代码可以修改。这样一份报告需要15秒钟而不是12个运行。他们可以生活,只要我不是找借口不提供解决方案。

显然,如果在15秒变成了15分钟,有一个问题,但用户要功能。他们想要的应用程序,以适应业务规则的修改和加强请求。我想要能够看到,在代码6个月,从现在起和能够做出改变,在一个容易识别的斑和不追捕所有那些地方soneone抄和粘贴的代码,因为他们认为调的另一个功能或子程序或Udf会妨碍性能。

所有这就是说,我会顺序:维护性(变化是一个事实的生活.), 性能(没有人喜欢看的沙漏。), 重复使用性(难确定是什么代码应该再次使用。).

有帮助吗?

解决方案

<强> 1。可维护性:如果代码是不可读也没用,不管它是多么快。而且它绝对不会被重新使用。

<强> 2。可重用性:不是所有的码是可重复使用的,但它的很多是。如果可以的话,通过各种手段使你的代码更简单。最简单的是分而治之。例如,创建你将使用一遍又一遍,并在简单的组件。 UI部件是最常见的。但它与事业一样。同时,建立一个结构/框架,你的代码的帮助。错误校验码等

第3。性能:通常大多数代码是高性能足够了。如果没有,使用代码分析器。更多的时候不是瓶颈将远远超过你可以在任可读性或再使用性的成本作出任何小的代码优化。

其他提示

我认为你错过了一个从清单:可靠性;

所以我以为

  • 可靠性和准确性
  • 维护性
  • 重复使用性
  • 性能

不管如何快速的代码时,它是不正确的,首先是代码是可靠的。

性能是在底部的名单。从来没有优化过早,并且仅提高性能的时候性能是一个问题。

我工作了关于实时系统,包括飞行模拟,并且即使在这种环境性能的考虑,但不是一个压倒一切的主要问题 1.

我要说,在我的经验,我们只有优化少于1%的代码,我已经写入。


1 有时候东西是不是足够快,以及当然的表现是考虑到当设计和编码的,它只是不在该清单。

在吸盘答案是,当然, “这取决于”。

在的业务线的应用程序的情况下的响应时间的活动涉及需要是成反比与它的运行频率。如果它是用户需要访问4或5倍的功能一个小时那不如比拉是月末报告迅捷。

我认为,在一定程度上,你已经回答了你自己的问题,并为它提供了一些非常有效的原因。你已经错过了只有一个是可靠性 - 而这正是THA NASA比喻进来如果你正在为美国航空航天局编写代码,或金融机构,它有血性,以及最好是坚固和可靠...和。我认为这会是第一位的。

我是美国航空航天局承包商和主要用于管理目的,如运行报告和跟踪项目的开发和维护软件。

我已经在那里工作了一年半,我相信他们的主要关注点是可维护性,以及如何快速可以得到新的功能或模块进行部署。

吉尼斯一样的问题,只要该软件并不需要很长时间,一个特殊的金额入账,他们似乎并不介意。

他们似乎有其它主要关注的是可用性。该应用程序必须是容易和直截了当使用。

总之,可维护性,可用性,然后表现似乎NASA的内部报告和追踪工具主要关注的问题。

你必须要能够重新排列这些优先事项,根据该项目,并将很难的事情可以改变的行为迅速开关项目之间或甚至不同章节的代码。我工作在三个应用程序非常不同的配置文件。

  1. 一是实时间和很多的工作去确保其性能可预测的,(不一定减轻快的),但是改变并不是一个主要问题,它只显着变化,当IETF更改/废弃RFC和存在的小迹象。(这就是说,我非常自豪的水平可维护性).

    • 另一个程序有时采取16hrs过程1天的数据。不必说绝对性能迅速成为首要优先事项。但是,即使在这个程序的强调性变化很大,从'不重要'的每批码通过每客户代码,每一任务代码,每文件代码,每录码,每场码'极为重要'的每个字节的代码。

    • 最终的应用程序含有大量的业务逻辑上,业绩是从来没有一个问题,可维护性和灵活性是关键的是,这个程序的好处最大的所有时尚的方法,但是,当我刚刚花了几周或几个月的重构性能很难编写"string1+string2+string3+string4"即使是最可读性和效能是无关紧要的。

编辑2010-03-02 :最初开始的问题:

  

是否每个人都工作了NASA?难道性能永远是第一位?所以很多答案...

没有,我们大多数人没有为NASA工作。

没有:可靠性和可维护性来提前性能。可重用性也很好。

在宽的范围,性能并不重要。

这是一个有趣的问题和答案是不够挺有意思的。优先级依赖于实现。我想目前,用户不会牺牲可维护性或可重用性表现的例子之一。是的,有可靠性的因素 - 应该有任何错误/错误。所以,当我们比较可维护性,性能和可重用性。

我们的一个客户有在线交易网站。在峰值负载的平均交易将采取一些地方约14毫秒,在中间件层面来完成。一段时间后应用程序的性能下降(由于某些原因)和交易平均时间提高到24毫秒。现在,作为一个正常的开发者,我们会认为10毫秒也不是那么惊人的关键。但是,如果我们从业务的角度认为那是惊人的。怎么样?让我们分析:

让我们假设峰值负载下的资源得到充分利用,并与14MS我们能够做100笔交易。现在,随着性能的降低交易采取额外的10ms的是71.42%的额外时间。现在,这将意味着我们将只能满足28.58的交易,而不是100周的交易。这意味着严重损失的业务。

逸岸有很多文献上的应用程序的性能的重要性。有一个很不错的书“定量分析探讨计算机体系结构”,介绍如何的表现,maintability,可靠性的因素,avaliability可以在业务/用户来量化。

我不会指定重要性的顺序同样是上下文特定

  

他们认为调用另一个函数或子程序或UDF会阻碍性能

这是错误的想法。

  

我会命令:维修性,性能,复用性

有时(通常IMO)的可重用性的的可维护性:那是因为你重用你是“能够使一个容易识别点的改变的东西,而不是追逐那些地方soneone复制和粘贴代码”

业绩不不是第一位的,即使在美国航天局!在美国宇航局,如果代码不正确和可靠的人死亡。

此外,在我的经验,甚至当性是宝贵的,它是一点;通常有一个业绩水平,几乎没有或没有额外的价值超越。与此相反,有附加价值在于提高准确性无论怎样可靠一段代码;一段代码真的不能作为预期太经常。

我的顺序将是:

  • 维护性:如果它是不容易改变,它不会留下正确的时间不长,即使它是正确的。
  • Reuseability:重复利用提高了生产率和较少的代码一般比较可靠的比较码。
  • 性能:有时候性能的问题,但是你会惊讶多少代码不是性能至关重要的,即使在性能至关重要的应用程序。性能优化事项的瓶颈只。

<强>在一个孤立的答案,性能会几乎总是第一

我们不知道,如果你要打到这段代码连续一百万次,这样的表现是在默认情况下一个问题。我们不知道,如果我们的宝贵的代码片断将成为您的应用程序的瓶颈,因为我们不知道它是如何相互作用的。 (写入库代码时同样的情况:我不知道这是如何被使用的一个原因IMO代码重用不是简单地“类似的代码移动到共享实体”)

可维护性更是受到怎样的代码的代码我们未知的相互作用。答案将解决你设定的范围问题:你可以要求或标记为SQL或SQL Server或MySQL。剩下的,我们只是不知道:有多少类似的代码路径有哪些?多久这段代码将在项目的生命周期中会改变?你会坚持到特定的数据库服务器版本的十年,还是要经常更新?

解决维修主要是你的工作:是个问题,你问应隔离的实体?

可读性大多完成,剩下的就是你的工作。 回答问题时,我们通常对你感兴趣understandign答案,所以它需要对您可读至少。如果您copypaste片断代码到你的代码并在其上巴掌// That weird query评论,不是我的问题了。

添加到这样一个事实,即性能是比较容易理解的:从两个功能相当的答案,你总是会挑写着一个“像乔斯答案,但有点快”,除非它使得在M + R部门巨大的错误。


现在写这篇它看起来像有一个原因,过早的优化是诱人。这的的错误的优先级有两个原因。

用于优化低优先级有两个主要的原因,虽然:

正确性 更重要的是可维护性、可重复使用性或绩效。如果你的目标是在正确,你可能会得到其他三个在讨价还价。

  • 写信没有更多的代码不是必要的。
  • 利用标准图书馆。
  • 喜欢透明度的要聪明。
  • 写小,可检验的功能。

这里是结果的基础上标签计数:

  • 绩效952
  • 重复使用性(几个相关的标签)-43
  • 维护性-14

这是什么意思:性能必须重要?性能是困难的,因此,更多的问题是问。绩效问题更具体的/相应要求在这个网站?

我在NASA做工作。不过,我不知道(反正目前)维持或发展实时代码或者这是所有性能至关重要的任何事情。在大多数美国航空航天局完成的软件可能不是。我们已经看到在我的一天,一些可怕的代码,我还会去的可靠性和可维护性乔纳森的回答之后的表现,然后可重用性对于大多数应用程序。

一个我最喜欢的报价是从sic颗粒...

"计算机程序设计可以读取人和偶然发生跑了通过计算机上。"

我所有的这些ascpects我的工作;但可读性(使用某些术语表达能力)我的代码和我一起工作的顶我的名单的重要性。

只是我2c,有一个美好的周末!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top