In quale paradigma di programmazione non è possibile riutilizzare il codice (facilmente) ottenuto?

3

In un video riguardo all'architettura software che sto guardando, si afferma che il programma principale / lo stile architettonico di subroutine

promotes modularity and function reuse

Il riutilizzo del codice è uno dei principali vantaggi che ho sempre sentito nella programmazione orientata agli oggetti. Questa risposta a una domanda correlata dice lo stesso:

Code re-use is achieved in OOP but it is also achieved in functional programming

Capisco che entrambi i paradigmi di programmazione, OO e funzionale (main / subroutine) promuovono il riutilizzo del codice. Quello che non riesco a immaginare, è un esempio del contrario.

Quale stile architettonico o paradigma di programmazione rende difficile riutilizzare il codice e perché?

    
posta antonro 04.06.2018 - 22:51
fonte

2 risposte

7

For my own sanity, I've shortened "paradigms that promote code reuse" to "paradigms". In scope of this answer, all mentioned paradigms are paradigms that promote code reuse.

What I can't picture, is an example of the opposite.

Alcuni esempi di domande simili in contesti meno astratti. Forse questo aiuta a capire perché l'opposto di qualcosa non è sempre chiaro.

  • Cleaning your house is a chore (paradigm) that enables having a clean house. What is a chore that forces you to make the house dirty?

  • What's the opposite of a house? It is a flat plot of land or a hole in the ground in the (flipped) shape of a house?

  • What did people put on their heads before they had hats?

Gli opposti non sono assoluti; possono essere specifici per un particolare contesto (aggiunto tra parentesi qui). Qual è l'opposto di un uomo?

  • Un ragazzo? (età)
  • Una donna (genere)
  • Un animale? (civiltà)
  • Una macchina? (organico / artificiale)
  • Un topo? (Coraggio)

Questa domanda è molto difficile da rispondere. Stai chiedendo l'assenza di un paradigma.

Il problema qui è che un'assenza non è sempre esplicitamente denominata . È una questione di ciò che probabilmente può accadere quando non c'è nulla di esplicito (un paradigma) in atto per evitare la duplicazione del codice.

  • Senza un paradigma, qualsiasi cosa vada.
  • Quando qualcosa va, le persone (specialmente gli impiegati) tendono a scegliere il percorso di minor resistenza.
    • Per riutilizzare il codice in modo specifico, copia / incolla il codice e leggermente modificandolo è il modo più comune di riutilizzare il codice nel dimenticatoio.
  • Il percorso di minor resistenza di solito sceglie i benefici a breve termine (facilità di implementazione) rispetto ai benefici a lungo termine (manutenzione futura).
  • L'assunzione ripetuta di decisioni in base a vantaggi a breve termine per un lungo periodo di tempo rende una base di codice vicino non fissabile.

Per evitare che ciò accada, i paradigmi vengono messi in atto (idealmente) dall'inizio del progetto. In pratica non consente l'opzione facile , mantenendo i programmatori su uno standard minimo che evita (o almeno minimizza) eventuali problemi di manutenzione futura.

È interessante notare che non tutti i percorsi di minor resistenza sono cattivi . Semplicemente non hai mai sentito parlare di quelli buoni, perché non finiscono mai per creare problemi in futuro (dal momento che sono state buone decisioni per cominciare).

Quando ti concentri sulle cose che causano problemi, ignori intrinsecamente le cose che non hanno causato problemi.
Questo è come un dottore che si lamenta che "tutti" sono malati. Non stanno valutando con precisione la salute della popolazione mondiale, si stanno semplicemente dimenticando che le persone che non sono malate generalmente non vanno dal dottore per cominciare. Un sacco di persone nel mondo sono in buona salute, ma il medico semplicemente non le vede.

L'unica vera risposta alla tua domanda è progetti che non hanno il paradigma di riutilizzo del codice in atto.
Non esiste un paradigma che eviti in modo specifico il riutilizzo del codice. Esistono, tuttavia, codebase privi di paradigmi e quindi suscettibili di essere trasformati in una base di codice con poco o nessun riutilizzo del codice.

Una parte di me sospetta che tu stia facendo inferenze che in realtà non sono implicite. Se dovessi leggere una dichiarazione del tipo:

The Flater Hospital's doctors all work to improve patients' health.

Ciò non implica che altri dottori non lavori per migliorare la salute dei loro pazienti, né implica che in altro ospedali, non tutti dei medici lavorano per migliorare la salute dei pazienti.

Allo stesso modo, solo perché conosci due paradigmi che promuovono il riutilizzo del codice, ciò non implica che ci debbano essere paradigmi che promuovono la duplicazione del codice (o evitare esplicitamente l'implementazione del riutilizzo del codice).

    
risposta data 05.06.2018 - 09:13
fonte
2

Questo sarebbe "codice spaghetti".

Ripensaci prima dei giorni di programmazione OO o funzionale. Prima ancora di una programmazione strutturata, in cui i dati sono tutti nelle strutture e tutto è fatto da chiare funzioni autonome.

In un mondo in cui tutte le variabili sono globali e "goto" è un comando regolare per il controllo del flusso, l'adozione di moduli di codice e il loro trasferimento ad altri sistemi diventa estremamente difficile. Soprattutto perché non c'erano moduli. Era tutto un grumo monolitico di codice.

    
risposta data 05.06.2018 - 10:53
fonte