Come denominare un metodo che riempie gli spazi? [chiuso]

0

Ho un metodo che controlla una struttura di dati per la presenza di una cosa che potrebbe mancare ma è richiesta. Se manca, lo aggiunge.

Essenzialmente è questo (anche se il metodo è molto, molto più complicato a causa della complessità implicata nell'aggiunta della cosa, e la cosa viene da un servizio di terze parti):

void MethodThatNeedsAName()
{
    if (!ThingExists) AddThing(); 
}

Come definiresti un tale metodo?

CheckForAndAddThing ()

EnsureThingIsThere ()

AssertThingExists ()

ValidateThingExists ()

FixThing ()

P.S. Capisco la preoccupazione SOP qui, si prega di notare che questo è solo un esempio.

    
posta John Wu 02.03.2017 - 21:03
fonte

6 risposte

4
SetDefault()

Nel caso di un linguaggio come C #, potresti effettivamente usare Reflection per trovare quei campi che sono nulli e renderli istanziati, rendendo questo metodo generico SetDefaults<T>() .

Esempio, per un array :

public static T[] Populate<T>(this T[] array, Func<T> provider)
{
    for (int i = 0; i < array.Length; i++)
    {
        array[i] = provider();
    }
    return array;
}
    
risposta data 02.03.2017 - 21:38
fonte
1

Lo chiamerei

initThing() or initializeThing()

Con questo nome, sai che il tuo metodo restituisce un oggetto pieno di tutti i dati.

    
risposta data 02.03.2017 - 21:14
fonte
0

Probabilmente lo separerei in un file diverso, chiamiamolo Filler e chiamiamo Filler.fillThing() . Perché questo è quello che fa, si riempie.

Inoltre, è stato progettato meglio se hai bisogno di sentire otherThing in quanto avresti solo bisogno di aggiungere un nuovo metodo Filler.fillOtherThing() .

SPR potrebbe aiutarti qui.

    
risposta data 02.03.2017 - 21:34
fonte
0

Sarebbe "Thingify ()".

Tuttavia il tuo design è orribile. Prima di iniziare, dovresti almeno prendere in considerazione due metodi: HasThing () e AddThing (). Un metodo che fa più di una cosa sarà un rompicoglioni ad un certo punto.

Ora, perché sento che hai più lavoro da fare? Apparentemente hai uno stato che è incerto, forse non giusto e hai il codice per "aggiustarlo". Probabilmente è a causa dello stesso errore che ha portato al metodo che ha fatto più di una cosa. Hai più passaggi e / o percorsi logici e li hai avvolti in una pratica pratica dandy good-for-all. Quindi non hai idea di quale sia esattamente quella procedura e cerchi di scoprire cosa è successo dopo.

Inizia a dividere e isolare i passaggi di base e chiedere a un agente di chiamare i passaggi e valutare i risultati non ambigui prima di decidere cosa fare dopo. Questo sarà più passaggi in un modo più controllato, dandoti un codice più flessibile che sarà più facile da mantenere e adattare.

    
risposta data 02.03.2017 - 21:49
fonte
0

Idealmente una combinazione di due delle risposte che ho visto: Chiamalo "InitializeDefaultValues ()" (invece di setDefault o Initialize, anche se entrambi vanno bene).

TUTTAVIA , se questa è una classe, e questi membri devono essere impostati, questo dovrebbe essere fatto in fase di costruzione, e quindi non ci si deve preoccupare di controllare che esistono e quindi li impostano su un valore predefinito.

    
risposta data 02.03.2017 - 22:06
fonte
0

La tua domanda finge che ci sia un "miglior modo generale" per nominare un tale metodo. IMHO è un'ipotesi sbagliata, questo è il caso di dipendenza. Raccomando di esaminare il caso reale, esaminare ciò che la struttura dati effettivamente rappresenta e il modo in cui viene realmente denominato, quindi decidere caso per caso sulla denominazione del metodo.

Alcuni fattori che dovrebbero influenzare la denominazione: come vengono denominati altri metodi delle classi / oggetti del contesto correlato, se hai bisogno di un tale metodo una sola volta o per molte strutture di dati simili, se la tua struttura dati ha solo uno tali metodi o molti in sapori diversi, se "riempire gli spazi vuoti" significa fornire valori predefiniti significativi per il 70% dei campi delle strutture, o se significa "riparare" la struttura dei dati per il caso eccezionale è incoerente, e così via. E in una certa misura, questa è una questione di gusti e stile personale - la lingua inglese ti permette spesso di esprimere la stessa materia usando parole o idiomi diversi, e lo stesso vale per la denominazione dei metodi.

    
risposta data 02.03.2017 - 22:33
fonte

Leggi altre domande sui tag