更好的方式调用函数多次

本文关键字:函数 调用 方式 更好 | 更新日期: 2023-09-27 18:15:08

在c#和Java等OOP中,如果我要创建一个类来执行所有字符串操作,我知道最好将所有函数设置为静态。然而,当我需要多次调用这些函数时,哪一个将是更好的选择(在使用更少资源的上下文中):

  1. 仅创建一次对象并使用该对象调用函数。

    StringManipulation sm = new StringManipulation(); 
    sm.reverse("something");
    sm.addPadding("something");
    sm.addPeriod("something");
    

  • 每次直接调用类

    StringManipulation.reverse("something");
    StringManipulation.addPadding("something");
    StringManipulation.addPeriod("something");
    
  • 更好的方式调用函数多次

    给出的两个选项的性能差异可以忽略不计。但主要的区别在于方法的使用。

    如果你需要一个方法来完成任何独立于类对象的一般任务,那么你将在设计中考虑静态方法。对于依赖对象的任务,你应该考虑实例方法。

    如果你需要一些初始化,比如从数据源获取值或参数,你应该创建一个对象。

    静态是你的例子中的方法,因为它们是原子函数,总是返回相同的结果,无论上下文(无状态)

    然而,在c#中(我不知道在java中),有一个更好的方法:扩展方法。基本上,您将向字符串对象添加方法,这将允许在字符串对象上直接调用它们,并且,如果您的返回对象也是字符串,则如果需要,将它们链接起来:

    public static string reverse(this string str)
    {
        // Code to reverse your string
        return result;
    }
    .........
    "something".reverse().addPadding()
    

    更多信息:https://msdn.microsoft.com/en-us/library/bb383977.aspx

    我相信这将是有效的

    StringManipulation sm = new StringManipulation(); 
    sm.reverse("something").addPadding("something").addPeriod("something");