You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/03-code-quality/04-ninja-code/article.md
+17-17Lines changed: 17 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -105,7 +105,7 @@ Uma leitura rápida no código se torna impossível. E quando temos um erro de d
105
105
106
106
## Sinônimos inteligentes
107
107
108
-
```quote author="Confúcio"
108
+
```quote author="Lao Zi (Tao Te Ching)"
109
109
O Tao que pode ser narrado não é o Tao eterno. O nome que pode ser nomeado não é o nome eterno.
110
110
```
111
111
@@ -126,17 +126,17 @@ Por exemplo, a função `imprimePagina(pagina)` vai usar a impressora. E a funç
126
126
## Reuse nomes
127
127
128
128
```quote author="Lao Zi (Tao Te Ching)"
129
-
Mas quando ocorre a limitação
130
-
Logo surgem os nomes.
131
-
Quando os nomes surgem
129
+
Uma vez o todo dividido, as partes<br>
130
+
precisam de nomes.<br>
131
+
Já existem nomes suficientes.<br>
132
132
Deve-se então saber parar.
133
133
```
134
134
135
135
Adicione uma variável nova apenas quando for absolutamente necessário.
136
136
137
137
Ao invés disso, reuse os nomes já existentes. Apenas atribua novos valores para eles.
138
138
139
-
Em uma função tente usar apenas as funções usadas como parâmetros.
139
+
Em uma função tente apenas usar variáveis passadas como parâmetros.
140
140
141
141
Isso fará com que seja bem mais difícil identificar o que exatamente está dentro da variável *agora*. E também de onde ela vem. Uma pessoa com intuição fraca terá que analisar o código linha por linha e observar as mudanças através de cada parte do código.
142
142
@@ -156,21 +156,21 @@ function funcaoNinja(elem) {
156
156
157
157
Um colega programador que quiser trabalhar com `elem` será surpreendido na segunda metade da função... Somente durante o debug, depois de um exame do código, ele irá descobrir que estava trabalhando com um clone!
158
158
159
-
Isso é visto frequentemente em códigos. Mortalmente efetivo até mesmo com os ninjas mais experientes.
159
+
Isso é visto frequentemente em códigos. Mortalmente efetivo até mesmo contra os ninjas mais experientes.
160
160
161
161
## Sublinhas por diversão
162
162
163
-
Coloque sublinhas `_` e `__` antes dos nomes das variáveis. Como `_nome` ou `__valor`. Será melhor ainda se apenas você souber o significado disso. Ou, melhor, adicione apenas por diversão, sem um signifcado em particular. Ou significados diferentes em lugares diferentes.
163
+
Coloque sublinhas `_` e `__` antes dos nomes das variáveis. Como `_nome` ou `__valor`. Seria melhor ainda se apenas você soubesse o significado disso. Ou, melhor, adicione apenas por diversão, sem um signifcado em particular. Ou significados diferentes em lugares diferentes.
164
164
165
-
Você mata dois coelhos numa paulada só. Primeiro, o código se torna mais longo e menos legível, e segundo, um colega desenvolvedor terá que gastar um bom tempo tentando entender o que significam as sublinhas.
165
+
Você mata dois coelhos numa paulada só. Primeiro, o código se torna mais longo e menos legível, e segundo, um colega desenvolvedor pode gastar um bom tempo tentando entender o que significam as sublinhas.
166
166
167
-
Um ninja inteligente põe sublinhas em uma parte do código e evita elas em outras partes. Isso deixa o código ainda mais frágil e aumentam as chances de futuros erros.
167
+
Um ninja inteligente põe sublinhas em uma parte do código e evita elas em outras partes. Isso deixa o código ainda mais frágil e aumenta as chances de futuros erros.
168
168
169
169
## Mostre seu amor
170
170
171
-
Faça com que todos vejam a grandiosidade das suas entidades! Nomes como `superElemento`, `megaFrame` e `itemLegal` com certeza irão deixar isso bem claro para o leitor.
171
+
Faça com que todos vejam a grandiosidade das suas entidades! Nomes como `superElemento`, `megaFrame` e `itemLegal` com certeza irão iluminar um leitor.
172
172
173
-
Aliás, por um lado, algo é escrito como: `super..`, `mega..`, `legal..` Mas por outro -- isso não traz detalhe nenhum. Um leitor talvez decida procurar por um signifcado e irá meditar por uma hora ou duas.
173
+
Aliás, por um lado, algo é escrito como: `super..`, `mega..`, `legal..` Mas por outro -- isso não traz detalhe nenhum. Um leitor talvez decida procurar por um signifcado oculto e meditar por uma hora ou duas.
174
174
175
175
176
176
@@ -207,7 +207,7 @@ Existem funções que parecem que não alteram nada. Como `estaPronto()`, `checa
207
207
208
208
**Um truque ótimo é adicionar uma ação "útil" a elas, além da sua tarefa principal.**
209
209
210
-
Uma expressão de surpresa atordoada na cara dos seus colegas quando eles virem uma função com nome `esta...`, `checa...` ou `encontra...` mudando alguma coisa -- vai definitivamente ampliar seus limites da razão.
210
+
Uma expressão de surpresa atordoada na cara dos seus colegas quando eles virem uma função com nome `é...`, `checa...` ou `encontra...` mudando alguma coisa -- vai definitivamente ampliar seus limites da razão.
211
211
212
212
**Uma outra forma de surpreender é retornar um valor não padrão.**
213
213
@@ -223,20 +223,20 @@ O grande Tao flui por toda parte,<br>
223
223
tanto para a esquerda quanto para a direita.
224
224
```
225
225
226
-
Não limite a função pelo o que está escrito em seu nome. Seja amplo.
226
+
Não limite a função pelo que está escrito em seu nome. Seja amplo.
227
227
228
-
Por exemplo, uma função `validaEmail(email)` poderia (além de checar a validade do email) mostrar uma mensagem de erro e perguntar para reescrever o email.
228
+
Por exemplo, uma função `validaEmail(email)` poderia (além de checar a validade do email) mostrar uma mensagem de erro e pedir para re-entrar o email.
229
229
230
230
Açoes adicionais não devem ser óbvias pelo nome da função. Um verdadeiro programador ninja também as tornará não óbvias assim como o resto do código.
231
231
232
232
**Juntar várias ações em uma protegerá seu código de ser reutilizado.**
233
233
234
-
Imagine, algum outro desenvolvedor quer apenas checar o email, mas não mostrar uma mensagem. Sua função `validaEmail(email)` que executa as duas ações não servirá pra ele. Então ele não irá interromper sua meditação perguntando sobre ela.
234
+
Imagine, algum outro desenvolvedor quer apenas checar o email, mas não mostrar uma mensagem. Sua função `validaEmail(email)` que executa as duas ações não servirá pra ele. Assim, ele não irá interromper a sua meditação perguntando algo sobre ela.
235
235
236
236
## Sumário
237
237
238
-
Todas as "peças de conselhos" acima são de códigos reais... Algumas escritas por desenvolvedores experientes. Talvez até mais experientes do que você ;)
238
+
Todas as "peças de conselho" acima são de códigos reais... Algumas escritas por desenvolvedores experientes. Talvez até mais experientes do que você ;)
239
239
240
240
- Siga algumas delas, e seu código se tornará cheio de surpresas.
241
241
- Siga muitas delas, e seu código se tornará realmente seu, ninguém irá querer alterá-lo.
242
-
- Siga todas, e seu código se tornará uma lição valiosa para novos desenvolvedores procurando pela iluminação.
242
+
- Siga todas, e seu código se tornará numa lição valiosa para novos desenvolvedores procurando pela iluminação.
0 commit comments