Le funzioni principali di un programma dovrebbero essere in un oggetto separato? [duplicare]

0

Per un progetto di classe in Introduzione alla programmazione orientata agli oggetti, stiamo creando un gioco semplice.

Questo gioco ha due menu principali. Mi stavo chiedendo quale sia la migliore pratica per organizzarli. Devo avere queste funzioni in un oggetto separato o dovrei tenerle come metodi separati?

Per me ha più senso creare metodi separati per ognuno e chiamarlo nel modo principale in questo modo

public static void main(String[] args)
{
    // call sub module and create objects
}

Qualche aiuto su questo? Immagino che si presenterà molto durante la programmazione, quindi desidero conoscere le migliori pratiche per gestirlo.

    
posta ReallyGoodPie 16.09.2015 - 07:10
fonte

1 risposta

2

Suggerirei di memorizzare la struttura dei menu in una struttura di dati gerarchica:

//C# sample
//You can replace the object initializers with constructors in the class,
//In C# 6.0, you can also create an Add extension method taking three parameters, for use with the collection initializer
//    https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6#extension-add-methods-in-collection-initializers

class MenuEntry {
    public string Title {get;set;}
    public Action Action {get;set;}
    public List<MenuEntry> Subentries {get;set;}
}

var entries = new List<MenuEntry> {
    new MenuEntry() {Title = "TopLevel1", Subentries = new List<MenuEntry>() {
        new MenuEntry() {Title = "SecondLevel1", Action = () => SecondLevel1()},
        new MenuEntry() {Title = "SecondLevel2", Action = () => SecondLevel2()}
    },
    new MenuEntry() {Title = "TopLevel2", Subentries = new List<MenuEntry>() {
        new MenuEntry() {Title = "SecondLevel3", Action = () => SecondLevel3()},
        new MenuEntry() {Title = "SecondLevel4", Action = () => SecondLevel4()}
    }
}

Quindi tutto ciò di cui hai bisogno è una singola funzione ricorsiva per rendere ogni MenuEntry all'elemento UI corrispondente e connettere Action a quell'elemento.

A parità di tutti gli altri, è più semplice raggruppare i metodi chiamati ( SecondLevel1 , SecondLevel2 ) insieme, nella stessa classe del metodo main , o in una classe statica separata per tutti questi metodi. Tuttavia, potrebbe essere più appropriato mantenere alcuni o tutti i singoli metodi insieme alle parti appropriate della domanda: ad es. un metodo StartNewGame potrebbe appartenere alla classe Game .

    
risposta data 16.09.2015 - 08:07
fonte

Leggi altre domande sui tag