este es mi código y quiero dividirlo en función múltiple (¡código limpio!), para estas dos secciones (status===edited) y (status === added) o dos funciones diferentes para (dataindex===ReportEffectiveDate) y (dataindex=== EffectiveDate) . ¿Cómo puedo poner estas declaraciones if else en una function separada? Entonces uso esta función para cada estado. Totalmente, quiero saber de qué manera es mejor: ¿uso múltiples if y else if o uso múltiples function para este código? ¡Gracias por tu ayuda!
function handleTableRowChange(record: LoadModel, oldValue: any, newValue: any, dataIndex: string) { console.log(record, oldValue, newValue, dataIndex); const status: RowStatus = tableStore.getRowStatus(record); if (!!newValue) { if (dataIndex === 'ReportEffectiveDate') { if (record.EffectiveDate > record.ReportEffectiveDate) { record.EffectiveDate = null; tableStore.update(record); Modal.error({ content: translate('ReportEffectiveDatecantbelessthanoldeffectivedate'), }); console.log('error'); } else if (record.EffectiveDate == record.ReportEffectiveDate) { record.ReportEffectiveDate = null; tableStore.update(record); } } if (dataIndex === 'EffectiveDate') { if (status === 'added') { const isValid: boolean = checkIsEffectiveDateValid(record); if (!isValid) { record.EffectiveDate = null; tableStore.update(record); } } else if (status === 'edited') { const maxEffectiveDateRecord: LoadModel = getMaxEffectiveDateRecord(record); if (record.EffectiveDate > maxEffectiveDateRecord.EffectiveDate) { if (newValue < maxEffectiveDateRecord.EffectiveDate) { record.EffectiveDate = oldValue; tableStore.update(record); } } } } } }Todavía tendrá que agregar cheques para ver a qué llamar. Puede dividir las cosas en una función y llamarla. Podría ser simple usar un interruptor
function handleTableRowChange(........) { .......... switch (dataIndex) { case 'ReportEffectiveDate': reportEffectiveDateFunction(record); break; case 'EffectiveDate': effectiveDateFunction(record); break; case 'edited': editedFunction(record); break; } }Otra opción es usar un objeto o clase con los métodos
const processingFunctions = { ReportEffectiveDate: (report) => { console.log('ReportEffectiveDate', report); }, EffectiveDate: (report) => { console.log('EffectiveDate', report); }, edited: (report) => { console.log('edited', report); }, } function handleTableRowChange(........) { .......... const action = processingFunctions[dataIndex]; if (action) { action(report); } else { // no command found.... } }Parece que estás usando TypeScript... Como cualquier lenguaje similar a OOP, en realidad puedes llevarlo un nivel más alto y definir una interface .
En aras de la legibilidad, recomendaría usar funciones dentro de if-else-if-if... o cambiar a declaraciones de case . Mover el código a las funciones ayuda con la capacidad de mantenimiento a medida que cambia la función en sí, y no cambiará la parte del código si no, menos cambios de código, menos errores.