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
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -145,7 +145,7 @@ Isso fará com que seja bem mais difícil identificar o que exatamente está den
145
145
Por exemplo:
146
146
147
147
```js
148
-
functionfuncaoNinja(elem) {
148
+
functionninjaFunction(elem) {
149
149
// 20 linhas de código trabalhando com elem
150
150
151
151
elem =clone(elem);
@@ -170,7 +170,7 @@ Um ninja inteligente põe sublinhas em uma parte do código e evita elas em outr
170
170
171
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 oculto e meditar por uma hora ou duas.
173
+
Aliás, por um lado, algo é escrito como: `super..`, `mega..`, `nice..` 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
@@ -184,10 +184,10 @@ Quando na escuridão, pode ver tudo na luz.
184
184
Use os mesmos nomes para variáveis dentro e fora de uma função. Bem simples. Sem esforço.
185
185
186
186
```js
187
-
let*!*usuario*/!*=autenticaUsuario();
187
+
let*!*user*/!*=autenticateUser();
188
188
189
189
functionrender() {
190
-
let*!*usuario*/!*=outroValor();
190
+
let*!*user*/!*=anotherValue();
191
191
...
192
192
...muitas linhas...
193
193
...
@@ -196,22 +196,22 @@ function render() {
196
196
}
197
197
```
198
198
199
-
Um programador que olhar dentro de `render` provavelmente vai falhar em notar que já existe um `usuario` local substituindo a variável exterior à função.
199
+
Um programador que olhar dentro de `render` provavelmente vai falhar em notar que já existe um `user` local substituindo a variável exterior à função.
200
200
201
-
Então ele vai tentar trabalhar com `usuario` assumindo que é a variável exterior, o resultado de `autenticaUsuario()`... A armadilha tá feita! Olá, debugger...
201
+
Então ele vai tentar trabalhar com `user` assumindo que é a variável exterior, o resultado de `authenticateUser()`... A armadilha tá feita! Olá, debugger...
202
202
203
203
204
204
## Efeitos colaterais em todo lugar!
205
205
206
-
Existem funções que parecem que não alteram nada. Como `estaPronto()`, `checaPermissao()`, `encontraTags()`... Elas são feitas para realizar cálculos, encontrar e retornar o dado, sem mudar nada fora delas. Em outras palavras, sem "efeito colateral".
206
+
Existem funções que parecem que não alteram nada. Como `isReady()`, `checkPermission()`, `findTags()`... Elas são feitas para realizar cálculos, encontrar e retornar o dado, sem mudar nada fora delas. Em outras palavras, sem "efeito colateral".
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 `é...`, `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 `is..`, `check..` ou `find..` 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
214
-
Mostre o que é pensar fora da caixa! Faça com que a chamada de `checaPermissao` retorne não um `true/false`, mas sim um complexo objeto com o resultado da checagem.
214
+
Mostre o que é pensar fora da caixa! Faça com que a chamada de `checkPermission` retorne não um `true/false`, mas sim um complexo objeto com o resultado da checagem.
215
215
216
216
Aqueles desenvolvedores que tentarem escrever `if (checaPermissao(..))`, vai se perguntar por que não funciona. Diga a eles: "Leia a documentação!". E mostre este artigo.
0 commit comments