Creating a Utilities Class?

2019-03-23 02:32发布

I'm very new to OOP and am trying my hardest to keep things strictly class based, while using good coding principles.

I'm a fair ways into my project now and I have a lot of general use methods I want to put into an utilities class. Is there a best way to create a utilities class?

public class Utilities
{
    int test;

    public Utilities()
    {
    }

    public int sum(int number1, int number2)
    {
        test = number1 + number2;
    }
    return test;
}

After creating this Utilities class, do I just create an Utilities object, and run the methods of my choosing? Do I have this Utilities class idea correct?

7条回答
男人必须洒脱
2楼-- · 2019-03-23 03:05

Best is to make the functions not reliable to members of a class. Therefore you can make the functions static.

Better is to make the functions an extension method of a type. see here for example

查看更多
爷的心禁止访问
3楼-- · 2019-03-23 03:05

yes this does not compile because int test which is not supported inside static class either make it as static int test which will be supported and returns the output

查看更多
神经病院院长
4楼-- · 2019-03-23 03:10

You should make it a static class, like this:

public static class Utilities {
    public static int Sum(int number1, int number2) {
        return number1 + number2;
    }
}

int three = Utilities.Sum(1, 2);

The class should (usually) not have any fields or properties. (Unless you want to share a single instance of some object across your code, in which case you can make a static read-only property.

查看更多
放荡不羁爱自由
5楼-- · 2019-03-23 03:13

do this.

public static class Utilities
{
    int test;

    public static int sum(int number1, int number2)
    {
        test = number1+number2;
        return test;
    }
}

That way you use it like

int result = Utilities.sum(1, 2);
查看更多
来,给爷笑一个
6楼-- · 2019-03-23 03:16

While new to OOP and trying to get a handle on best practices, it may be a good idea to try to avoid utility classes. You could redesign your class like

public class Sum
{
    private int _result;

    public int Result {
       get {
           return _result;
       }
    }

    public Sum(int startNum) {
        _results = startNum;
    }

    public void Add(int num) {
        _result += num;
    }
}

And is called like:

Sum sum = new Sum(1);
sum.add(2);
int result = sum.Result;

It'll be good practice until further experience with OOP can help you examine the trade-offs of using an utility class vs pure OOP principles.

查看更多
The star\"
7楼-- · 2019-03-23 03:18

If you are working with .NET 3.0 or above, you should look into extension methods. They allow you to write a static function that will act against a particular type, like Int32, while seeming to be a method on that object. So then you could have: int result = 1.Add(2);.

Try this out; it might just show you another way. ;)

C# Tutorial - Extension Methods

查看更多
登录 后发表回答