A melhor solução é aquela que minimiza a quantidade de código que você precisa escrever e, portanto, a quantidade de código que você precisa para ler para entender o que está acontecendo. Geralmente, lemos qualquer pedaço de código mais vezes do que o escrevemos, então a clareza é a qualidade mais importante do código. (Além da correção, é claro).
Em vista disso, o código em sua própria pergunta é a melhor opção.
A resposta "Come from" também é muito boa, mas o que isso significa é que é mais natural pensar na solução do problema que seu código está resolvendo. Presumivelmente, você escreveu seu código do seu jeito e não "veio da maneira", porque essa era a maneira mais natural para você pensar em resolver seu problema. Então, isso é (quase por definição eu diria) o melhor caminho.
Qualquer outra opção complicaria o seu código e para quê? a fim de evitar escrever mais algumas declarações, sejam elas if
declarações ou declarações de função.
Observe que o fato de você escrever essas instruções duas vezes não significa necessariamente que elas serão emitidas pelo compilador duas vezes, ou executadas duas vezes: fique certo de que o compilador fará o melhor para reestruturar o sistema. código emitido de modo a evitar qualquer duplicação desnecessária. (E se não puder, então haverá uma pequena duplicação. E daí?)
Essencialmente, como o compilador é livre para fazer o que quiser nos bastidores, o único objetivo restante para o seu código é explicar o que deve acontecer da maneira mais clara possível. A concisão também é um objetivo nobre, mas nunca à custa da clareza.