Simplificar redundâncias em comparações
Problema
Diversos pontos do código realizam alguns tipos de redundância na checagem, diminuindo a legibilidade do código e dificultando o debugging ao tornar o tipo de variáveis ambíguo. Exemplos de redundâncias são:
Transformam parâmetros para string para comparação ao invés de simplesmente utilizar seus valores:
main.nf
if(params.step.toString() == "1")
ao invés deif(params.step == 1)
if(params.step.toString() == "2_from_step_1")
ao invés deif(params.step == "2_from_step_1")
O passo 2 ser uma string também levanta a dúvida de por que está sendo usado steps ao invés do nome dos processos ou por que está sendo usado um nome ao invés de um número para o passo.
Checam se booleanos são booleanos:
src/FILTERING_AND_QC_FROM_MINKNOW.nf
if (params.is_barcoded == true)
ao invés deif(params.is_barcoded)
else if (params.is_barcoded == false)
ao invés deelse
Para deixar claro (mais para o @joaochrusciel), a semântica da linguagem vai fazer o seguinte com isso se a variável for true:
0:
if (params.is_barcoded == true) {
a
} else {
b
}
1:
if (true == true) {
a
} else {
b
}
2:
if (true) {
a
} else {
b
}
3:
a
E no caso do else if (params.is_barcoded == false)
, o booleano ou é verdadeiro ou é falso, não faz sentido checar se ele é falso se não é verdadeiro.
Dentre outras possíveis checagens redundantes, como em #13.
Solução
Remover as redundâncias desses trechos do código.