winforms .Net关于使用小方法

时间:2011-07-13 05:24:46

标签: c# .net winforms methods inline

我在C#中使用winforms开发应用程序。在开发过程中,我想使用许多小方法,例如resetPerticularCombo(),因此代码保持尽可能干净。但问题是使3-5行代码的方法可能会导致太多的方法调用,我听说在编译Visual Studio 2008时会使用代码内联来处理这个问题。

我的疑问是,我是否应该依赖此功能并继续使用小帮助方法,或者我应该使用自己内联?

3 个答案:

答案 0 :(得分:7)

证明这是一个问题之前,你不应该担心会有大量的方法调用。这种实际导致问题的可能性很小(IMO),如果它为您提供更易读的代码,那就是最重要的事情。

测试表现始终是否可以接受。找出代码中的瓶颈在哪里,无论是通过分析还是其他技术,并考虑在最有效的地方进行微优化。

根据我的经验,使用“使用更少的方法”进行微观优化,与更高级别的更改(例如从列表查找到字典查找等)相比,几乎总是没有意义。

答案 1 :(得分:2)

我同意Jon Skeet。

关于企业应用程序我可以告诉您以下内容

我正在领导一个小型开发团队(5位开发人员)。我们的应用程序大约有500k loc。

我们总是试图找到方法应该具有的最特别的关注点。所以我们得到了很多小的和“自我解释”的方法。 因此,我们有许多方法,这从来不会导致问题。

大多数时候瓶颈在于访问SQL Server,文件等资源...... 或者缺乏异步性。

此外,我有一个性能,您可以使用蚂蚁profilder来描述它。

我也喜欢这些我在网上发现的优化“规则”

  

FirstRuleOfOptimization - 不要。

     

SecondRuleOfOptimization - 不要...... P

     

ThirdRuleOfOptimization - ProfileBeforeOptimizing

如果您正在开发一个时间关键软件(图形或驱动程序相关),那么这些东西可以说明问题,但是我不确定.net是否是最好的环境

答案 2 :(得分:0)

很多小例程都很好,正如其他答案已经说过的那样,但请记住考虑重构类似的例程,以便于阅读和维护(而不是专门针对性能)。

如果例程相同,则

resetPerticularCombo()resetAnotherCombo()可能值得转换为resetCombo(PerticularCombo)resetCombo(AnotherCombo)

使用匿名lambdas,这甚至可以用于合并其他类似的算法:(potentailly bad example,但继续使用OP的代码) ProcessCombo(PerticularCombo, (c)=>c.Reset())ProcessCombo(PerticularCombo, (c)=>c.SelectFirst()) < / p>

我是一名VB.NET程序员,这段代码直接输入到SO中,没有任何语法检查。