`

动态评估取舍——高效程序员的45个习惯之一

阅读更多

动态评估取舍

——高效程序员的45个习惯之一

“性能、生产力、优雅、成本以及上市时间,在软件开发过程中都是至关重要的因素。每一项都必须达到最理想状态。”
 

可能曾经身处这样的团队:管理层和客户将很大一部分注意力都放在应用的界面展示上。也有这样的团队,其客户认为性能表现非常重要。在团队中,你可能会发现,有这样一个开发主管或者架构师,他会强调遵守“正确”的范式比其他任何事情都重要。对任何单个因素如此独断地强调,而不考虑它是否是项目成功的必要因素,必然导致灾难的发生。

 

强调性能的重要性情有可原,因为恶劣的性能表现会让一个应用在市场上铩羽而归。然而,如果应用的性能已经足够好了,还有必要继续投入精力让其运行得更快一点吗?大概不用了吧。一个应用还有很多其他方面的因素同样重要。与其花费时间去提升千分之一的性能表现,也许减少开发投入,降低成本,并尽快让应用程序上市销售更有价值。

 

举例来说,考虑一个必须要与远程 Windows 服务器进行通讯的 .NET Windows 应用程序。可以选择使用 .NET Remoting 技术或 Web Services 来实现这个功能。现在,针对使用 Web Services 的提议,有些开发者会说:“我们要在 Windows 之间进行通信,通常此类情况下,推荐使用 .NET Remoting 。而且, Web Services 很慢,我们会遇到性能问题。”嗯,一般来说确实是这样。

 

然而,在这个例子中,使用 Web Services 很容易开发。对 Web Services 的性能测试表明 XML 文档很小,并且相对应用程序自己的响应时间来讲,花在创建和解析 XML 上的时间几乎可以忽略不计。使用 Web Services 不但可以在短期内节省开发时间,且在此后团队被迫使用第三方提供的服务时, Web Services 也是个明智的选择。

 

Andy 说。。。
过犹不及
我曾经遇到这样一个客户,他们坚信可配置性的重要性,致使他们的应用有大概10 000个可配置变量。新增代码变得异常艰难,因为要花费大量时间来维护配置应用程序和数据库。但是他们坚信需要这种程度的灵活性,因为每个客户都有不同的需求,需要不同的设置。
可实际上,他们只有19个客户,而且预计将来也不会超过50个。他们并没有很好地去权衡。

  

 

 

考虑这样一个应用,从数据库中读取数据,并以表格方式显示。你可以使用一种优雅的、面向对象的方式,从数据库中取数据,创建对象,再将它们返回给 UI 层。在 UI 层中,你再从对象中拆分出数据,并组织为表格方式显示。除了看起来优雅之外,这样做还有什么好处吗?

 

也许你只需要让数据层返回一个 dataset 或数据集合,然后用表格显示这些数据即可。这样还可以避免对象创建和销毁所耗费的资源。如果需要的只是数据展示,为什么要创建对象去自找麻烦呢?不按书上说的 OO 方式来做,可以减少投入,同时获得性能上的提升。当然,这种方式有很多缺点,但问题的关键是要 多长个心眼儿 ,而不是总按照习惯的思路去解决问题。

 

总而言之,要想让应用成功,降低开发成本与缩短上市时间,二者的影响同样重要。由于计算机硬件价格日益便宜,处理速度日益加快,所以可在硬件上多投入以换取性能的提升,并将节省下来的时间放在应用的其他方面。

 

当然,这也不完全对。如果硬件需求非常庞大,需要一个巨大的计算机网格以及众多的支持人员才能维持其正常运转(比如类似 Google 那样的需求),那么考虑就要向天平的另一端倾斜了。

 

但是谁来最终判定性能表现已经足够好,或是应用的展现已经足够“炫”了呢?客户或是利益相关者必须进行评估,并做出相关决定(见第 45 页中 习惯 10 )。如果团队认为性能上还有提升的空间,或者觉得可以让某些界面看起来更吸引人,那么就去咨询一下利益相关者,让他们决定应将重点放在哪里。

 

没有适宜所有状况的最佳解决方案。你必须对手上的问题进行评估,并选出最合适的解决方案。每个设计都是针对特定问题的 —— 只有明确地进行评估和权衡,才能得出更好的解决方案。

 

 

没有最佳解决方案 (No best solution)

 

 
动态评估权衡
考虑性能、便利性、生产力、成本和上市时间。如果性能表现足够了,就将注意力放在其他因素上。不要为了感觉上的性能提升或者设计的优雅,而将设计复杂化。
 

切身感受

即使不能面面俱到,你也应该觉得已经得到了最重要的东西 —— 客户认为有价值的特性。

平衡的艺术

  • 如果现在投入额外的资源和精力,是为了将来可能得到的好处,要确认投入一定要得到回报(大部分情况下,是不会有回报的)。真正的高性能系统,从一开始设计时就在向这个方向努力。
  • 过早的优化是万恶之源。
  • 过去用过的解决方案对当前的问题可能适用,也可能不适用。不要事先预设结论,先看看现在是什么状况。

 

 

 

分享到:
评论

相关推荐

    【高清完整pdf】高效程序员的45个习惯 敏捷开发修炼之道

    本书名为《高效程序员的45个习惯 敏捷开发修炼之道》,由Venkat Subramaniam和Andy Hunt两位作者...书中的每一个习惯都值得程序员细细品味,并将其融入到日常的工作与学习之中,真正地实践成为一名真正的高效程序员。

    删除:大数据取舍之道

    《删除:大数据取舍之道》讲述了遗忘的美德,为读者展现了大数据时代的取舍之道。...《删除:大数据取舍之道》告诉我们,在大数据时代,面对海量信息人类该如何取舍,怎样才能构建一个积极而安全的未来。

    企业国有资产评估报告指南讲解及在实务中的应用.pdf

    《企业国有资产评估报告指南》是针对企业国有资产评估过程中的一个重要环节——评估报告的编写和应用进行详细指导的规范性文件。这份指南旨在提高评估报告的质量,确保报告的完整性和准确性,以便更好地服务于国有...

    大数据取舍之道

    在《删除》一书中,作者提出了一个关键观点:在信息爆炸的时代,选择性地“删除”某些数据,有时比保留所有数据更为重要。 书中的核心概念之一是数据悖论——随着我们收集和存储的数据越来越多,我们实际上面临的...

    2009-7企业国有资产评估报告指南讲解.pdf

    它与《资产评估准则——评估报告》构成母子关系,后者为评估报告的基本要求,而指南则针对企业国有资产评估的特殊性,提供了更具体的规定,如增加了评估明细表和评估说明。此外,指南依据实体性准则和其他程序性准则...

    XXXX-7企业国有资产评估报告指南讲解.docx

    - **母子关系**: 《企业国有资产评估报告指南》与《资产评估准则——评估报告》之间存在着一种“母子关系”。其中,《资产评估准则——评估报告》被视为“母准则”,而《企业国有资产评估报告指南》则被视为针对...

    模拟集成电路设计(拉扎维思维方式)——复旦大学综合课件

    最后,模拟集成电路设计中还有一个非常重要的概念——“蛋壳”模型,它强调了在设计中需要考虑的参数和限制因素,以及这些因素如何影响整个集成电路的性能。通过理解这些概念,设计者能够更好地进行模拟集成电路设计...

    《企业国有资产评估报告指南》讲解.docx

    《企业国有资产评估报告指南》不仅为企业国有资产评估提供了明确的规范和指导,还为企业管理层、评估师以及相关监管机构提供了一个共同遵循的标准框架。通过这些详细的规定和指导,可以有效提高评估报告的质量,增强...

    企业国有资产评估报告指南》讲解.docx

    前者作为后者的一个补充,旨在满足特定领域的需求。 - **实体性准则**:实体性准则和其他程序性准则为《企业国有资产评估报告指南》提供了操作依据,确保评估工作的合规性和专业性。 - **国资报告指南与评估报告...

    架构师害怕程序员知道的十项技能.ppt

    尽管架构师的工作更多地涉及到系统设计和决策,但成为一名好的架构师往往始于成为一名出色的程序员。编程能力是架构师的基础,因为这有助于他们深入理解技术细节,更好地评估技术选择,以及解决实际开发中遇到的问题...

    高效能人士的七个习惯第五章习惯三要事第一.pptx

    Covey 的著作《高效能人士的七个习惯》,主要介绍了高效能人士的七个习惯中的第三个习惯“要事第一”。本章节主要讨论了高效能人士的时间管理策略和自我管理的原则。 独立意志:有效管理的先决条件 高效能人士...

    删除 大数据取舍之道.pdf

    《删除:大数据取舍之道》这本书深入探讨了在大数据时代如何进行有效的信息筛选与管理,以帮助读者理解并掌握在海量数据中寻找价值的核心策略。大数据不仅是指数据的规模巨大,更涵盖了数据的多样性和快速变化性。...

    提高LR技术不可不看的东西——含截图[1]

    一共有三个rar包,需要全部下载放在一个文件夹内解压才会解压成功,这个是最后一个rar包 是好的内容,整理也很辛苦,所以资源分标的比较高些,但我觉得值,请下载者自己推敲资源分与好资源之间的取舍 为了把好资源...

    我编程,我快乐:程序员职业规划之道.[美]Chad Fowler(带详细书签).pdf

    作者运用其独特的思维方式,启发程序员不能只注重技能上的提高,还要关注自己的职业发展。书中涉及新旧技术的取舍、技术与业务的关系、技术是要专精还是要广博等,相信这也是长久以来困扰你的问题。带着这些问题去...

    程序员简历模板资源合集

    程序员简历中要编写的内容有很多,最好浓缩在一页纸上,如果在一篇个人简历中出现太多无用的语言会导致简历篇幅过多,而这样直接做的后果是招聘官会认为应聘者不能语言简练的浓缩简历,想必在工作中也会拖泥带水,...

    推荐Java程序员到j2ee架构师的阅读书籍.pdf

    这个时候《Java编程思想》是一本让你知其所以然的好书,它对于基本的面向对象知识有比较清楚的交待,对Java基本语法,基本类库有比较清楚的讲解,可以帮你打一个良好的Java编程基础。这本书的缺点是实在太厚,也比较...

    新闻报道中尊重当事人隐私更重要——一辩稿.doc

    "新闻报道中尊重当事人隐私更重要——一辩稿" 新闻报道中尊重当事人隐私的重要性在于保护个人隐私权益和维护新闻报道的公正性。新闻价值和新闻道德是新闻报道的两大要素,其中新闻价值是指新闻反映的真实程度,对...

    总经理的新衣——打破管理的迷思.doc

    在“鱼与熊掌,皆我所欲 ——两难取舍篇”中,叶教授讨论了企业在面对矛盾和取舍时的困境,如离心力与向心力、效果与效率的权衡、节约成本与便宜行事的抉择。他强调在决策时要看到长远影响,避免短视近利,同时关注...

    删除-大数据取舍之道

    总之,“删除-大数据取舍之道”是一个关于如何在大数据洪流中导航,保持信息的有效性和个人隐私的主题。通过科学的数据管理策略,我们可以从数据中提取真知,同时在尊重个人隐私的前提下,构建一个更智能、更高效的...

    《删除:大数据取舍之道》PDF

    《删除:大数据取舍之道》是一本深入探讨大数据时代信息管理与决策的书籍。作者通过本书揭示了在海量数据背景下,如何明智地处理、分析和利用数据,以及如何在必要时进行“删除”以实现更高效的信息管理。这本书的...

Global site tag (gtag.js) - Google Analytics