Save
Upgrade to remove ads
Busy. Please wait.
Log in with Clever
or

show password
Forgot Password?

Don't have an account?  Sign up 
Sign up using Clever
or

Username is available taken
show password


Make sure to remember your password. If you forget it there is no way for StudyStack to send you a reset link. You would need to create a new account.
Your email address is only used to allow you to reset your password. See our Privacy Policy and Terms of Service.


Already a StudyStack user? Log In

Reset Password
Enter the associated with your account, and we'll email you a link to reset your password.
focusNode
Didn't know it?
click below
 
Knew it?
click below
Don't Know
Remaining cards (0)
Know
0:00
Embed Code - If you would like this activity on your web page, copy the script below and paste it into your web page.

  Normal Size     Small Size show me how

Clean Code

QuestionAnswer
Qual é a regra de ouro para nomes de variáveis? Use nomes descritivos que expliquem o propósito da variável.
Como devem ser as funções? Funções devem ser pequenas e fazer apenas uma coisa.
Qual é a importância de comentários? Comentários devem explicar “por que”, não “o que” o código faz.
Como organizar constantes? Coloque valores constantes em variáveis com nomes claros.
Qual é a recomendação sobre complexidade de função? Funções devem ter complexidade baixa (poucos if/else, loops simples).
Qual é a prática recomendada para valores booleanos? vite nomes genéricos; seja explícito sobre o que o booleano representa. // ruim let flag = true; // bom let isUserLoggedIn = true;
Como lidar com números mágicos? // ruim if(score > 10){ ... } // bom const MIN_SCORE = 10; if(score > MIN_SCORE){ ... }
Qual é a recomendação para funções com muitos parâmetros? Evite funções com muitos parâmetros; prefira objetos para agrupar dados. // ruim function createUser(name, age, email, address){ ... } // bom function createUser({name, age, email, address}) { ... }
O que é importante sobre tratamento de erros? Evite capturar erros silenciosamente; sempre trate ou repasse. // ruim try { riskyOperation(); } catch(e){} // bom try { riskyOperation(); } catch(e){ console.error('Falha na operação:', e); throw e; }
Como melhorar legibilidade de expressões booleanas complexas? Quebre expressões em variáveis com nomes significativos. // ruim if(user.isAdmin && user.isActive && !user.isBanned){ ... } // bom const isEligibleUser = user.isAdmin && user.isActive && !user.isBanned; if(isEligibleUser){ ... }
Qual é a regra sobre indentação? Mantenha indentação consistente para legibilidade. if(user.isActive){ console.log('Usuário ativo'); }
Qual a prática para classes? Cada classe deve ter uma única responsabilidade. class UserValidator { ... } class UserRepository { ... }
Como escrever loops legíveis? refira métodos de array (map, filter, forEach) em vez de loops complexos.
Como lidar com funções longas? Quebre em funções menores ou helpers. function processOrder(order){ validate(order); calculateTotal(order); sendInvoice(order); }
Como nomear funções? Use verbos claros que descrevam a ação. function getUserName(){ ... } function sendEmail(){ ... }
O que evitar em funções? Evite funções que dependem de variáveis externas (side effects). // ruim let total = 0; function add(value){ total += value; } // bom function add(total, value){ return total + value; }
Como organizar arquivos? Um arquivo = uma responsabilidade / módulo. user.js → funções de usuário order.js → funções de pedido
Qual é a prática com strings? const STATUS_ACTIVE = 'active'; if(user.status === STATUS_ACTIVE){ ... }
Como lidar com if/else complexos? Prefira early return para reduzir aninhamento. function checkUser(user){ if(!user) return; if(user.isBanned) return; // resto do código }
Como organizar funções utilitárias? Agrupe em módulos e dê nomes claros. // utils/math.js export function sum(a, b){ return a + b; } export function multiply(a, b){ return a * b; }
Como nomear funções de evento? Use prefixo que indica ação, ex: onClick, handle. button.addEventListener('click', handleSubmit); function handleSubmit() { ... }
Como tratar funções com efeito colateral? Evite efeitos colaterais dentro de funções; prefira retorno explícito. // ruim function incrementGlobal(){ counter++; } // bom function increment(value){ return value + 1; }
Como escrever testes unitários simples? function sum(a, b){ return a + b; } // teste console.assert(sum(2,3) === 5);
Como organizar imports em JavaScript? Importe por módulo e agrupe por tipo (libs externas / internas). import React from 'react'; import { sum } from './utils/math.js';
Como melhorar código repetitivo? Extraia funções reutilizáveis. function showMessage(msg){ console.log(msg); } showMessage('Hello'); showMessage('Bye');
Qual é a regra sobre variáveis temporárias? Use nomes claros, evite abreviações inúteis. const maxRetries = 3;
Como lidar com valores nulos? Use checagem explícita e retorno antecipado. if(!user) return;
Como melhorar legibilidade de objetos? const user = { name: 'Claudio', age: 48, role: 'dev' };
Como escrever funções puras? Função pura depende só dos parâmetros e retorna valor previsível. function square(x){ return x * x; }
Como lidar com variáveis globais? Evite, prefira passar como parâmetro ou encapsular em módulo. // ruim let counter = 0; // bom function increment(value){ return value + 1; }
Como organizar arquivos JS grandes? Separe por responsabilidade: serviços, utilidades, componentes. services/userService.js components/UserCard.js utils/format.js
Qual é a prática com callbacks? Use nomes descritivos e evite callbacks aninhados demais. function fetchData(callback){ ... } fetchData(handleResponse);
Como lidar com funções assíncronas? Prefira async/await em vez de callbacks aninhados. async function getData(){ const data = await fetch(url); return data.json(); }
Como evitar código morto? Remova funções, variáveis e imports que não são usados.
Qual é a regra sobre try/catch? Use apenas onde necessário e trate o erro adequadamente. try { readFile(); } catch(e){ console.error(e); }
Como escrever loops legíveis em JS moderno? Prefira métodos de array ao invés de for clássico. users.forEach(u => console.log(u.name));
Como nomear classes? Nome substantivo, singular, claro sobre responsabilidade. class UserRepository { ... }
Como lidar com funções muito parecidas? Evite duplicação; extraia helpers reutilizáveis. function formatDate(date){ ... } function formatTime(date){ ... }
Como evitar funções com muitos if/else? Prefira early return ou objetos para mapear comportamento. const actions = { admin: () => console.log('admin'), user: () => console.log('user') }; actions[role]();
O que significa SRP (Single Responsibility Principle)? Uma função ou classe deve ter apenas uma responsabilidade. function processUser(user){ validateUser(user); saveUser(user); sendEmail(user); }
O que significa OCP (Open Closed Principle)? Código deve ser aberto para extensão e fechado para modificação. function calculateDiscount(user){ if(user.type === "premium") return 0.2; if(user.type === "normal") return 0.1; }
O que significa DRY (Don't Repeat Yourself)? Não repita código, reutilize funções. // ruim price = price * 0.9 total = total * 0.9 // bom function applyDiscount(value){ return value * 0.9 }
Como evitar duplicação de lógica? Extraindo funções reutilizáveis. function formatPrice(price){ return `$${price.toFixed(2)}` }
O que é KISS (Keep It Simple, Stupid)? Prefira soluções simples ao invés de complexas. // ruim let result = numbers.reduce((a,b)=>a+b,0) // simples let result = 0 for(let n of numbers){ result += n }
Como evitar aninhamento profundo? Como evitar aninhamento profundo? function process(user){ if(!user) return if(!user.active) return console.log("processando") }
Qual é a boa prática com parâmetros booleanos? Evitar, pois tornam funções ambíguas. // ruim function createUser(name, isAdmin){} // melhor function createAdmin(name){} function createNormalUser(name){}
Como melhorar legibilidade de condições? Extraindo para variáveis. const isEligible = user.age > 18 && user.active && !user.banned if(isEligible){ ... }
Como evitar switch muito grande? Usar objetos de mapeamento. const handlers = { admin: () => console.log("admin"), user: () => console.log("user") } handlers[type]()
Como evitar números mágicos em loops? Usar constantes. const MAX_RETRIES = 3 for(let i = 0; i < MAX_RETRIES; i++){ retry() }
Como melhorar leitura de transformações de array? Como melhorar leitura de transformações de array? const names = users.map(u => u.name)
Como filtrar dados de forma limpa? Como filtrar dados de forma limpa? const activeUsers = users.filter(u => u.active)
Como evitar loops complexos? Encadeando métodos. const names = users .filter(u => u.active) .map(u => u.name)
Como melhorar clareza ao procurar item em array? Usando find. const user = users.find(u => u.id === 10)
Como verificar existência em array? Como verificar existência em array? const hasAdmin = users.some(u => u.role === "admin")
Como verificar se todos elementos atendem condição? Usando every. const allActive = users.every(u => u.active)
Como reduzir array em valor único? Como reduzir array em valor único? const total = prices.reduce((sum,p)=>sum+p,0)
Como evitar mutação de arrays? Criar novo array. const newArray = [...oldArray, 5]
Como remover duplicatas de forma limpa? Como remover duplicatas de forma limpa? const unique = [...new Set(numbers)]
Como melhorar legibilidade em objetos complexos? Usar destructuring. const {name, age} = user
O que é refatoração? Melhorar o código sem mudar o comportamento. // antes function calc(a,b){return a+b} // depois function sum(a,b){ return a + b }
Quando refatorar código? Sempre que ele estiver difícil de entender ou duplicado.
Como melhorar nomes de função durante refatoração? Usar nomes que expliquem claramente a intenção. // ruim function run() // bom function processPayment()
Como reduzir tamanho de funções? Extraindo partes em funções auxiliares. function createOrder(order){ validate(order) save(order) }
O que é código legível? Código que outro desenvolvedor entende sem precisar de explicação.
Como melhorar legibilidade de condicionais? Como melhorar legibilidade de condicionais? function isAdult(user){ return user.age >= 18 }
Qual é o problema de funções gigantes? Elas são difíceis de entender, testar e manter.
Como melhorar leitura de cálculos? Usar variáveis intermediárias. const tax = price * 0.1 const total = price + tax
Como evitar dependência escondida? Passando dependências como parâmetros. function calculateTotal(price, taxRate){ return price * taxRate }
Qual é o problema de comentários demais? Geralmente indicam que o código está confuso.
Por que preferir async/await? Porque melhora legibilidade comparado a .then(). const data = await fetch(url)
Como tratar erro em async? try{ const data = await fetch(url) }catch(err){ console.error(err) }
Como evitar código assíncrono confuso? Quebrar em funções menores.
Como nomear funções async? Use verbos claros. async function fetchUsers(){}
Como evitar múltiplos awaits em sequência? const [users,posts] = await Promise.all([ getUsers(), getPosts() ])
Como organizar projeto JS? Separar responsabilidades. controllers services utils models
Qual é o objetivo de módulos? Dividir código em partes independentes.
Como exportar funções? export function sum(a,b){ return a + b }
Como importar módulos? import {sum} from "./math.js"
Por que dividir código em arquivos pequenos? Facilita manutenção e leitura.
O que é teste unitário? Teste de uma pequena unidade de código.
O que um bom teste deve ter? previsível simples independente
Exemplo simples de teste. function sum(a,b){ return a + b } console.assert(sum(2,2) === 4)
Por que testes ajudam no Clean Code? Permitem refatorar sem medo.
Como nomear testes? should_return_total_price
O que significa YAGNI? ou Aren’t Gonna Need It Não implemente coisas desnecessárias.
O que evitar em código? duplicação complexidade nomes ruins
O que é código expressivo? Código que explica a intenção.
Como melhorar leitura de lógica? const isValid = user.active && user.age > 18
Qual é o problema de variáveis genéricas? let data let thing Não explicam o que representam.
O que entrevistadores buscam em Clean Code? nomes claros funções pequenas lógica simples
Qual erro comum em entrevistas? Funções gigantes.
Como impressionar em entrevista? Explicando o raciocínio.
Explicando o raciocínio. for(const user of users){ console.log(user.name) }
Como deixar código mais declarativo? const activeUsers = users.filter(u => u.active)
O que é código declarativo? Descreve o que fazer, não como fazer.
Como evitar bugs comuns? Usando testes e validações.
O que significa código sustentável? O que significa código sustentável?
Qual é a essência do Clean Code? Código que humanos conseguem entender facilmente.
Created by: claudiobitar
 

 



Voices

Use these flashcards to help memorize information. Look at the large card and try to recall what is on the other side. Then click the card to flip it. If you knew the answer, click the green Know box. Otherwise, click the red Don't know box.

When you've placed seven or more cards in the Don't know box, click "retry" to try those cards again.

If you've accidentally put the card in the wrong box, just click on the card to take it out of the box.

You can also use your keyboard to move the cards as follows:

If you are logged in to your account, this website will remember which cards you know and don't know so that they are in the same box the next time you log in.

When you need a break, try one of the other activities listed below the flashcards like Matching, Snowman, or Hungry Bug. Although it may feel like you're playing a game, your brain is still making more connections with the information to help you out.

To see how well you know the information, try the Quiz or Test activity.

Pass complete!
"Know" box contains:
Time elapsed:
Retries:
restart all cards