Uma síntese de aprendizado
- #Ruby
- #RubyGems
Conceitos de Ruby
Ruby além de ser uma linguagem orientada a objetos também pode ser uma linguagem de uso funcional, imperativa e reflexiva. Por ser muito versátil e de sintaxe facilitada, acabou caindo no meu gosto pessoal. Ao longo desse artigo, irei descrever algumas percepções que tive como programadora da vida real, revisitando as bases e reaprendendo conceitos.
Como todas as linguagens mais usadas, ruby tem seus tipos de dados como:
- Integer
- Float
- Boolean
- String
- Array
Mas também tem uma coisinha que eu não lembrava e que só existe nela (até onde eu saiba)
- Symbol
Symbol em ruby é como se fosse uma constante, pode-se declarar um symbol da seguinte maneira:
:nome_symbol
Onde esse símbolo vai ter valor imutável, ou seja, não importa onde você chame o símbolo declarado, ele sempre vai existir com o mesmo valor. O que pode ser comparado a uma constante por exemplo.
Um símbolo é o objeto Ruby mais básico que você pode criar. Ele é apenas um nome e um ID interno. Símbolos são úteis porque um dado nome de símbolo se refere ao mesmo objeto através de um programa Ruby. Símbolos são mais eficientes que strings. Duas strings com o mesmo conteúdo são dois objetos diferentes, mas para qualquer nome existe apenas um objeto Symbol. Isso pode economizar tempo e memória.
- Definição encontrada em: https://guru-sp.github.io/tutorial_ruby/simbolos.html
Nesses casos, o símbolo pode ajudar a economizar memória e processamento.
Vagando um pouco mais, agora na modalidade de operadores, no ruby não temos o iterador ++ ou - - então sempre que queremos iterar uma variável, usamos:
var += 1
var =+ 1
var -= 1
var =- 1
Passando para as estruturas de controle, temos as padrões:
- IF/ELSIF/ELSE
- FOR
- WHILE
- CASE (que seria switch/case)
- DO/WHILE (que seria loop)
Temos as que são comumente abordadas em linguagens de Orientação à Objetos, como:
- EACH/DO
- MAP
- SELECT
Que fazem parte das coleções.
E temos algumas estruturas próprias do ruby (até onde sei)
- Unless
- Times
Uma que funciona como contrário de IF e outra que trabalha de forma parecida com o loop, mas sua estrutura é assim:
10.times do
puts "Olá, Mundo"
end
E repete o trecho de código enquanto não completar o ciclo definido.
Aprofundando os conhecimentos em métodos
Dentro do que o curso oferece, temos o contato com métodos e gems, que apesar de serem simples, podem se tornar um emaranhado complexo a medida que uma aplicação e desafios tomam forma.
Os métodos surgem para reutilização de trechos de código, que vão ser usados comumente em vários locais da aplicação repetidas vezes. Como esse conceito é muito comum, não irei dar enfoque nele.
Dentro desse módulo, temos as gems, que são bibliotecas com funcionalidades especificas, onde podemos incrementar nossa aplicação. Alguns exemplos:
- Validação de dados como cpf, cartão, cnpj
- Autenticação de usuários
- Painéis de administração de aplicação
- Gerar dados em massa
Entre diversas outras. Outro ponto interessante a se ressaltar é a questão de poder criar suas próprias gems, além da metaprogramação, mas isso fica para outro dia.
Agora entramos em um pilar fundamental na programação: Orientação à Objetos
Dentro do curso, adentramos no módulo III que fala de orientação à objetos, o que significa e os seus pilares.
Vale ressaltar que, como vimos na introdução deste artigo, orientação à objetos não é a única maneira de se programar.
Os 4 pilares de orientação à objetos são:
- Abstração
- Encapsulamento
- Herança
- Polimorfismo
Por mais que pareça complexo, esses assuntos são essenciais, uma vez que farão parte de toda jornada de programação.
A abstração vêm da maneira de como trazemos algo do mundo real para o código.
O encapsulamento é uma maneira de guardar esse código para segurança da aplicação e do usuário final.
A herança é uma forma de transmitir métodos e atributos que fazem parte de outras classes, entretanto é válido ressaltar que no ruby não temos múltiplas heranças.
O polimorfismo é a maneira de objetos de diferentes instâncias terem métodos com mesmo nome e comportamentos completamente diferentes, ou um mesmo método seja adaptado de diferentes formas para cada objeto instanciado.
Dentro disso, chegamos ao fim da jornada de Ruby básico, com alguns projetos implementados e muitos desafios realizados, que realmente testaram meu conhecimento e vontade de saber. Lendo fóruns, documentações, revisando códigos para fazer de uma maneira bem estruturada e legível, além do uso de ferramentas externas que me ajudaram a compreender os assuntos.
Vou ficando por aqui, até uma próxima vez.