Ho un problema serio con l'applicazione su cui sto lavorando. Ha un sacco di codice procedurale e ora ha bisogno di refactoring ora .. Il problema: abbiamo due diverse applicazioni in generale, ma usano lo stesso "modulo", le funzioni concrete di questo modulo. Assomiglia a questo: (pseudocodice)
// general application
class App1 {
DoSomething();
}
class App2 {
DoSomething();
}
// "module":
a;
b;
c;
function DoSomething {
if (App1) {
// working with a, b here
}
if (App2) {
// working with a, c here
}
}
Notare che la funzione "DoSomething" ottiene "a", "b", "c" dall'esterno. Inoltre, questo "DoSomething" può chiamare un'altra funzione al suo interno, "DoSomething 2" ad esempio ..
Questa frase if aka "se App1 allora, altrimenti se App2 allora .." è sparpagliata da tutto il codice, e diventa il problema. Inoltre, il conteggio di questa Applicazione potrebbe aumentare in futuro (
Quale modo migliore per risolvere questo problema? Per favore, puoi dare un consiglio, quali schemi / approcci possono aiutarti qui?
Aggiorna
Questo è un esempio reale del codice, ma tutti i nomi sono stati sostituiti con nomi falsi:
situazione uno - "helpers.js"
import { isApp1 } from '../../..';
import { constTypes } from '../../../../someAnotherHelpers';
import { constSybtypes } from '../../someAnotherHelpersTwo';
const App1Constants = {
[constTypes.a]: { .. },
[constTypes.b]: {
[constSybtypes.b.a]: 33,
},
};
const App2Constants = {
[constTypes.c]: 22,
};
const getConstants = isApp1()
? App1Constants
: App2Constants;
situazione due - "alcuni reagiscono classe"
import { isApp1 } ...;
class Test {
const className = isApp1 ? 'object_app1' : 'object_app2';
render() {
<div className={className}>
...
</div>
}
}
situazione tre - "selector.js" (utilizzata ovunque ..)
import { isApp1 } ...;
import { someAnotherSelector } from '.';
import { someAnotherSelector2 } from '../../../anotherSelectors';
export const someSelector =
isApp1()
? (state) => {
return someAnotherSelector(state.someReducer.variant1);
}
: (state) => {
return someAnotherSelector2(state.someReducer.variant2);
}
};