La decomposizione funzionale è davvero un antipasto?


9

Mentre stavo leggendo I peggiori anti-pattern che hai incontrato , ho cliccato sul link in questo post per approdare sul sito web sugli anti-pattern.

E la pagina http://sourcemaking.com/antipatterns/functional-decomposition mi ha fatto riflettere.

Quanto è cattivo questo anti-pattern, ed è affatto un anti-pattern? Perché, anche se al giorno d'oggi sto facendo principalmente programmazione OOP, sento ancora una riluttanza contro i linguaggi OOP-tutto-come Java, e anche le pratiche di progettazione che portano. E immagino, ho ancora alcuni tratti della programmazione funzionale mentre scrivo il codice.

E questo ha sollevato una domanda, sto sbagliando aderendo allo stile funzionale OOP +, o è comune nell'industria e non è poi così male.

Quello che so per esperienza è che lo stile funzionale OOP + non è completamente compatibile con gli sviluppatori OOP puri. Ma allo stesso tempo, mentre gli sviluppatori di OOP hanno problemi con lo sviluppo funzionale di OOP +, il contro-argomento è che le soluzioni OOP sono abbastanza spesso ingegnerizzate e troppo difficili da usare e, per la mia esperienza, non erano nemmeno un po 'più facili, e in realtà introdotto alcuni punti ciechi per nascondere bug MOLTO seri.

Quindi, anche se ho discusso con il mio collega su questi argomenti, sono giunto alla conclusione che nessuno dei modi è effettivamente perfetto. E ho ancora la domanda senza risposta.

Il problema OOP è stato inoltre rafforzato da un collegamento di un altro post nella stessa discussione. Il collegamento esamina lo stile Java OOP http://chaosinmotion.com/blog/?p=622

Allora, qual è l'atteggiamento generale verso il mix di programmazione funzionale con OOP? E qual è l'equilibrio che uno sviluppatore dovrebbe cercare di raggiungere?


1
Il tuo titolo e il corpo delle domande pongono diverse domande correlate, ma completamente diverse, alcune delle quali sembrano retoriche. Ho problemi a capire cosa stai chiedendo esattamente qui.
Blueberryfields,

Mi dispiace, non sono un madrelingua e faccio fatica a pensare a un titolo migliore. Le correzioni sono benvenute.
Coder

1
La domanda è chiara Non ascoltare i mirtilli.
jojo,

5
Chiaramente, per i fanatici OOP qualsiasi cosa al di fuori della portata di OOP è un "antipattern". In effetti, il peggior antipattern possibile è un uso eccessivo di OOP stesso.
SK-logic,

Risposte:


8

Prima di tutto, la programmazione funzionale è attualmente ciò che fanno tutti i ragazzi fighi. L'Anti-Pattern parlava davvero di programmazione procedurale (sarebbe più chiaro se la tecnica fosse chiamata "decomposizione procedurale" ma non lo è), e penso che lo fossi anche tu.

L'anti-pattern parlava di cattivi modi di scrivere codice procedurale in un linguaggio orientato agli oggetti, l'altra pagina di cui parlava male era di scrivere Java - in verità non esiste un linguaggio così fantastico che puoi fare tutto ciò che vuoi ma non puoi scrivere codice errato.

In pratica, ho visto un po 'più di ingegneria nel codice orientato agli oggetti che procedurale - un po' meno in ingegneria e un po 'più in ingegneria.

Nel tuo caso, dipenderebbe dai dettagli e non sono sicuro di cosa tu faccia effettivamente in uno stile procedurale. È corretto, chiaro, testabile, facile da modificare, ecc.? I criteri per giudicare il codice dovrebbero essere basati su tali preoccupazioni pratiche e non sulla purezza di uno stile particolare. Sembra che nel tuo caso persone ragionevoli e ben informate potrebbero non essere d'accordo (e fare!) Su tali preoccupazioni, e in tal caso probabilmente non esiste un modo oggettivo per determinare la verità della questione.


2
La tua risposta è iniziata bene, ma poi sei diventata vaga e non impegnativa. Ho letto l'articolo che l'OP collegava alla decomposizione funzionale, ed è un orribile antipasto, praticato da sviluppatori procedurali che cercano di trasformare il loro stile di programmazione in un paradigma orientato agli oggetti. Quindi no, non dipende dalle specifiche.
Robert Harvey,

ma non credo che Coder creda che l'anti-pattern sia ciò che ha fatto personalmente (né ho particolari ragioni per dubitare di lui). La sua domanda (una di queste, in realtà) era se la programmazione in stile procedurale potesse essere OK in un linguaggio di oggetti (probabilmente più simile alla funzione statica Java mostrata nel blog Java rant). E ciò dipende dalle specifiche di ciò che ha codificato. (Ho fatto la prefazione con "Nel tuo caso"). Penso che tu stia leggendo la domanda come "Dovrei programmare come nell'anti-schema?", Il che sarebbe chiaramente negativo - ma Coder lo sa, penso.
psr

4
Anche in questo modo - la decomposizione procedurale è una tecnica valida e liquidarla come non molto compatibile con OOP è un puro fanatismo. Lascia che tutti i fiori sboccino. Tutte le tecniche sono valide se utilizzate con saggezza. Attenersi a una particolare metodologia non è affatto saggio.
SK-logic,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.