Czesc zastanawiam sie jak najlepiej usprawnic metode ktora jest dosc skomplikowana (zawiera taki mix jak podalem w tytule). Przyklad:
const onClick = ({index}) => {
const { prop1, prop2, prop3, } = SomeService.calc1(index);
const value = SomeService.calc();
const value2 = SomeService.cal2(index);
const value3 = SomeService.cal3(index);
const value4 = SomeService.cal4(index);
const value5 = SomeService.cal5(index);
const value6 = SomeService.cal6(index);
const value7 = SomeService.cal7(index);
const automations = {
automation1: prop1 && prop2 === 'OK' && value7,
automation2: value6 && prop2 === 'OK' && (prop1 || prop2 || prop3),
automation3: value5 && value5 && value4 && ( (prop1 || prop2) && !prop3)
// i zalozmy wiecej automatow ...
}
const runAutomation = Object.keys(automations ).some(x => automations [x])
if (runAutomation) {
const makeSomeThing({value})
}
const reset = resetAutomations({
automation1:value6 && prop2 === 'OK' && (prop1 || prop2 || prop3),
automation2: value5 && value5 && value4 && ( (prop1 || prop2) && !prop3),
// i zalozmy wiecej ...
})
resetAutomat({reset })
if ( value) {
makeSomeOnCb({some:true});
} else {
makeSomeOnCb({some:false});
}
if (value2) {
makeSomeOnCb({some:false});
} else {
makeSomeOnCb({some:true});
}
if (value3) {
makeSomeOnCb2({some:true});
}
}
Tak mniej wiecej wyglada ta funkcja, nie moge podac realnych danych bo to kod firmowy, ale mniej wiecej tak to wyglada. Ten kod moze sie wydluzac, jesli dojda nowe automaty np. i nowe resetowanie automatow. I tak troche to usprawnilem bo wczesniej nie bylo funkcji resetAutomations
tylko byly kolejne ladowanei warunkow cos jak w automations
ale i tak wydaje mi sie to zbyt dluga metoda przy onclick.
Najwiekszy problem jaki widze, to ze kazda czesc kodu, ktora mozna podzielic na pewne fragmenty jest zalezna od parametrow ktora wystepuja na gorze do obliczenia, jak pobierzemy index przy onclick i musialbym rowniez z nich korzystac przy kazdym obliczeniu powiedzmy tych 3 fragmentow, bo moglbym podzielic ten kod na 3 fragmenty zalozmy i musialbym do kazdych tych potencjalnych 3 funkcji wpychac te wszystkie parametry (a moze byc ich sporo), nie wiem czy jest to problem, ktorym powinienem sie martwic, ale tak to widze. Robienie kolejnych dodatkowych funkcji, tylko po to zeby latwiej sie czytalo ta metode tak naprawde, zeby nie byla taka wielka.
Nie wiem jak ugryzc takie ciezke metody. Ma ktos moze sprawdzone metody jak sobie radzic z takimi rzeczami ?