Domanda Creazione di una classe di utilità?


Sono molto nuovo per OOP e sto cercando di fare del mio meglio per mantenere le cose strettamente basate sulla classe, pur utilizzando i principi di buona codifica.

Sono un modo giusto nel mio progetto ora e ho un sacco di metodi di uso generale che voglio mettere in una classe di utilità. C'è un modo migliore per creare una classe di utilità?

public class Utilities
{
    int test;

    public Utilities()
    {
    }

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

Dopo aver creato questa classe di utilità, devo semplicemente creare un oggetto Utilities ed eseguire i metodi da me scelti? Ho un'idea corretta della classe Utilità?


18
2018-05-18 13:50


origine


risposte:


Dovresti farlo static classe, come questa:

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

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

La classe dovrebbe (di solito) non avere campi o proprietà. (A meno che tu non voglia condividere una singola istanza di qualche oggetto attraverso il tuo codice, nel qual caso puoi creare un static proprietà di sola lettura.


35
2018-05-18 13:53



Se stai lavorando con .NET 3.0 o superiore, dovresti esaminare i metodi di estensione. Ti permettono di scrivere a static funzione che agirà contro un particolare tipo, come Int32, mentre sembra essere un metodo sopra quell'oggetto. Quindi allora potresti avere: int result = 1.Add(2);.

Prova questo; potrebbe solo mostrarti un altro modo. ;)

Esercitazione C # - Metodi di estensione


11
2018-05-18 13:57



Starai meglio usando a static classe con static metodi. Quindi non avrai bisogno di istanziare la tua classe di utilità per usarla. Sembrerà qualcosa del genere:

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

Quindi puoi usarlo in questo modo:

int result = Utilites.sum(1, 3);

2
2018-05-18 13:55



La cosa migliore è rendere le funzioni non affidabili per i membri di una classe. Pertanto è possibile rendere statiche le funzioni.

È meglio rendere le funzioni un metodo di estensione di un tipo. vedi qui per esempio


1
2018-05-18 13:53



Sebbene sia nuovo di OOP e cerchi di gestire le best practice, potrebbe essere una buona idea cercare di evitare classi di utilità. Potresti ridisegnare la tua classe come

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;
    }
}

E si chiama come:

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

Sarà una buona pratica fino a che ulteriori esperienze con OOP possano aiutarvi a esaminare i compromessi dell'uso di una classe di utilità rispetto ai principi OOP puri.


1
2018-05-18 14:34



sì questo non viene compilato perché test int che non è supportato all'interno della classe statica o lo rende come test statico int che sarà supportato e restituirà l'output


0
2017-10-21 05:42



Fai questo.

public static class Utilities
{
    int test;

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

In questo modo lo usi

int result = Utilities.sum(1, 2);

-2
2018-05-18 13:55