Funzioni di concatenamento nei linguaggi procedurali [duplicato]

4

Il mio dipartimento sta per fare nuove assunzioni. Probabilmente saranno a) junior o b) più esperti di me stesso.

Quest'anno ho aiutato alcuni ingegneri C a passare a C # e osservato alcune interessanti strutture di codice scritte. Vorrei sapere di più sul perché lo stanno facendo, se dovessi incoraggiare "la mia strada" e quali sono i pro e i contro di ciascuno di essi.

Il problema

Assumiamo Alcuni processi con 4 passaggi, A > B > C > D.

Gli ingegneri C lo hanno scritto in questo modo;

SomeProcess()
{
    A();
}

A()
{
    // do A
    B(parameters);
}

B()
{
    // do B
    C(parameters);
}

C()
{
    // do C
    D(parameters);
}

Lo scrivo così

SomeProcess()
{
    A();
    B();
    C();
    D();
}

Il rinforzo che ho per "la mia strada" è questo:

  1. È più chiaro ciò che sta accadendo in quanto il codice riflette la documentazione
  2. Lo stack è più piccolo
  3. La composizione di livello superiore consente alle funzioni di essere utilizzate in altri processi, ad esempio A > C > B
  4. Se il processo ha un valore di ritorno, posso cambiare il tipo di ritorno in solo poche righe (questo è piuttosto secondario)

Domanda

Desidero presentare alcuni obiettivi di apprendimento in quest'area.

Perché gli altri ingegneri dovrebbero scrivere questa struttura? Ci sono degli svantaggi per "la mia strada"?

    
posta Gusdor 31.12.2016 - 17:44
fonte

1 risposta

-2

Ho lavorato con sviluppatori C che scrivono codice come il tuo esempio. Dalla mia esperienza, sono più abituati a scrivere codice con variabili globali e buffer, quindi è logico per loro scrivere codice del genere. Mentre il tuo esempio non è ricorsivo, potrei vedere qualcuno che scrive un insieme di metodi / funzioni ricorsivi del genere.

Noterò che la maggior parte degli sviluppatori di C scriverà in altre lingue come fanno il codice in C, quindi è un'abitudine difficile da rompere per qualcuno che ha scritto C per oltre 20 anni.

Le possibilità di cambiare il loro stile sono ridotte a zero, ma proverei a stabilire revisioni periodiche del codice e magari una sessione settimanale o bisettimanale per presentare esempi su come tu o altri avete risolto problemi particolari. Questo mi ha aiutato in passato e probabilmente avrebbe aiutato i tuoi nuovi assunti.

Non essere un idiota!

    
risposta data 31.12.2016 - 20:04
fonte

Leggi altre domande sui tag