Fish Shell:
Refatoração

Como fazer:

Imagine que você possui um script que cresceu bastante com o tempo. Começou simples, mas agora é uma fera repleta de tentáculos lógicos. Aqui está um exemplo simples de refatoração de uma função para torná-la mais legível e eficiente:

Antes da refatoração:

function old_and_clunky
    set color (cat ~/.config/fish/color_theme)
    if test "$color" = 'blue'
        echo 'Tema azul ativado!'
    else if test "$color" = 'red'
        echo 'Tema vermelho ativado!'
    else
        echo 'Tema padrão ativado!'
    end
end

Depois da refatoração:

function set_theme_color
    set theme_color (cat ~/.config/fish/color_theme)
    switch $theme_color
        case blue
            echo 'Tema azul ativado!'
        case red
            echo 'Tema vermelho ativado!'
        default
            echo 'Tema padrão ativado!'
    end
end

A refatoração melhorou o nome da função para descrever melhor seu propósito e substituiu a cadeia de if-else por uma declaração switch mais limpa.

Saída de exemplo:

Tema azul ativado!

Mergulho Profundo

A Refatoração foi descrita em detalhes pela primeira vez no livro seminal de Martin Fowler “Refatoração: Melhorando o Design de Códigos Existentes”. O livro estabeleceu uma abordagem estruturada para melhorar o código sem escrever novas funcionalidades. Muitas técnicas de refatoração foram introduzidas desde então, e o conceito se tornou uma parte fundamental do desenvolvimento de software moderno.

No ambiente do Fish Shell, a refatoração pode parecer um pouco diferente do que em outros contextos de programação devido à sua sintaxe especializada e natureza de linha de comando. Alternativas para refatorar scripts em Fish podem envolver a porta para outro idioma de shell ou usar ferramentas externas para um gerenciamento de script mais avançado. No entanto, manter a sintaxe nativa do Fish geralmente significa uma melhor integração com os recursos do shell e uma experiência mais simplificada de forma geral.

Ao refatorar no Fish Shell, você está lidando principalmente com funções e comandos em vez de classes ou módulos de amplo escopo comuns em outras linguagens. Esta granularidade pode tornar a tarefa de refatoração um processo mais imediato e direto, mas também enfatiza a importância de um código claro, conciso e mantível.

Veja Também