DEV Community

1

Organizando o código com funções

Podem existir cenários onde precisemos utilizar em nosso código varias vezes um mesmo trecho, para esses cenários a melhor solução é a criação de uma função, mas o que é uma?

Não vamos aqui nos prender tanto a teoria ou a explicar especificamente todos os termos, uma vez que a ideia é ser um conteúdo mais simples e direto, permitindo utilizar a linguagem com um entendimento razoável, por isso vou recomendar que sempre expanda o conhecimento que obter aqui com pesquisas focadas nos temas conceituais, que lhe gerarem duvida ou que achar interessante.

Seguindo, vou definir aqui como função, uma conjunto de código que podemos reutilizar e que vão fazer uma transformação especifica de dados, sem necessariamente nos dar um retorno formal.

Ok, isso pode ter ficado um pouco complicado, mas vou tentar explicar de uma outra forma.
Para exemplificar o que é uma função e como fazer ela, vamos escrever uma para validar se uma pasta existe ou não, seguindo um pouco a ideia do que vimos nos tutoriais anteriores.

Mas qual transformação vai ser feita?
Basicamente, indicaremos nela o caminho que queremos validar e com essa informação, ela fara não só a analise da existência, como vai fazer a criação caso seja necessário, ou seja, vamos criar uma função para representar o processo que desenvolvemos até aqui.

Qual a diferença entre fazer a função ou copiar o código?
Com a função, não precisaremos copiar todo aquele código para fazer esse processo, sendo preciso apenas utilizar a palavra chave dela para utilizarmos. Uma outra vantagem, é que qualquer atualização feita nela, vai refletir nos locais onde nos referimos a ela, facilitando a manutenção.

Vamos começar a escreve-la,
Para isso, precisamos entender sua estrutura, basicamente, temos um novo conceito chamado parâmetros. Nos já utilizamos ele mas não criamos algo que utilize ele.
Acredito que seja mais fácil mostrar com um código explicado, então traduzindo tudo isso em código, teremos:

# Funcao para validar as pastas
function Validar-Pasta {
param (
# Aqui definimos qual a posicao e se é obrigatorio ou nao o parametro
[parameter(position=0,Mandatory=$True)]
$Local, # Utilizamos a virgula para fazer a separacao quando utilizamos mais de um parametro
[parameter(position=1,Mandatory=$True)]
$nomePasta # O ultimo nao precisa de nada
)
# Validamos se o caminho existe, salvando a resposta em uma variavel
$pastaValidacao = Test-Path -Path "$Local/$nomePasta"
# Se ela já existe, exibimos uma mensagem de erro
if ($pastaValidacao) {
# Informamos que a pasta já existe
Clear-Host # Limpamos a tela para deixar mais bonito
Write-Host "A pasta $nomePasta já existe no caminho $Local"
}
# Se a pasta existe, executamos o bloco de codigo
else {
# Executar o comando de criação de pasta
New-Item -Path "$Local/$nomePasta" -ItemType "Directory"
# Mostrar mensagem de confirmação na tela
Clear-Host # Limpamos a tela para deixar mais bonito
Write-Host "A pasta $nomePasta foi criada em $Local"
}
}

Basicamente o que fizemos foi aproveitar nossa estrutura de validação e criação de pastas antigas e adiciona-la dentro do padrão de declaração de uma função. Essa é a estrutura, definimos o nome depois da palavra chave function e depois definimos os parâmetros que queremos que ela utilize. Fora isso, uma função lembra muito o que já fizemos até aqui.

Certo, criamos a função, mas como utilizamos ela?
É bem simples, e na verdade, já utilizamos varias funções até aqui, e até escrevemos ela com outras funções, ou seja, podemos criar um "ciclo" de reaproveitamento de código, deixando nossa solução muito modular.

Nosso novo script de criação de pastas, incluindo nossa função, agora fica assim:

# Para organizar nosso script, vamos manter as funcoes na parte de cima do codigo
# É possivel, diria até que recomendavel, que crie um modulo com as funcoes, mas isso veremos depois
# Funcao para validar as pastas
function Validar-Pasta {
param (
# Aqui definimos qual a posicao e se é obrigatorio ou nao o parametro
# O contador de posicoes comeca em 0, é importante lembrar disso
[parameter(position=0,Mandatory=$True)]
$Local, # Utilizamos a virgula para fazer a separacao quando utilizamos mais de um parametro
[parameter(position=1,Mandatory=$True)]
$nomePasta # O ultimo nao precisa de nada
)
# Validamos se o caminho existe, salvando a resposta em uma variavel
$pastaValidacao = Test-Path -Path "$Local/$nomePasta"
# Se ela já existe, exibimos uma mensagem de erro
if ($pastaValidacao) {
# Informamos que a pasta já existe
Clear-Host # Limpamos a tela para deixar mais bonito
Write-Host "A pasta $nomePasta já existe no caminho $Local"
}
# Se a pasta existe, executamos o bloco de codigo
else {
# Executar o comando de criação de pasta
New-Item -Path "$Local/$nomePasta" -ItemType "Directory"
# Mostrar mensagem de confirmação na tela
Clear-Host # Limpamos a tela para deixar mais bonito
Write-Host "A pasta $nomePasta foi criada em $Local"
}
}
# Limpamos a tela para facilitar a visualização
Clear-Host
# Receber o local e armazenar em uma variável chamada Local
$Local = Read-Host "Informe o local onde quer criar a pasta"
# Receber o nome da pasta e armazenar na variável nomePasta
$nomePasta = Read-Host "Informe um nome para a pasta"
# Agora vamos utilizar nossa funcao
Validar-Pasta $Local $nomePasta # Aqui a ordem é importante, como definimos que o primeiro seria o Local, temos que colocar primeiro ele e depois o nome da pasta

Como o exemplo é algo bem simples, pode parecer que nosso código ficou gigante sem motivo, mas para projetos maiores isso vai nos ajudar a ter um código mais limpo, de manutenção fácil e pratico de ser utilizado.

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay