Boas Práticas em Rails
@fabioperrella - github.com/fabioperrella
@cruzguilherm - github.com/guicruzzs
Boas práticas de código
● Design Patterns - O que são, e como podem nos ajudar?
● DRY, KISS (entre classes, inclusive)
● Arquivos, classes e métodos que representem exatamente aquilo que fazem
ou são
● Não use abreviaturas, nem suprima as vogais de suas variáveis, métodos,
classes…
● Dê preferência para nomes em inglês no seu código (talvez 100% de inglês)
Boas práticas de código
● Não deixe comentários do código explicando o que o método faz, prefira o
código auto explicativo
● Não largue códigos comentados, podemos usar o git para recuperar o que foi
apagado (GIT amigo =])
● Tenha sua aplicação sob controle de falhas, não se esqueça do begin rescue
(mas não “esconda” as exceptions”)
● Não usar GEMs para coisas simples pois pode dificultar um upgrade de
versão do Rails
MVC
● Controllers sem lógica, só devem delegar, renderizar, redirect, etc
● Modelos com validações, relacionamentos, sem muita lógica
● Classes “puras” de serviço para tirar lógica dos modelos e controllers
Views
● Usar I18n para todos os textos utilizados nos modelos, controllers, views e
JSs
● Helpers de HTML facilitam a vida
● Uso de presenters para tirar lógica das views
● Partials (DRY)
Banco de Dados
● Não editar migração que já foi enviada pro repositório, criar outra migração
● Utilizar Transactions em operações que podem gerar inconsistências.
● Evite apagar os registros do seu banco (pense na consistência dos dados e
na investigação de um problema)
● Cuidado ao sobrescrever as querys do ActiveRecord (SQL injection)
● Não use SQLite nos testes e desenvolvimento, use o mesmo database que
irá usar em produção se possível (já tive problemas com isso)
Rotas
● Usar resources, member e collection nas rotas ao invés de fazer a rota “na
mão”
● Na dúvida, use o rake routes pra te mostrar as rotas do projeto (é mais uma
dica do que boa prática)
Ambiente de Desenvolvimento
● Criar o arquivo .ruby-version na raiz do projeto para todos saberem qual a
versão de ruby deve ser usada (usar RVM ou Rbenv)
● Crie uma rake do tipo devsetup para criar dados no banco que facilite subir o
ambiente de dev rápido
● Escreva o README do seu projeto (instruções de instalação e uso), se
alguém quiser colaborar com você, as dúvidas de setup precisam ter as
respostas lá dentro.
Deploy
● Entenda como funciona o assets pipeline e use-o direito (com isso vai evitar
problemas de cache nos deploys)
● Use o GOD (ou algo parecido) para monitorar os processos
E agora, José?
● Não se preocupem se não acertarem de primeira, consciência é o mais
importante
● Você é responsável pelo que escreve
● Ler código de outras pessoas para aprender github.com (usem e abusem do
que já foi feito)
● Acompanhar newsletter Ruby Weekly (rubyweekly.com)
● Escutar podcasts (ex: https://devchat.tv/ruby-rogues, grokpodcast.com)
● Ler livros técnicos (Practical Object-Oriented Design in Ruby, Clean Code,
etc..)
E agora, José?
Não parem, contínuo é o aprendizado!
Dúvidas?
Boas Práticas em Rails
Fábio Perrella
Guilherme Cruz
Obrigado!!!

Mais conteúdo relacionado

PDF
Refatoração de Código Legado
PPTX
Durable functionsmvp conf2020
PPTX
Estudos Technocorp
PPTX
Automatizando seus testes com robot framework
PDF
Java não é tão difícil quanto parece
PPTX
Testes de integração em microservices
PDF
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
Refatoração de Código Legado
Durable functionsmvp conf2020
Estudos Technocorp
Automatizando seus testes com robot framework
Java não é tão difícil quanto parece
Testes de integração em microservices
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...

Mais procurados (20)

PDF
40 php orientado a objetos
PPT
Apresentação - Uniararas - JEE e Desenvolvimento Ágil
PDF
Piadas de CSS e Javascript
PDF
Por que testar é importante e algumas boas práticas
PPT
Introdução ao framework Django
PDF
Django - A sua cápsula de soluções web em python
PPTX
Unit Testing
PPTX
Começando errado com php
PDF
Tunning jvm em java 8
PDF
POG nunca mais - SOLISC
PDF
Django Channels - Aplicações real time com Django
PDF
Mutant Testing: um mundo para um X-Testing.
PDF
In tests we trust: começando com TDD, mocks e mais
ZIP
Python e Django na Globo.com
PDF
Zend Framework Estrutura e TDD
PDF
MindMaps ajudando planejar meus testes no mundo Agile
PDF
Clean code
PDF
PHP de alta performance com RoadRunner
PDF
Feature injection - descobrindo e entregando valor testável
PDF
Mock it with mockito
40 php orientado a objetos
Apresentação - Uniararas - JEE e Desenvolvimento Ágil
Piadas de CSS e Javascript
Por que testar é importante e algumas boas práticas
Introdução ao framework Django
Django - A sua cápsula de soluções web em python
Unit Testing
Começando errado com php
Tunning jvm em java 8
POG nunca mais - SOLISC
Django Channels - Aplicações real time com Django
Mutant Testing: um mundo para um X-Testing.
In tests we trust: começando com TDD, mocks e mais
Python e Django na Globo.com
Zend Framework Estrutura e TDD
MindMaps ajudando planejar meus testes no mundo Agile
Clean code
PHP de alta performance com RoadRunner
Feature injection - descobrindo e entregando valor testável
Mock it with mockito
Anúncio

Destaque (20)

PDF
Deixando o codigo_mais_amigavel_para_as_proximas_geracoes
PDF
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
PDF
Ruby profiling
PDF
Coisas que aprendemos usando Mongoid com grande quantidade de dados
PDF
PDF
Map uk
PPTX
A Sound of Change
PDF
Sping
PDF
Health Prom for participants 1114
DOCX
Aprendizaje Basado en Proyectos (Baracco-Oro)
PDF
Lord's player
PPTX
Representation of sexuality
PDF
British transports
PDF
No sql e as vantagens na utilização do mongodb
PDF
Efficient rails
PDF
Rattan Furniture and technical Innovation in China
PPTX
TOTAL QUALITY MANAGEMENT presentation
PPTX
Oral Defense Powerpoint Presentation
PPT
Human body its system
Deixando o codigo_mais_amigavel_para_as_proximas_geracoes
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
Ruby profiling
Coisas que aprendemos usando Mongoid com grande quantidade de dados
Map uk
A Sound of Change
Sping
Health Prom for participants 1114
Aprendizaje Basado en Proyectos (Baracco-Oro)
Lord's player
Representation of sexuality
British transports
No sql e as vantagens na utilização do mongodb
Efficient rails
Rattan Furniture and technical Innovation in China
TOTAL QUALITY MANAGEMENT presentation
Oral Defense Powerpoint Presentation
Human body its system
Anúncio

Semelhante a [Campus code] Boas práticas em Rails (20)

PDF
Apresentação jasmine
PDF
Arquitetura em camadas em python e quanto isso pode ajudar
PDF
Esta começando a programar para a web? Então começe com Rails
PPS
Automação de testes para equipes agile
KEY
Django - Desenvolvimento web ágil com Python
PDF
Java Primeiros Passos - Cap 7
ODP
Fazendo Um Elefante Passar Debaixo da Porta - CONSEGI
PDF
O que move a web atualmente?
PDF
Programação Orientada a Aspectos
PDF
Test day 2012
PPTX
Perfis de instalação e distribuições no drupal
PPT
Mini-curso RoR - Aula 01
PDF
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
PDF
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
PDF
Boas práticas no desenvolvimento de software
PDF
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
PPTX
Code Smells
PDF
Drupal e a Qualidade de Software
PPTX
JAVA - Tipos de dados. - Operadores e prioridades; - Tipo variáveis; Definiçã...
Apresentação jasmine
Arquitetura em camadas em python e quanto isso pode ajudar
Esta começando a programar para a web? Então começe com Rails
Automação de testes para equipes agile
Django - Desenvolvimento web ágil com Python
Java Primeiros Passos - Cap 7
Fazendo Um Elefante Passar Debaixo da Porta - CONSEGI
O que move a web atualmente?
Programação Orientada a Aspectos
Test day 2012
Perfis de instalação e distribuições no drupal
Mini-curso RoR - Aula 01
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Boas práticas no desenvolvimento de software
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
Code Smells
Drupal e a Qualidade de Software
JAVA - Tipos de dados. - Operadores e prioridades; - Tipo variáveis; Definiçã...

[Campus code] Boas práticas em Rails

  • 1. Boas Práticas em Rails @fabioperrella - github.com/fabioperrella @cruzguilherm - github.com/guicruzzs
  • 2. Boas práticas de código ● Design Patterns - O que são, e como podem nos ajudar? ● DRY, KISS (entre classes, inclusive) ● Arquivos, classes e métodos que representem exatamente aquilo que fazem ou são ● Não use abreviaturas, nem suprima as vogais de suas variáveis, métodos, classes… ● Dê preferência para nomes em inglês no seu código (talvez 100% de inglês)
  • 3. Boas práticas de código ● Não deixe comentários do código explicando o que o método faz, prefira o código auto explicativo ● Não largue códigos comentados, podemos usar o git para recuperar o que foi apagado (GIT amigo =]) ● Tenha sua aplicação sob controle de falhas, não se esqueça do begin rescue (mas não “esconda” as exceptions”) ● Não usar GEMs para coisas simples pois pode dificultar um upgrade de versão do Rails
  • 4. MVC ● Controllers sem lógica, só devem delegar, renderizar, redirect, etc ● Modelos com validações, relacionamentos, sem muita lógica ● Classes “puras” de serviço para tirar lógica dos modelos e controllers
  • 5. Views ● Usar I18n para todos os textos utilizados nos modelos, controllers, views e JSs ● Helpers de HTML facilitam a vida ● Uso de presenters para tirar lógica das views ● Partials (DRY)
  • 6. Banco de Dados ● Não editar migração que já foi enviada pro repositório, criar outra migração ● Utilizar Transactions em operações que podem gerar inconsistências. ● Evite apagar os registros do seu banco (pense na consistência dos dados e na investigação de um problema) ● Cuidado ao sobrescrever as querys do ActiveRecord (SQL injection) ● Não use SQLite nos testes e desenvolvimento, use o mesmo database que irá usar em produção se possível (já tive problemas com isso)
  • 7. Rotas ● Usar resources, member e collection nas rotas ao invés de fazer a rota “na mão” ● Na dúvida, use o rake routes pra te mostrar as rotas do projeto (é mais uma dica do que boa prática)
  • 8. Ambiente de Desenvolvimento ● Criar o arquivo .ruby-version na raiz do projeto para todos saberem qual a versão de ruby deve ser usada (usar RVM ou Rbenv) ● Crie uma rake do tipo devsetup para criar dados no banco que facilite subir o ambiente de dev rápido ● Escreva o README do seu projeto (instruções de instalação e uso), se alguém quiser colaborar com você, as dúvidas de setup precisam ter as respostas lá dentro.
  • 9. Deploy ● Entenda como funciona o assets pipeline e use-o direito (com isso vai evitar problemas de cache nos deploys) ● Use o GOD (ou algo parecido) para monitorar os processos
  • 10. E agora, José? ● Não se preocupem se não acertarem de primeira, consciência é o mais importante ● Você é responsável pelo que escreve ● Ler código de outras pessoas para aprender github.com (usem e abusem do que já foi feito) ● Acompanhar newsletter Ruby Weekly (rubyweekly.com) ● Escutar podcasts (ex: https://devchat.tv/ruby-rogues, grokpodcast.com) ● Ler livros técnicos (Practical Object-Oriented Design in Ruby, Clean Code, etc..)
  • 11. E agora, José? Não parem, contínuo é o aprendizado!
  • 13. Boas Práticas em Rails Fábio Perrella Guilherme Cruz Obrigado!!!