Qual è la differenza tra un aiutante e una funzione di convenienza?

3

I due mi sembrano uguali:

  • una comodità è un aiuto
  • un helper è una comodità

Quando è bello usare l'uno o l'altro termine?

    
posta in code veritas 11.02.2015 - 03:53
fonte

3 risposte

12

Functions have two main purposes: aiding code reusability and breaking down a task into smaller logical units. Functions that do not aid code reusability are helper functions; their sole purpose is to "help" a single function by cleaning the code and making the logic clearer. The opposite of a helper function is a library function, which focuses on code reuse.

Fonte: Cunningham & Cunningham

considerando quanto segue:

A convenience function is a non-essential subroutine in a programming library or framework which is intended to ease commonly performed tasks.

Fonte: Wikipedia

  • Una funzione di supporto che non è una funzione di convenienza sarebbe una funzione che suddivide un'attività in unità logiche più piccole senza favorire la riusabilità del codice e senza avere l'obiettivo di facilitare un'attività comunemente eseguita.

    Ad esempio, una specifica attività T potrebbe richiedere di eseguire l'azione A e l'azione B. Il refactoring può portare a tre funzioni: T() , A() e B() , dato che potrebbe non avere troppo senso chiamare A() senza chiamare B() subito dopo.

  • Una funzione di convenienza che non è una funzione di supporto faciliterebbe le attività comunemente eseguite senza suddividere un'attività in unità logiche più piccole.

    Ad esempio, se molte persone chiamano l'attività T₁ immediatamente seguita dall'attività T₂, una funzione di convenienza sarebbe T₃ che chiamerà semplicemente T₁, quindi T₂. Qui, T₃() non "aiuta" una singola funzione e non suddivide le attività in unità logiche più piccole: raggruppa semplicemente due attività attualmente utilizzate.

risposta data 11.02.2015 - 04:27
fonte
4

Sono solo termini. Nella maggior parte degli scenari, sono intercambiabili.

In generale, tuttavia, una funzione di convenienza è quella che ti aiuta solo a fare qualcosa che puoi già fare, anche se con meno digitazioni. Un sovraccarico che inoltra con i soliti valori predefiniti, ad esempio.

Spesso un helper è una nuova funzionalità che non realmente appartiene da qualche parte quindi è fuori da solo, ma aiuta ancora.

    
risposta data 11.02.2015 - 04:33
fonte
0

Almeno come li userò, i due sono in realtà più o meno opposti.

Una funzione di convenienza è (almeno vicino a) una pura funzione di interfaccia, qualcosa che fornisce solo un'interfaccia più gradevole e più comoda da utilizzare per il codice client. Un classico esempio potrebbe essere un front-end per una funzione ricorsiva come Quicksort:

Quicksort(array a) { 
    QuicksortImplementation(a, 0, a.size());
}

Una funzione di supporto, al contrario, normalmente non è affatto visibile. Nella programmazione orientata agli oggetti, ad esempio, verrà in genere implementato come metodo privato / funzione membro.

class X { 
    public void foo() { 

        // beginning of 'foo'

        if (some_condition)
            helper();

        // remainder of foo
    }

    private void helper() { 
        // do some relatively minor service for foo()
    }
};

In entrambi i casi, tuttavia, di solito c'è l'idea di base che la funzione helper / convenience offra solo una parte piccola della funzionalità complessiva. C'è anche almeno la connotazione che la funzione helper / convenienza è in realtà solo destinata ad essere utilizzata in combinazione con un'altra funzione primaria. Di solito non è particolarmente generico o riutilizzabile, solo una parte della sua funzione primaria che deve essere (o è più conveniente quando) scritta come funzione separata per un motivo o per un altro.

    
risposta data 11.02.2015 - 05:13
fonte

Leggi altre domande sui tag