Uma coisa que gosto de fazer quando tem algo complexo que quero implementar é tranformar tudo em função. Primeiro crio uma geral para a funcionalidade e depois dentro dela chamo uma função para cada coisa que eu espero que aconteça ali dentro, depois eu implemento cada uma delas e vejo o que vale a pena ficar com o código direto na original ou o que faz sentido ser implementado separadamente.
Isso me ajuda a perceber quando vale a pena me dedicar mais ou menos em alguma funcionalidade e é algo extremamente simples e rápido de fazer no geral.