๐Ÿ‘จโ€๐Ÿ’ป ๊ธฐํš ์œ„์›ํšŒ

15374 ๋‹จ์–ด
์ด๊ฒƒ์€ ๊ธฐ์—… ๋‚ด๋ถ€์—์„œ ๊ฐœํ˜์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ธฐ์—…์— ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๊ณ„ํš์ด๋‹ค.
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!์—์ŠคํŽ˜๋กœ ํฌํฌ์‚ฌ ์•„์ฃผ๋‹ค๋„.๐Ÿš€
์•„ํ…Œ๋งˆ์Šค.

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ