Esiste un anti-pattern formale per descrivere lo scenario?

10

Alcuni codici sono scritti per generare fogli di calcolo Excel (Office Interop).

  • Il codice funziona molto male.
    • Un sottosistema è progettato per generare i file di notte. Le prestazioni non sono un problema di notte.
      • Viene creata una funzione per selezionare il file corretto tra i 100 diversi file disponibili in base a un set di parametri scelto.
      • Poiché esistono file fisici, viene aggiunto un sistema di archiviazione per il backup di questi file (non vi è alcun motivo per archiviarli. Questi file dovrebbero essere generati al volo).
      • Questo sistema non include un file di configurazione, ma ha una funzione "server picker" codificata che si riflette semplicemente sul server su cui è in esecuzione il codice.
      • È necessaria un'attività pianificata per supportare ed eseguire questo servizio.

Questo si riduce a un singolo problema. Il codice originale funziona troppo male per essere eseguito in un ambiente di produzione.

Se il problema di prestazioni fosse stato risolto, il sottosistema e il successivo sistema di archiviazione, la "funzione factory picker file", il punto di errore hard coded e il mantenimento dell'attività pianificata e il suo punto di errore aggiunto non hanno bisogno di esistere.

Questo è un "fallimento a cascata", se vuoi. Il problema originale ha portato a un codice più cattivo, a soluzioni più scadenti ea costi aggiuntivi non necessari. Esiste un termine formale anti-modello o generale per descriverlo?

    
posta P.Brian.Mackey 13.12.2011 - 18:15
fonte

3 risposte

23

Lava flow?

In computer programming jargon, lava flow is a problem in which computer code written under sub-optimal conditions is put into production and added to while still in a developmental state.

From the Perl Design Wiki: Lava Flow is "when code ... spews forth and becomes permanent, it becomes an architectural feature of the archaeological variety. Things are built atop the structure without question and without hope of changing what is beneath them. The existing code is seen as an historical curiosity."

Often, putting the system into production results in a need to maintain backward compatibility (as many additional components now depend on it) with the original, incomplete design.

Lava flows are often exacerbated by changes in the development team working on a project. As workers cycle in and out of the project, knowledge of the purpose of aspects of the system can be lost, and rather than clean up these pieces, they are worked around, increasing the complexity and mess of the system.

Lava flow is considered an anti-pattern, a commonly encountered phenomenon leading to poor design.

    
risposta data 13.12.2011 - 18:21
fonte
3

Non sono sicuro che si tratti di un anti-modello. Come con tutti gli anti-schemi, dobbiamo prendere la tua parola che chiunque abbia pensato che fosse una buona idea era sbagliato, ma in questo caso sembra plausibile e ti prendo in parola, quindi non è questo il problema.

Il problema è che per essere utile un anti-pattern deve descrivere una sorta di trappola generale e come può essere evitato. In questo caso, immagino che sarebbe trovare un work-around per il codice che si comporta male quando si poteva semplicemente farlo funzionare meglio.

Il problema con questo come anti-pattern, IMHO, è che la conoscenza di esso sembra improbabile che abbia molto valore. Chiunque abbia fatto questo presumibilmente già capito che sarebbe bello sapere come farlo funzionare meglio, quindi non devono sapere come farlo. Quindi avere sentito parlare della situazione generale come un anti-modello non avrebbe davvero aiutato.

Per quanto riguarda un termine generico per descriverlo, "fallimento a cascata", come hai suggerito, funziona piuttosto bene. Il termine che mi piace per le persone non qualificate in una missione che non aveva senso in primo luogo è snark hunting , ma sembra troppo duro per questa situazione. (Ma in qualche modo scaricherò in qualche modo gratuitamente il link, poiché è la miglior rappresentazione di un'impresa condannata che conosco).

    
risposta data 13.12.2011 - 19:06
fonte
3

Non è sicuro se questo aiuti, ma l'automazione dell'ufficio è spesso un caso speciale:

L'automazione di ufficio viene solitamente eseguita in questo modo se deve essere automatizzata da un desktop utente (specialmente per i siti Web .net perché i documenti di automazione dell'ufficio avvertono correttamente che ci saranno perdite di dati negli strumenti di interoperabilità degli uffici se vengono eseguiti senza headless. Quando sono stato costretto a scrivere processi headless per generare documenti d'ufficio con quel toolkit, abbiamo chiamato i servizi sacrificali perché dovevi ucciderli periodicamente per riavere la memoria.

Oltre all'archiviazione, ciò che stai descrivendo è, sfortunatamente, una buona pratica in alcuni casi.

Link: link

    
risposta data 14.12.2011 - 01:31
fonte

Leggi altre domande sui tag