Skip to content

Remover definição de variáveis vazias

Problema

Atualmente, variáveis "indefinidas" no código estão sendo passadas como "None" e sua checagem feita a partir disso:

  • main.nf:

if (params.prefix == "None") {...

  • modules/basecall.nf:

...${barcoding_kit != "None" ? "--kit-name ${barcoding_kit}" : ""}...

Isso gera 3 problemas:

Redundância na checagem

Caso queiramos checar se uma variável foi definida, precisamos não só checar se ela foi chamada na definição, o que é feito com: if(params.var == null), mas também checar se ela foi definida, mas definida com "None". O que levaria toda checagem completa a se tornar: if(params.prefix != null && params.prefix != "None"). Quando ela poderia simplesmente não ser definida, levando a dificuldade de checagem como vista em #2.

Dificuldade de interpretação para o usuário

Caso uma variável seja insignificante para o usuário, ele não deveria precisar definir ela com "None". Remover isso torna o sistema mais intuitivo e menos sucetível a erros (caso o usuário escreva "none" ao invés de "None", por exemplo).

Imprevisibilidade do sistema de tipos

Fazer com que uma variável de tipo inteiro seja definida como uma string "None" faz com que nunca se saiba o tipo de uma variável em um primeiro momento. Parâmetros com tipo null podem ser checados e, se for o caso, podem ser definidos com valores padrões dentro do arquivo do workflow, facilitando o debugging e a legibilidade do código.

Por exemplo:

workflow {
    if(params.nome != null) {
        println "Bom dia, senhor " + params.nome
    } else {
        println "Bom dia, senhor"
    }
}

Poderia ser:

params.nome = ""

workflow {
    println "Bom dia, senhor " + params.nome
}

Solução

  • Remover testes de "None" (ou substituir por testes de null)
  • Remover definição de "None" dentro de arquivos de parâmetro e configuração