#Help Me Refactor This Massively Nested Function

7 messages · Page 1 of 1 (latest)

dense vine
#

Sending the actual function in the next message because discord.
Not urgent but I'd love to hear other people's opinions.

pub fn listen_for_update_affected_entities_after_timer_birth_requests<T: Numeric>(
    mut event_reader: EventReader<UpdateAffectedEntitiesAfterTimerBirth>,
    mut remove_from_timer_entities_writer: EventWriter<RemoveFromTimerAffectedEntities>,
    mut affected_by_timer_query: Query<&mut AffectingTimerCalculators>,
    timer_calculators: Query<&GoingEventValueCalculator<T>>,
    emitting_timers: Query<&EmittingTimer>,
    mut commands: Commands,
) {

}
```
#
        let newborn_timer_entity = affected_entities_update_request.newborn_timer_entity;
        let newborn_timer = affected_entities_update_request.newborn_timer;
        for timer_affected_entity in newborn_timer.affected_entities.iter() {
            if let Some(value_calculator_entity) = timer_affected_entity.value_calculator_entity {
                if let Ok(value_calculator) = timer_calculators.get(value_calculator_entity) {
                    match affected_by_timer_query.get_mut(timer_affected_entity.affected_entity) {
                        Ok(mut affecting_timer_calculators) => {
                            set_active_calculator_and_destroy_inactive(
                                &mut remove_from_timer_entities_writer,
                                &mut affecting_timer_calculators,
                                TimerAndCalculator {
                                    timer: newborn_timer_entity,
                                    value_calculator: value_calculator_entity,
                                },
                                value_calculator,
                                &emitting_timers,
                                &mut commands,
                            );
                        }
                        Err(_) => print_warning(
                            EntityError::EntityNotInQuery(
                                "couldn't find entity in affecting timers component query upon timer firing",
                            ),
                            vec![LogCategory::RequestNotFulfilled, LogCategory::Time],
                        ),
                    }
                }
            }
        }
    }```
ionic apex
#

you could replace those if let with let else { continue }

dense vine
dense vine
#

omg this is a life changer

#

@ionic apex thank you

#

I umm
I don't know which way I like better looking at it all now
Might get some time to get used to