๐จโ๐ป ๊ธฐํ ์์ํ
Nรฃo vou focar tanto em aspectos tรฉcnicos e teรณricos de livros como o clean code.์ด ์ ์ ๊ดํด์ ๋๋ ๋์๊ฒ ํ ๊ฐ์ง ์ผ์ ๊ฑด์ํ๋คlivro.ํ๋ฆฐ์ํผ์ ๊ธฐ์ง์์ ์ฐ๋ฆฌ ๋ณ์ฌ๋ค์ ์ ํฌ์์ ์๋๋ฅผ ๊ฒฉํํ๋ค.
์ต์ํ ์ํฉ์์ ์๋ฐ์คํฌ๋ฆฝํธ ์ธ์ด๋ฅผ ์๋ก ๋ค๋ฉด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ง์ ์์ด์ ๋ค๋ฅธ ์ธ์ด๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
์๋ชจ์ค ๋๋ ํ ์์ฐํ .
Imagem de:https://www.geeksforgeeks.org/7-tips-to-write-clean-and-better-code-in-2020/
1.์๋ฑรงรงaopadrรฃ
์ด๊ฒ์ ๋ค๋ฅธ ์ค์ฌ์ด๋ค.์ด๊ฒ์ ํ๋ ๊ณํ์ด๋ผ๋ ๋ง์ด์ผ.
์ด๋ฆฌ: ์ด๊ฒ์ ๋ฒ๋ฅ ํ๋ก์ ํธ์ ๋๋ค.์ฐ๋ฆฌ์ ๋ชฉํ๋ ๋งค ์๊ฐ ์ด ๋ชฉํ๋ฅผ ์คํํ๋ ๊ฒ์ด๋ค. ์ด๊ฒ์ ํ๋์ ๊ณตํต๋ ์ฉ์ด, ํ๋์ ๊ณตํต๋ ์ฉ์ด, ํ๋์ ๊ณตํต๋ ์ฉ์ด, ํ๋์ ๊ณตํต๋ ์ฉ์ด, ํ๋์ ๊ณตํต๋ ์ฉ์ด, ํ๋์ ๊ณตํต๋ ์ฉ์ด, ํ๋์ ๊ณตํต๋ ์ฉ์ด, ํ๋์ ๊ณตํต๋ ์ฉ์ด, ํ๋์ ๊ณตํต๋ ์ฉ์ด, ํ๋์ ๊ณตํต๋ ์ฉ์ด, ํ๋์ ๊ณตํต๋ ์ฉ์ด, ํ๋์ ๊ณตํต๋ ์ฉ์ด, ํ๋์ ๊ณตํต๋ ์ฉ์ด, ํ๋์ ๊ณตํต๋ ์ฉ์ด, ํ๋์ ๊ณตํต๋ ์ฉ์ด์ด๋ค.
์๋ก์ด ํ๋ก์ ํธ๊ฐ ์ค์๋จ์ ๋ฐ๋ผ ๊ธฐ๋ณธ ์ํ ์์ค์ ์ ์๋ ๋ ์ด์ ๋ ๋ฆฝ๋ ์ํ ์์ค์ด ์๋๋ค.
์ด๊ฒ์ ๋ชจ๋ ์ฌ๋์ ๋ณดํธํ๊ธฐ ์ํด ์๋กญ๊ฒ ์ ์๋ ์์น ํญ๋ชฉ์ด๋ค.์ํ๋ ์ผํ๋ผ์ค์ ๊ธฐํ.
2. ์ฉ์ด
๊ทธ๊ฒ ์ ์ผ ์ค์ํด.Padronizaรงoรงosem-nticae sintรกtica de arquivos,variรกveis,mรฉtodos,ํ๊ธ ๋ฑ์ ๋ชจ๋ ์์ฐ ์ ์ฒด๊ฐ ํ์๋ก ํ๋ ์์ง์ ์ธ์ด ๊ต์ก ๊ธฐ๊ตฌ์ด๋ค.
Escreva nomes que signifido ao cรณdigo.
์ฝ๋ฉํ๋ฆฌ์ค์ค ํ์ ๊ตฌ ํ์ ์ฅ๊ด ์ ๊ฑฐ์์ํ ํ์์์ ์ค๋ฅดํ์ค ์ฝ๋ฉํ๋ฆฌ์ค์ค๋ ์นธํ๋ฆฌ๋ค ์ถ์ ์ ์ฌ์ฌ๋ผ๊ณ ๋งํ๋ค.
Dรกuma olhada nesse ์:
// cรณdigo sem padrรฃo
function executar(param1, param2) {
const resposta = passo1(param1);
if (resposta === false) {
return passo2(param1, param2)[mensagem];
} else{
return 'Nรฃo foi possรญvel cadastrar usuรกrio';
}
}
// cรณdigo com padrรฃo
function cadastrarUsuario(email, senha) {
const existe = existeEmailCadastrado(email);
if (existe === true) {
return 'Este email jรก tem cadastro no sistema';
} else {
const usuarioCriado = salvar(email, senha);
return usuarioCriado.mensagem
}
}
๊ฐ๋จํ ์๊ฐ ํ๋๋ ์๋ค. ๊ผฌ๊ผฌ๋ ์ค๋ฌดํ ๋์ค ๊ผฌ๊ผฌ๋ ์คsemdebugar, jรกNo segundo, uma simples leitura permiter to o cรณdigo.3.Cada coisa no seu lugar
๊ธฐ๋ณธ์ ์ธ ๋ธ๋ฃจ๋ฐ๋ฅด ๋ฐ๋ ๋ผ ์คํ์ผ.์ ๊ฐ๋ฐ ํ๋ก์ ํธ์ ์ ์ฒด ๋ด์ฉ์ ํ๋ก์ ํธ์ ์ผ๋ถ๋ถ์ด๋ค.
์ด๊ฒ์ ์ฒด๊ณํ๋ ํ๋ก์ ํธ๋ก ๊ทธ ๋ชฉ์ ์ ์๋ก์ด ๊ธฐ๋ฅ์ฑ ๊ณค์ถฉ์ ๊ฐ๋ฐํ๋ ๊ฒ์ด๋ค.์ง๋ฌธ: ์ปจ์คํ ํ์ฌ๊ฐ ๋ฌด์์ ๋๊น?๋ค๋ฅธ ํ๋๋ ์์คํ ๋ง ์งํ์ฒ ์ธ๊ฐ์?Adicionar uma nova propriedade numa classe?์ด๊ฒ์ ํ์คํ์ ์ผ์ข ์ด๋ค.
4. ์ฝ๋๊ณ ๋ฆฐ๋ณด
์ด๊ฒ์ ์์ฃผ ์ข์ ์๋ค.๋น์ ์ ์๋ก์ด ์ฝ์์ ๋ค์ ์ ์ ํด์ผ ํฉ๋๊น?
Quando revisar seu cรณdigo,verifique tambรฉm se existem anotaรงes de impressรงo de log desnecessรกrios na aplicaรงo(console.log no JS,system.out.print ou logger no Java).์ด๊ฒ์ ์ค์ ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง์ ๊ดํ ๋ฌธ์ฅ์ด๋ค.
// remova variaveis nao utilizadas
const variavelNaoUtilizada;
// remova metodos nao utilizados
function funcaoNaoUtilizada(a, b) {
return a + b;
}
// remova logs irrelevantes
function funcaoGenerica(params) {
console.log('Entrou na funcao...', params);
}
Alguns editores de texto como ovscode๋ ID ์ธ์ ๋๊ตฌ์ธ cรณdigo n รฃo utilizado marcando esses blocos comuma cor mais clara์
๋๋ค.5.Reutilizar
์์ฌ ์ฝ๋ชจ ๋ ธ ๋ง์ด์ค ์ค๋น์ธํธ๋ ์๋ํ ์ง๋์์ด๋ค. ๊ทธ๋ ์ฅ๊ธฐ์ ์ธ ์ค์ฒ์์ด๋ค.๋ํ๋ฆฌ์นด๋ ์ฐ๋ง ๋ธ๋ ์ดํฌ(Cรณdigo duplicadoรฉuma prรกtica que abre Breches para muitos bug e gera muito retrabalho).
๋๋ ๋๋ฅผ ๋ค์ ์์ ์ผ๋ก ๋์๊ฐ๊ฒ ํ๊ณ ์ถ์ง ์๋?์ด๊ฒ์ ๊ฐ์ํ๋ ์ ์ ์ํ ๋ฐฉ์์ ํ๋๋ค.Seu cรณdigo, suas funรงรงes, ๊ต๊ณผ ๊ณผ์ eรฉtodos precism ter o mjimo ou apenas uma รงnica responsibilidade.
function cadastrarUsuario(email, senha) {
const existe = existeEmailCadastrado(email);
if (existe === true) {
return 'Este email jรก tem cadastro no sistema';
} else {
const senhaHash = hash(senha)
const usuarioCriado = salvar(email, senhaHash);
return usuarioCriado.mensagem
}
}
function recuperarSenha(email, senha) {
const existe = existeEmailCadastrado(email);
if (existe === false) {
return 'Este email nรฃo tem cadastro no sistema!';
} else {
const senhaHash = hash(senha)
const usuarioAlterado = atualizar(email, senhaHash);
return usuarioCriado.mensagem
}
}
๋ชฉ์ ์ง์ ๋ฐ๋ผ ์๊ฐ๋ฅผ ์ฌ์ฉํ ๋ ์ฆ๊ฑฐ์์ด ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์ด ์ ์ ์ฆ๋ช
ํ ์ ์๋ ์๋ ์๋ค.์ด๊ฒ์ ์ง์ ์กฐ์ฌ์์ ์ค๋ณต ์ฌ์ฉ๋ ์ ์๋๋ก ์๋ก ๋ง๋ค์ด์ง ์งํ ์ ์ฐจ๋ค.6. ํธ๋ ํฌ ์ฌ์ฉ
๋ ธํผ์น ํ๋ก์ ํธ์ ๋ค์๋ ๊ธฐ๋ณธ์ ์ธ ์ค์ฉ ํ๋ก๊ทธ๋จ์'vigiar'์'vigiar'์ ์ผ๋ถ๋ถ์ผ๋ก ๊ณต๊ณต๊ธฐ๊ด์ด ์ค์ฒ์์vocรจdeixoupraรกs๋ฅผ ์ฌ์ฉํ์๊ณ ๊ฑด์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
Alguns de linters ์: Javascript comESLint, JavacomSonarLint, Python comPylint.
https://davidwalsh.name/eslint
7.Indentaรงรฃo
Em algumas linguagens comopython,indentaรงoรฉuma prรกtica obrigatรณria,jรกque os blocos de cรณdigo sรฃo separados desa maneira.
๊ทธ๋ค์ ์ธ์ดํ์, ์ฝ๋ชจ์ธ, ์๋ฐ์ธ, ๋ฆฌ์ฐ์ธ, ๊ทธ๋ค์ ํฉ์ ํํธ๋์ ํฉ์ ํํธ๋์ด๋ค.
์ด๊ฒ์ ์๋ก ๋ค๋ฅธ ๋ฌธํ์ ๋ณธ๋ณด๊ธฐ๋ค.
// exemplo com indentaรงรฃo
function fatorial (numero) {
if (numero < 0) {
return 'O nรบmero deve ser maior ou igual a zero!';
} else if ((numero == 0) || (numero == 1)) {
return 1;
} else {
let acumulador = 1;
for (x = numero; x > 1; x--) {
acumulador = acumulador * x;
}
return acumulador;
}
}
// sem indentaรงรฃo
function fatorial (numero) {
if (numero < 0) {
return
'O nรบmero deve ser maior ou igual a zero!';} else if ((numero == 0) || (numero == 1)) {
return 1;
}
else {
let acumulador = 1; for (x = numero; x > 1; x--) {acumulador = acumulador * x}
return acumulador;
}
}
Javascript๊ฐ ์๊ณ , voc่pode utilizar uma ferramenta para visualizer onde precisa ajustar a indenta รงo, oPrettier.Bรดnus:Busque conhecimento
์ด๊ฒ์ ์ฌ๋์ ํฅ๋ถ์ํค๋ ์๊ฐ์ด๋ค.์์คํ๋ ๋ ์ฐํธ, ์์คํ๋ ธ ์นด๋ฏธ๋์ค ์ธํ ์ ๋๋ค.
์ด๊ฒ์ ์ผ์ข ์ ์ ๊ธฐ์ ์ด๋ค.
ํ๋ก์ ํธ ํ์์ ์ค์ํ ๊ตฌ์ฑ ๋ถ๋ถ์ผ๋ก์ ์ฐ๋ฆฌ๋ ์ ์ฑ๊ป ์ค๊ณํด์ผ ํ๋ค.์ด๊ฒ์ ์ง์์ ์ธ ๊ณผ์ ์ด๋ค.
Obrigado pela leitura!์์คํ๋ก ํฌํฌ์ฌ ์์ฃผ๋ค๋.๐
์ํ ๋ง์ค.
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐จโ๐ป ๊ธฐํ ์์ํ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/stanley/boas-praticas-de-programacao-3hl9ํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค