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.

Quadratic AI

Quadratic AI – The Spreadsheet with AI, Code, and Connections

  • AI-Powered Insights: Ask questions in plain English and get instant visualizations
  • Multi-Language Support: Seamlessly switch between Python, SQL, and JavaScript in one workspace
  • Zero Setup Required: Connect to databases or drag-and-drop files straight from your browser
  • Live Collaboration: Work together in real-time, no matter where your team is located
  • Beyond Formulas: Tackle complex analysis that traditional spreadsheets can't handle

Get started for free.

Watch The Demo 📊✨

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

If this article connected with you, consider tapping ❤️ or leaving a brief comment to share your thoughts!

Okay