RailsConf 2014 - All the Little Things by Sandi Metz
-
0:01 - 0:17(musica de jazz)
-
0:17 - 0:20Sandi: Então você pensaria que escrever
-
0:20 - 0:23código orientado a objetos
fosse difícil. -
0:23 - 0:27Tudo que precisa fazer é
olhas nossos apps, certo? -
0:27 - 0:30Temos boas intenções,
e quase sempre escrevemos -
0:30 - 0:35códigos que podemos vir a
odiar. -
0:35 - 0:37E quando mais eu penso
nisso, vejo que, -
0:37 - 0:39meu trabalho é pensar em
como escrever código melhor. -
0:39 - 0:43E quanto mais penso,
mais acho que -
0:43 - 0:47todos os problemas, tem uma
mesma solução simples -
0:47 - 0:49e agora quando pessoas me perguntam
-
0:49 - 0:51como escrever código
orientado a objetos, -
0:51 - 0:55eu dou-lhes uma pequena dica.
-
0:55 - 0:58Eu digo "criar coisas menores", é só isso.
-
0:58 - 1:01Criar classes menores, métodos menores,
-
1:01 - 1:05e deixar-lhes saber o mínimo possível
um sobre o outro. -
1:05 - 1:07E ultimamente estou em uma missão
-
1:07 - 1:08Tenho tido essa obsessão
nos últimos meses, -
1:08 - 1:10e é sobre condicionais.
-
1:10 - 1:11Tem muito código por aí
-
1:11 - 1:13com condicionais feios nele,
-
1:13 - 1:16e ando me questionando
quando eu deveria substituir -
1:16 - 1:18trocar condicionais por objetos pequenos
-
1:18 - 1:20e como eu deveria fazer isso
-
1:20 - 1:23e o que aconteceria com meu código
se eu fizesse isso. -
1:23 - 1:24Eu estava muito confiante
em Miami em novembro -
1:24 - 1:27e eu tive essa obsessão em Jim Weirich,
-
1:27 - 1:30quem alguns de vocês
provavelmente conheceram, -
1:30 - 1:33e ele me direcionou para o 'Gilded Rose'.
-
1:33 - 1:35Isso é um 'Kata',
aparentemente é -
1:35 - 1:37muito conhecido,
mas eu não saio muito, -
1:37 - 1:39então eu
(risos) -
1:39 - 1:41nunca tinha ouvido disso.
-
1:41 - 1:44É tão famoso que você pode
simplesmente botar no Google -
1:44 - 1:47e achar uma explicação do problema,
mas eu não fiz isso. -
1:47 - 1:48Eu queria tratar esse
problema como -
1:48 - 1:50se fosse um problema de produção mesmo,
-
1:50 - 1:52e que minha única informação
-
1:52 - 1:54fosse o teste e o código.
-
1:54 - 1:56Então eu olhei para o dele.
-
1:56 - 1:58Eu baixei o repositório dele,
-
1:58 - 1:59e olhei para o problema,
-
1:59 - 2:02e tinha tanta interesse nele
que tirei ideias -
2:02 - 2:07da minha palestra de hoje.
-
2:07 - 2:10Eu alterei o código dele só um pouco,
-
2:10 - 2:11mas só para ser
mais fácil de falar -
2:11 - 2:14Isso realmente é a 'Gilded Rose Kata',
-
2:14 - 2:15então, vamos.
-
2:15 - 2:17Tem a classe 'Gilded Rose', e essa
é a estrutura -
2:17 - 2:20Ela tem atributos para nome, qualidade
e dias restantes -
2:20 - 2:22ela initializa valores,
-
2:22 - 2:25e tem um método "tick".
-
2:25 - 2:28Agora aqui tem o método 'tick',
não, na verdade -
2:28 - 2:33isso é apenas a primeira metade dele,
aqui tem o resto. -
2:33 - 2:34Eu sei que não dá para ler isso
-
2:34 - 2:36Nem tente, mesmo se conseguir, ok?
-
2:36 - 2:37Aqui é o método inteiro.
-
2:37 - 2:39Eu só quero que vocês tenham uma ideia
-
2:39 - 2:40do tamanho e forma dele.
-
2:40 - 2:43É um 'if' de 43 linhas.
-
2:43 - 2:45E para mim isso é muito, muito difícil,
-
2:45 - 2:49mas eu sou conhecida por
ser boolean-impedida. -
2:49 - 2:50(risos)
-
2:50 - 2:52Eu sei que é subjetivo o meu senso de
quão dificil -
2:52 - 2:55de entender algo.
E isso possivelmente é errado -
2:55 - 2:57então em vez disso eu usei algumas métricas.
-
2:57 - 3:01Analisei ele usando a métrica "Flog".
-
3:01 - 3:02"Flog" é uma métrica.
Ok, o que é uma métrica? -
3:02 - 3:06Uma métrica é uma ideia "crowdsource" sobre alguma coisa.
-
3:06 - 3:10Ok? Eu tenho minha própria opinião
sobre quanto isso é complexo, -
3:10 - 3:13mas eu posso usar a sabedoria-da-multidão
dessa métrica, -
3:13 - 3:15a métrica Flog, que anota....
-
3:15 - 3:17É uma métrica ABC, então anota atribuições,
-
3:17 - 3:19'branches', e condicionais.
-
3:19 - 3:21Ela simplesmente conta coisas e soma-las.
-
3:21 - 3:22Pontuações maiores são piores.
-
3:22 - 3:24Elas indicam código mais complexo,
-
3:24 - 3:25código que vai ser mais difícil
-
3:25 - 3:27a entender e raciocinar.
-
3:27 - 3:30Então, Flog disse que a classe GildedRose registrou 50,
-
3:30 - 3:34e aquele método "tick" ganhou 45.
-
3:34 - 3:36(lamentação)
Dói, né? -
3:36 - 3:38Então Flog disse que é complicado,
-
3:38 - 3:40mas antes de continuar eu quero introduzir
-
3:40 - 3:44uma métrica muito subjetiva
sobre complexidade. -
3:44 - 3:46Então, passo muito tempo esses dias
-
3:46 - 3:51indo para lugares e olhando código
sobre qual eu não sei nada. -
3:51 - 3:53Pessoas me ligam, e vou pro escritório deles,
-
3:53 - 3:54e passo alguns dias.
-
3:54 - 3:56E como você poderia imaginar,
-
3:56 - 4:00ninguém me liga se as coisas
estão indo bem. -
4:00 - 4:02(risos)
Né? -
4:02 - 4:04E quando eu chegar, eles não me pedem
-
4:04 - 4:07para olhar o código do
qual eles tem orgulho. -
4:07 - 4:09Eles me pedem para olhar as
partes mais hediondas, -
4:09 - 4:11as coisas que tem contextos meio longos
-
4:11 - 4:14e complexos na história.
-
4:14 - 4:17Código que tem saído completamente
do controle. -
4:17 - 4:20E as explicações não são apenas
longas e confusas -
4:20 - 4:22porque o problema é difícil,
-
4:22 - 4:22mas eles fazem aquilo que
todos nós fazemos, -
4:22 - 4:25você sabe aquilo que faz quando precisa
-
4:25 - 4:26explicar um pouco de código que você escreveu
-
4:26 - 4:28de qual você tem vergonha?
-
4:28 - 4:30Você não apenas explica como funciona.
-
4:30 - 4:32Você se sente obrigado a explicar
-
4:32 - 4:35todos os motivos por ter ficado assim.
(risos) Né? -
4:35 - 4:37Podem rir. Eu faço. Eu sei que vocês
também fazem, né? -
4:37 - 4:39Simplesmente dói. Odiamos isso.
-
4:39 - 4:40Então essas explicações são longas
-
4:40 - 4:41e confusas e tem muitas
-
4:41 - 4:44informações paralelas
-
4:44 - 4:46E chega um ponto, eu entendo...
-
4:46 - 4:47mas chega um ponto durante toda
-
4:47 - 4:50explicação quando eu começo a
me sentir igual aquele cachorro, -
4:50 - 4:55Ginger, no desenho do Gary Larson.
-
4:55 - 4:56quando começa a virar "blah, blah, blah,"
-
4:56 - 4:58Sandi "blah, blah, blah"
(risos) -
4:58 - 5:00E de repente eu volto
-
5:00 - 5:02para ouvir eles dizendo
-
5:02 - 5:04então, o que você acha que
deveríamos fazer -
5:04 - 5:07sobre essa linha de código?
(risos) -
5:07 - 5:09E antigamente me assustava muito
-
5:09 - 5:11Senti como se precisasse entender tudo
-
5:11 - 5:13para poder ajudar com alguma coisa.
-
5:13 - 5:14Mas depois de algumas viagens,
-
5:14 - 5:16eu percebi que tem algo muito
-
5:16 - 5:17simples que poderia fazer para me ajudar
-
5:17 - 5:20a identificar o que eles poderiam
se beneficiar modificando. -
5:20 - 5:24Eu chamo isso do "teste vesgo".
(risos) -
5:24 - 5:26É assim que funciona:
-
5:26 - 5:29Aperte os olhos, se incline
-
5:29 - 5:31e olhe o código.
-
5:31 - 5:36Buscamos por mudanças
na forma (risos) -
5:36 - 5:40e mudanças de cor.
-
5:41 - 5:44Mudanças da forma quer dizer
que temos condicionais aninhados -
5:44 - 5:46e são difíceis de racionalizar.
-
5:46 - 5:49Mudanças de cor dizem que seu código está
-
5:49 - 5:50em níveis diferentes de abstração,
-
5:50 - 5:52e querem dizer que a história que conta
-
5:52 - 5:54vai ser difícil a seguir.
-
5:54 - 5:56Agora, o que é sobre esse código?
-
5:56 - 5:57Bem, ele tem 16 condicionais "if",
-
5:57 - 5:59algumas delas são negadas,
-
5:59 - 6:01e conectam algo com um "&",
-
6:01 - 6:02tem 3 Strings mágicos, que são usados em todo lugar,
-
6:02 - 6:05e vários números mágicos,
-
6:05 - 6:06nem sei quantos.
(risos) -
6:06 - 6:08Agora, pelo menos tem testes.
-
6:08 - 6:09Ah, desculpe, aqui são os Strings mágicos.
-
6:09 - 6:12Essas três coisas:
-
6:12 - 6:13Brie, Sulfuras, e Backstage passes,
-
6:13 - 6:18sei lá o que isso quer dizer.
-
6:18 - 6:22E tem testes e eles passam.
-
6:22 - 6:25Agora, tem seis testes pulados, certo?
(risos) -
6:25 - 6:27Então sei lá o que é isso.
-
6:27 - 6:31Então eu abro o código e só
olho esse primeiro teste. -
6:31 - 6:33Ah, desculpe, os testes são relacionados
as Strings mágicas -
6:33 - 6:34exceto desse grupo que é sobre
-
6:34 - 6:38algo que se chama "Normal",
-
6:38 - 6:40que nunca é mencionada nas condicionais.
(risos) -
6:40 - 6:41Eu suspeito que tem um "else"
-
6:41 - 6:43em algum lugar que importa, certo?
-
6:43 - 6:46Então eu abro o teste e olho nele.
-
6:46 - 6:50Aqui tem um, são todos assim.
-
6:50 - 6:52Estou vendendo algo, certo?
-
6:52 - 6:55Presumindo um GildedRose
que tem esse nome, -
6:55 - 7:00atributo e qualidade,
esses são nossos três attr_readers, -
7:00 - 7:02quando eu dou 'tick', nesse caso,
qualidade baixa por um, -
7:02 - 7:03dias sobrando baixa por um,
-
7:03 - 7:04ambos baixam por um.
-
7:04 - 7:07É como seu eu estivesse vendendo leite,
-
7:07 - 7:10ou ovos, ou queijo ou algo
que tem validade, -
7:10 - 7:13que vai expirar, onde eles
ficam ruins em alguma data. -
7:13 - 7:15Então, ainda estou explorando,
-
7:15 - 7:18ainda nem sei qual é meu trabalho,
-
7:18 - 7:23e olho para os três testes pulados,
-
7:23 - 7:23e tem algo que se chama "Conjurado",
(risos) -
7:23 - 7:25e todos seguem a mesma linha,
-
7:25 - 7:27todos os testes parecem que supondo isso
-
7:27 - 7:30quando eu dou "tick", vejo essa mudança.
-
7:30 - 7:33E agora eu percebo, caramba,
-
7:33 - 7:37eu preciso modificar esse código.
(risos) -
7:37 - 7:42Então eu tentei, eu tentei,
-
7:42 - 7:43muito obedientemente, eu tentei, mas foi uma falha miserável.
-
7:43 - 7:45Eu não consegui.
-
7:45 - 7:48Aquele condicional de 43 linhas me venceu.
-
7:48 - 7:49Toda vez que eu tentei, eu tipo abri
um teste Conjurado -
7:49 - 7:52eu fui fazer uma mudança
naquele condicional -
7:52 - 7:53para fazer o teste passar,
quebraria mais algo. -
7:53 - 7:55Gastei horas nisso.
-
7:55 - 7:57Agora, eu fui prejudicada,
mas realmente, foi difícil. -
7:57 - 7:59Seria difícil para você também, eu acho.
-
7:59 - 8:00Então, se mudar aquele condicional
-
8:00 - 8:02fosse tão difícil, você precisa perguntar,
-
8:02 - 8:03por que eu estava tentando? Por que eu tentei fazer,
-
8:03 - 8:09o que me levou a tentar alterar
-
8:09 - 8:12aquele pedação de código incrívelmente complicado.
-
8:12 - 8:14E a resposta é que me senti que eu deveria.
-
8:14 - 8:17E isso é o que acontece, né?
-
8:17 - 8:18Você escreve um código, e alguém pede uma mudança.
-
8:18 - 8:18O que nos fazemos?
-
8:18 - 8:21Você roda o código procurando
-
8:21 - 8:22um código que é parecido com
-
8:22 - 8:25a coisa nova que está tentando fazer,
-
8:25 - 8:25e você coloque o código aí.
-
8:25 - 8:28É assim que agimos.
-
8:28 - 8:31Novatos mais, eles tem medo de criar novos objetos,
-
8:31 - 8:33então eles só coloquem mais código aonde conseguem
-
8:33 - 8:34achar algo parecido com aquilo que estão tentando adicionar,
-
8:34 - 8:37e se aquele lugar já tem um "if",
-
8:37 - 8:39eles adicionam mais um galho, né?
-
8:39 - 8:40É assim que funciona.
-
8:40 - 8:41E o que acontece é, a tendência natural
-
8:41 - 8:42é que código cresce,
-
8:42 - 8:43e cresce, e cresce.
-
8:43 - 8:44E chega um ponto, né?
-
8:44 - 8:46Ele cresce, e cresce, e cresce.
-
8:46 - 8:48E chega um ponto em que vira,
-
8:48 - 8:51e naquele ponto é tão grande que
-
8:51 - 8:53você não consegue imaginar colocando código em outro lugar.
-
8:53 - 8:56
-
8:56 - 8:59
-
8:59 - 9:02
-
9:02 - 9:04
-
9:04 - 9:06
-
9:06 - 9:09
-
9:09 - 9:13
-
9:13 - 9:14
-
9:14 - 9:17
-
9:17 - 9:19
-
9:19 - 9:21
-
9:21 - 9:23
-
9:23 - 9:26
-
9:26 - 9:27
-
9:27 - 9:29
-
9:29 - 9:31
-
9:31 - 9:32
-
9:32 - 9:35
-
9:35 - 9:37
-
9:37 - 9:39
-
9:39 - 9:40
-
9:40 - 9:42
-
9:42 - 9:43
-
9:43 - 9:45
-
9:45 - 9:46
-
9:46 - 9:47
-
9:47 - 9:49
-
9:49 - 9:51
-
9:51 - 9:55
-
9:55 - 9:56
-
9:56 - 9:58
-
9:58 - 10:00
-
10:00 - 10:02
-
10:02 - 10:05
-
10:05 - 10:09
-
10:09 - 10:10
-
10:10 - 10:13
-
10:13 - 10:15
-
10:15 - 10:18
-
10:18 - 10:23
-
10:23 - 10:27
-
10:27 - 10:30
-
10:30 - 10:33
-
10:33 - 10:34
-
10:34 - 10:37
-
10:37 - 10:38
-
10:38 - 10:42
-
10:42 - 10:45
-
10:45 - 10:48
-
10:48 - 10:52
-
10:52 - 10:55
-
10:55 - 10:56
-
10:56 - 10:59
-
10:59 - 11:03
-
11:03 - 11:07
-
11:07 - 11:11
-
11:11 - 11:13
-
11:13 - 11:15
-
11:15 - 11:18
-
11:18 - 11:20
-
11:20 - 11:25
-
11:25 - 11:27
-
11:27 - 11:29
-
11:29 - 11:30
-
11:30 - 11:33
-
11:33 - 11:38
-
11:38 - 11:40
-
11:40 - 11:42
-
11:42 - 11:46
-
11:46 - 11:49
-
11:49 - 11:52
-
11:52 - 11:54
-
11:54 - 11:56
-
11:56 - 11:59
-
11:59 - 12:03
-
12:03 - 12:06
-
12:06 - 12:06
-
12:06 - 12:08
-
12:08 - 12:11
-
12:11 - 12:14
-
12:14 - 12:14
-
12:14 - 12:18
-
12:18 - 12:21
-
12:21 - 12:22
-
12:22 - 12:25
-
12:25 - 12:26
-
12:26 - 12:29
-
12:29 - 12:31
-
12:31 - 12:33
-
12:33 - 12:34
-
12:34 - 12:36
-
12:36 - 12:37
-
12:37 - 12:40
-
12:40 - 12:42
-
12:42 - 12:44
-
12:44 - 12:47
-
12:47 - 12:48
-
12:48 - 12:51
-
12:51 - 12:53
-
12:53 - 12:57
-
12:57 - 12:58
-
12:58 - 13:01
-
13:01 - 13:03
-
13:03 - 13:04
-
13:04 - 13:06
-
13:06 - 13:09
-
13:09 - 13:10
-
13:10 - 13:12
-
13:12 - 13:14
-
13:14 - 13:17
-
13:17 - 13:19
-
13:19 - 13:21
-
13:21 - 13:22
-
13:22 - 13:23
-
13:23 - 13:25
-
13:25 - 13:27
-
13:27 - 13:29
-
13:29 - 13:30
-
13:30 - 13:32
-
13:32 - 13:34
-
13:34 - 13:35
-
13:35 - 13:37
-
13:37 - 13:39
-
13:39 - 13:42
-
13:42 - 13:43
-
13:43 - 13:44
-
13:44 - 13:45
-
13:45 - 13:49
-
13:49 - 13:50
-
13:50 - 13:53
-
13:53 - 13:56
-
13:56 - 14:00
-
14:00 - 14:01
-
14:01 - 14:02
-
14:02 - 14:07
-
14:07 - 14:10
-
14:10 - 14:13
-
14:13 - 14:15
-
14:15 - 14:17
-
14:17 - 14:19
-
14:19 - 14:22
-
14:22 - 14:24
-
14:24 - 14:26
-
14:26 - 14:28
-
14:28 - 14:30
-
14:30 - 14:31
-
14:31 - 14:34
-
14:34 - 14:36
-
14:36 - 14:38
-
14:38 - 14:40
-
14:40 - 14:43
-
14:43 - 14:44
-
14:44 - 14:48
-
14:48 - 14:51
-
14:51 - 14:53
-
14:53 - 14:57
-
14:57 - 15:00
-
15:00 - 15:01
-
15:01 - 15:03
-
15:03 - 15:06
-
15:06 - 15:09
-
15:09 - 15:11
-
15:11 - 15:14
-
15:14 - 15:15
-
15:15 - 15:21
-
15:21 - 15:23
-
15:23 - 15:25
-
15:25 - 15:26
-
15:26 - 15:30
-
15:30 - 15:32
-
15:32 - 15:34
-
15:34 - 15:35
-
15:35 - 15:37
-
15:37 - 15:38
-
15:38 - 15:40
-
15:40 - 15:43
-
15:43 - 15:46
-
15:46 - 15:47
-
15:47 - 15:49
-
15:49 - 15:50
-
15:50 - 15:52
-
15:52 - 15:54
-
15:54 - 15:57
-
15:57 - 16:00
-
16:00 - 16:01
-
16:01 - 16:03
-
16:03 - 16:06
-
16:06 - 16:12
-
16:12 - 16:14
-
16:14 - 16:15
-
16:15 - 16:17
-
16:17 - 16:18
-
16:18 - 16:21
-
16:21 - 16:22
-
16:22 - 16:23
-
16:23 - 16:26
-
16:26 - 16:31
-
16:31 - 16:34
-
16:34 - 16:35
-
16:35 - 16:37
-
16:37 - 16:39
-
16:39 - 16:42
-
16:42 - 16:44
-
16:44 - 16:47
-
16:47 - 16:48
-
16:48 - 16:51
-
16:51 - 16:53
-
16:53 - 16:56
-
16:56 - 16:57
-
16:57 - 17:00
-
17:00 - 17:03
-
17:03 - 17:07
-
17:07 - 17:12
-
17:12 - 17:14
-
17:14 - 17:15
-
17:15 - 17:16
-
17:16 - 17:19
-
17:19 - 17:21
-
17:21 - 17:25
-
17:25 - 17:28
-
17:28 - 17:29
-
17:29 - 17:32
-
17:32 - 17:32
-
17:32 - 17:35
-
17:35 - 17:37
-
17:37 - 17:40
-
17:40 - 17:41
-
17:41 - 17:42
-
17:42 - 17:44
-
17:44 - 17:45
-
17:45 - 17:48
-
17:48 - 17:49
-
17:49 - 17:52
-
17:52 - 17:52
-
17:52 - 17:54
-
17:54 - 17:55
-
17:55 - 17:57
-
17:57 - 17:58
-
17:58 - 18:02
-
18:02 - 18:04
-
18:04 - 18:07
-
18:07 - 18:08
-
18:08 - 18:11
-
18:11 - 18:15
-
18:15 - 18:18
-
18:18 - 18:21
-
18:21 - 18:23
-
18:23 - 18:26
-
18:26 - 18:28
-
18:28 - 18:31
-
18:31 - 18:33
-
18:33 - 18:33
-
18:33 - 18:37
-
18:37 - 18:40
-
18:40 - 18:41
-
18:41 - 18:44
-
18:44 - 18:46
-
18:46 - 18:47
-
18:47 - 18:49
-
18:49 - 18:51
-
18:51 - 18:53
-
18:53 - 18:54
-
18:54 - 18:56
-
18:56 - 18:59
-
18:59 - 19:00
-
19:00 - 19:03
-
19:03 - 19:06
-
19:06 - 19:10
-
19:10 - 19:15
-
19:15 - 19:17
-
19:17 - 19:20
-
19:20 - 19:22
-
19:22 - 19:24
-
19:24 - 19:26
-
19:26 - 19:29
-
19:29 - 19:32
-
19:32 - 19:35
-
19:35 - 19:36
-
19:36 - 19:39
-
19:39 - 19:44
-
19:44 - 19:49
-
19:49 - 19:51
-
19:51 - 19:53
-
19:53 - 19:55
-
19:55 - 20:00
-
20:00 - 20:03
-
20:03 - 20:04
-
20:04 - 20:06
-
20:06 - 20:08
-
20:08 - 20:10
-
20:10 - 20:14
-
20:14 - 20:18
-
20:18 - 20:21
-
20:21 - 20:24
-
20:24 - 20:27
-
20:27 - 20:30
-
20:30 - 20:34
-
20:34 - 20:38
-
20:38 - 20:39
-
20:39 - 20:43
-
20:43 - 20:46
-
20:46 - 20:48
-
20:48 - 20:49
-
20:49 - 20:52
-
20:52 - 20:55
-
20:55 - 20:58
-
20:58 - 21:01
-
21:01 - 21:04
-
21:04 - 21:05
-
21:05 - 21:07
-
21:07 - 21:11
-
21:11 - 21:13
-
21:13 - 21:15
-
21:15 - 21:19
-
21:19 - 21:20
-
21:20 - 21:23
-
21:23 - 21:25
-
21:25 - 21:27
-
21:27 - 21:31
-
21:31 - 21:34
-
21:34 - 21:36
-
21:36 - 21:37
-
21:37 - 21:40
-
21:40 - 21:43
-
21:43 - 21:45
-
21:45 - 21:47
-
21:47 - 21:53
-
21:53 - 21:56
-
21:56 - 21:58
-
21:58 - 22:01
-
22:01 - 22:02
-
22:02 - 22:04
-
22:04 - 22:07
-
22:07 - 22:09
-
22:09 - 22:11
-
22:11 - 22:13
-
22:13 - 22:15
-
22:15 - 22:16
-
22:16 - 22:18
-
22:18 - 22:21
-
22:21 - 22:23
-
22:23 - 22:25
-
22:25 - 22:28
-
22:28 - 22:30
-
22:30 - 22:35
-
22:35 - 22:37
-
22:37 - 22:38
-
22:38 - 22:40
-
22:40 - 22:43
-
22:43 - 22:46
-
22:46 - 22:48
-
22:48 - 22:51
-
22:51 - 22:53
-
22:53 - 22:54
-
22:54 - 22:57
-
22:57 - 22:58
-
22:58 - 23:00
-
23:00 - 23:02
-
23:02 - 23:06
-
23:06 - 23:07
-
23:07 - 23:10
-
23:10 - 23:13
-
23:13 - 23:15
-
23:15 - 23:16
-
23:16 - 23:19
-
23:19 - 23:21
-
23:21 - 23:25
-
23:25 - 23:27
-
23:27 - 23:30
-
23:30 - 23:32
-
23:32 - 23:35
-
23:35 - 23:37
-
23:37 - 23:38
-
23:38 - 23:40
-
23:40 - 23:42
-
23:42 - 23:43
-
23:43 - 23:45
-
23:45 - 23:48
-
23:48 - 23:49
-
23:49 - 23:51
-
23:51 - 23:53
-
23:53 - 23:57
-
23:57 - 23:59
-
23:59 - 24:02
-
24:02 - 24:04
-
24:04 - 24:07
-
24:07 - 24:09
-
24:09 - 24:11
-
24:11 - 24:12
-
24:12 - 24:14
-
24:14 - 24:17
-
24:17 - 24:18
-
24:18 - 24:20
-
24:20 - 24:21
-
24:21 - 24:23
-
24:23 - 24:25
-
24:25 - 24:29
-
24:29 - 24:33
-
24:33 - 24:35
-
24:35 - 24:36
-
24:36 - 24:37
-
24:37 - 24:39
-
24:39 - 24:42
-
24:42 - 24:43
-
24:43 - 24:45
-
24:45 - 24:48
-
24:48 - 24:49
-
24:49 - 24:51
-
24:51 - 24:52
-
24:52 - 24:54
-
24:54 - 24:58
-
24:58 - 25:00
-
25:00 - 25:01
-
25:01 - 25:03
-
25:03 - 25:06
-
25:06 - 25:07
-
25:07 - 25:09
-
25:09 - 25:11
-
25:11 - 25:16
-
25:16 - 25:21
-
25:21 - 25:23
-
25:23 - 25:27
-
25:27 - 25:28
-
25:28 - 25:30
-
25:30 - 25:31
-
25:31 - 25:34
-
25:34 - 25:37
-
25:37 - 25:39
-
25:39 - 25:41
-
25:41 - 25:45
-
25:45 - 25:47
-
25:47 - 25:48
-
25:48 - 25:50
-
25:50 - 25:52
-
25:52 - 25:55
-
25:55 - 25:57
-
25:57 - 26:00
-
26:00 - 26:02
-
26:02 - 26:05
-
26:05 - 26:06
-
26:06 - 26:07
-
26:07 - 26:10
-
26:10 - 26:12
-
26:12 - 26:15
-
26:15 - 26:17
-
26:17 - 26:19
-
26:19 - 26:21
-
26:21 - 26:23
-
26:23 - 26:26
-
26:26 - 26:29
-
26:29 - 26:31
-
26:31 - 26:35
-
26:35 - 26:36
-
26:36 - 26:38
-
26:38 - 26:39
-
26:39 - 26:40
-
26:40 - 26:42
-
26:42 - 26:43
-
26:43 - 26:45
-
26:45 - 26:47
-
26:47 - 26:48
-
26:48 - 26:49
-
26:49 - 26:53
-
26:53 - 26:56
-
26:56 - 26:58
-
26:58 - 27:01
-
27:01 - 27:02
-
27:02 - 27:05
-
27:05 - 27:09
-
27:09 - 27:13
-
27:13 - 27:16
-
27:16 - 27:19
-
27:19 - 27:20
-
27:20 - 27:23
-
27:23 - 27:24
-
27:24 - 27:27
-
27:27 - 27:29
-
27:29 - 27:32
-
27:32 - 27:34
-
27:34 - 27:36
-
27:36 - 27:39
-
27:39 - 27:41
-
27:41 - 27:43
-
27:43 - 27:46
-
27:46 - 27:48
-
27:48 - 27:51
-
27:51 - 27:56
-
27:56 - 27:59
-
27:59 - 28:02
-
28:02 - 28:05
-
28:05 - 28:06
-
28:06 - 28:10
-
28:10 - 28:12
-
28:12 - 28:13
-
28:13 - 28:15
-
28:15 - 28:18
-
28:18 - 28:20
-
28:20 - 28:21
-
28:21 - 28:24
-
28:24 - 28:26
-
28:26 - 28:28
-
28:28 - 28:31
-
28:31 - 28:33
-
28:33 - 28:35
-
28:35 - 28:38
-
28:38 - 28:40
-
28:40 - 28:42
-
28:42 - 28:44
-
28:44 - 28:45
-
28:45 - 28:47
-
28:47 - 28:48
-
28:48 - 28:50
-
28:50 - 28:52
-
28:52 - 28:53
-
28:53 - 28:55
-
28:55 - 28:58
-
28:58 - 29:00
-
29:00 - 29:02
-
29:02 - 29:04
-
29:04 - 29:07
-
29:07 - 29:09
-
29:09 - 29:11
-
29:11 - 29:16
-
29:16 - 29:19
-
29:19 - 29:20
-
29:20 - 29:21
-
29:21 - 29:24
-
29:24 - 29:26
-
29:26 - 29:27
-
29:27 - 29:30
-
29:30 - 29:31
-
29:31 - 29:35
-
29:35 - 29:38
-
29:38 - 29:41
-
29:41 - 29:44
-
29:44 - 29:45
-
29:45 - 29:48
-
29:48 - 29:50
-
29:50 - 29:52
-
29:52 - 29:54
-
29:54 - 29:57
-
29:57 - 29:58
-
29:58 - 30:02
-
30:02 - 30:03
-
30:03 - 30:04
-
30:04 - 30:06
-
30:06 - 30:10
-
30:10 - 30:11
-
30:11 - 30:14
-
30:14 - 30:17
-
30:17 - 30:20
-
30:20 - 30:21
-
30:21 - 30:24
-
30:24 - 30:27
-
30:27 - 30:29
-
30:29 - 30:31
-
30:31 - 30:35
-
30:35 - 30:37
-
30:37 - 30:40
-
30:40 - 30:43
-
30:43 - 30:44
-
30:44 - 30:46
-
30:46 - 30:50
-
30:50 - 30:52
-
30:52 - 30:55
-
30:55 - 30:57
-
30:57 - 30:59
-
30:59 - 31:02
-
31:02 - 31:04
-
31:04 - 31:07
-
31:07 - 31:08
-
31:08 - 31:11
-
31:11 - 31:13
-
31:13 - 31:15
-
31:15 - 31:18
-
31:18 - 31:20
-
31:20 - 31:24
-
31:24 - 31:26
-
31:26 - 31:29
-
31:29 - 31:31
-
31:31 - 31:32
-
31:32 - 31:35
-
31:35 - 31:38
-
31:38 - 31:40
-
31:40 - 31:42
-
31:42 - 31:46
-
31:46 - 31:50
-
31:50 - 31:55
-
31:55 - 31:59
-
31:59 - 32:02
-
32:02 - 32:06
-
32:06 - 32:10
-
32:10 - 32:12
-
32:12 - 32:12
-
32:12 - 32:14
-
32:14 - 32:17
-
32:17 - 32:21
-
32:21 - 32:24
-
32:24 - 32:26
-
32:26 - 32:28
-
32:28 - 32:30
-
32:30 - 32:33
-
32:33 - 32:37
-
32:37 - 32:40
-
32:40 - 32:44
-
32:44 - 32:47
-
32:47 - 32:49
-
32:49 - 32:51
-
32:51 - 32:53
-
32:53 - 32:54
-
32:54 - 32:57
-
32:57 - 32:59
-
32:59 - 33:02
-
33:02 - 33:03
-
33:03 - 33:07
-
33:07 - 33:10
-
33:10 - 33:13
-
33:13 - 33:14
-
33:14 - 33:16
-
33:16 - 33:19
-
33:19 - 33:22
-
33:22 - 33:24
-
33:24 - 33:26
-
33:26 - 33:29
-
33:29 - 33:32
-
33:32 - 33:36
-
33:36 - 33:38
-
33:38 - 33:41
-
33:41 - 33:42
-
33:42 - 33:44
-
33:44 - 33:48
-
33:48 - 33:49
-
33:49 - 33:52
-
33:52 - 33:54
-
33:54 - 33:57
-
33:57 - 34:01
-
34:01 - 34:02
-
34:02 - 34:06
-
34:06 - 34:08
-
34:08 - 34:11
-
34:11 - 34:14
-
34:14 - 34:19
-
34:19 - 34:21
-
34:21 - 34:24
-
34:24 - 34:25
-
34:25 - 34:26
-
34:26 - 34:30
-
34:30 - 34:31
-
34:31 - 34:33
-
34:33 - 34:37
-
34:37 - 34:39
-
34:39 - 34:41
-
34:41 - 34:42
-
34:42 - 34:44
-
34:44 - 34:46
-
34:46 - 34:49
-
34:49 - 34:50
-
34:50 - 34:53
-
34:53 - 34:54
-
34:54 - 34:58
-
34:58 - 34:59
-
34:59 - 35:01
-
35:01 - 35:03
-
35:03 - 35:05
-
35:05 - 35:07
-
35:07 - 35:11
-
35:11 - 35:14
-
35:14 - 35:20
-
35:20 - 35:21
-
35:21 - 35:23
-
35:23 - 35:30
-
35:30 - 35:35
-
35:35 - 35:38
-
35:38 - 35:41
-
35:41 - 35:45
-
35:45 - 35:48
-
35:48 - 35:50
-
35:50 - 35:51
-
35:51 - 35:53
-
35:53 - 35:54
-
35:54 - 35:57
-
35:57 - 35:59
-
35:59 - 36:01
-
36:01 - 36:04
-
36:04 - 36:06
-
36:06 - 36:08
-
36:08 - 36:11
-
36:11 - 36:14
-
36:14 - 36:16
-
36:16 - 36:18
-
36:18 - 36:21
-
36:21 - 36:23
-
36:23 - 36:26
-
36:26 - 36:30
-
36:30 - 36:32
-
36:32 - 36:36
-
36:36 - 36:39
-
36:39 - 36:43
-
36:43 - 36:45
-
36:45 - 36:47
-
36:47 - 36:51
-
36:51 - 36:52
-
36:52 - 36:56
-
36:56 - 37:00
-
37:00 - 37:03
-
37:03 - 37:05
-
37:05 - 37:08
-
37:08 - 37:12
-
37:12 - 37:15
-
37:15 - 37:18
-
37:18 - 37:20
-
37:20 - 37:23
-
37:23 - 37:25
-
37:25 - 37:27
-
37:27 - 37:30
-
37:30 - 37:32
-
37:32 - 37:35
-
37:35 - 37:39
-
37:39 - 37:43
-
37:43 - 37:44
-
37:44 - 37:47
-
37:47 - 37:50
-
37:50 - 37:54
-
37:54 - 37:57
-
37:57 - 38:02
-
38:02 - 38:05
-
38:05 - 38:07
-
38:07 - 38:07
-
38:07 - 38:09
-
38:09 - 38:12
-
38:12 - 38:14
-
38:14 - 38:16
-
38:16 - 38:27(aplausos)
-
38:27 - 38:44
ccamilo edited Portuguese, Brazilian subtitles for RailsConf 2014 - All the Little Things by Sandi Metz | ||
ccamilo edited Portuguese, Brazilian subtitles for RailsConf 2014 - All the Little Things by Sandi Metz | ||
benlangfeld edited Portuguese, Brazilian subtitles for RailsConf 2014 - All the Little Things by Sandi Metz | ||
benlangfeld edited Portuguese, Brazilian subtitles for RailsConf 2014 - All the Little Things by Sandi Metz |