Caro aluno, hoje vamos mudar a forma como você pensa sobre organizar código. Se você vem de Java, C# ou Python, você está acostumado a pensar em Classes (que guardam dados e comportamentos). Em Elixir, nós separamos isso:
Vamos construir um sistema de Avaliação Escolar do zero.
Em engenharia de software, não criamos arquivos soltos. Precisamos de uma estrutura padrão para compilação, testes e dependências. Em Elixir, essa ferramenta é o Mix.
Abra seu terminal e digite o comando abaixo. Ele vai criar a estrutura de pastas padrão da indústria.
mix new escola_elixir
cd escola_elixir
Ao rodar o comando mix new, o Elixir não cria apenas pastas aleatórias. Ele estabelece uma convenção arquitetural usada por toda a comunidade. Entender isso agora vai te salvar horas no futuro.
Abra a pasta no VS Code. Você verá:
lib/ (A Fábrica):
.ex (Elixir files).lib deve espelhar o nome dos seus módulos. Se o módulo é Escola.Financeiro.Boleto, o arquivo deve ser lib/escola/financeiro/boleto.ex.test/ (O Controle de Qualidade):
.exs (Elixir Script)..exs? Arquivos de teste não precisam ser compilados para bytecode otimizado, pois eles mudam com frequência e rodam apenas em desenvolvimento. O Elixir os interpreta em tempo de execução, o que é mais rápido para o ciclo de desenvolvimento (escreve -> testa -> reescreve).mix.exs (O Gerente do Projeto):
pom.xml (Maven/Java) ou package.json (Node.js).0.1.0), nome da app e configurações do compilador._build e deps:
deps é onde as bibliotecas baixadas ficam, e _build é onde estão os arquivos compilados (binários). Nunca commite essas pastas no Git.Se você vem de linguagens como Java, C# ou C++, provavelmente está acostumado com o conceito de Sobrecarga de Métodos (Method Overloading). Nessas linguagens, você pode ter vários métodos com o mesmo nome, e o compilador decide qual usar analisando os tipos e a quantidade de argumentos. Para o sistema, eles são variações do mesmo comportamento.
Em Elixir (e na máquina virtual Erlang/BEAM), o conceito é diferente e mais estrito. Nós chamamos de Aridade.