Skip to content

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 de if(params.step == 1)
  • if(params.step.toString() == "2_from_step_1") ao invés de if(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 de if(params.is_barcoded)
  • else if (params.is_barcoded == false) ao invés de else

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.

Edited by Nicolas Cendron