Clean Code em TypeScript: princípios e exemplos para iniciantes

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Clean Code em TypeScript: princípios e exemplos para iniciantes

Código limpo (Clean Code) não é apenas um termo da moda, mas uma filosofia de desenvolvimento que ajuda a escrever programas compreensíveis para outros desenvolvedores (e para você mesmo daqui a seis meses). Para programadores iniciantes em TypeScript, dominar os princípios do código limpo é um passo fundamental para o crescimento profissional. Neste artigo, vamos analisar as regras principais, dar exemplos práticos e mostrar como tornar seu código em TypeScript elegante e sustentável.



Por que o código limpo é importante?

Imagine que você está lendo um livro sem parágrafos, sinais de pontuação e com todas as palavras escritas juntas. É mais ou menos assim que um código sujo parece para outro desenvolvedor. O código limpo economiza tempo de depuração, simplifica a adição de novas funcionalidades e reduz o número de bugs. O TypeScript, com sua tipagem forte, já ajuda a escrever um código mais confiável, mas sem seguir os princípios de limpeza, até mesmo o código tipado pode se tornar ilegível.



// Ruim: ilegívelfunction d(a:any,b:any){if(a>b){return a}else{return b}}

// Bom: limpo e clarofunction findMaxValue(firstNumber: number, secondNumber: number): number { if (firstNumber > secondNumber) { return firstNumber; } return secondNumber;}


Princípios fundamentais do Clean Code em TypeScript



1. Nomes significativos para variáveis e funções

O nome deve responder às perguntas "o quê?" e "para quê?". Evite abreviações de uma letra (exceto para índices de loops) e nomes abstratos. Use camelCase para variáveis e PascalCase para classes.



// Ruimconst d = new Date();const arr = [1, 2, 3];function p(x: number) { return x * 2; }

// Bomconst currentDate = new Date();const numbersList: number[] = [1, 2, 3];function doubleValue(value: number): number { return value * 2;}


2. Funções devem fazer apenas uma coisa

Cada função deve resolver uma única tarefa. Se uma função faz mais de uma ação — divida-a em várias funções menores. Isso melhora a legibilidade e a testabilidade.



// Ruim: a função faz tudo de uma vezfunction processUserData(userData: string): void {    const parsed = JSON.parse(userData);    const isValid = parsed.name && parsed.email;    if (isValid) {        console.log(`User ${parsed.name} registered`);        saveToDatabase(parsed);    }}

// Bom: cada função é responsável por sua partefunction parseUserData(rawData: string): User { return JSON.parse(rawData);}

function validateUserData(user: User): boolean { return !!user.name && !!user.email;}

function registerUser(userData: string): void { const user = parseUserData(userData); if (validateUserData(user)) { console.log(`User ${user.name} registered`); saveToDatabase(user); }}


3. Evite números e strings mágicos

Números mágicos são literais cujo valor não é claro sem contexto. Coloque-os em constantes com nomes significativos.



// Ruimif (user.age > 18) {    // ...}const discount = price * 0.1;

// Bomconst ADULT_AGE = 18;const STANDARD_DISCOUNT_RATE = 0.1;

if (user.age > ADULT_AGE) { // ...}const discount = price * STANDARD_DISCOUNT_RATE;


4. Use tipos e interfaces corretamente

O TypeScript oferece ferramentas poderosas para descrever dados. Não abuse do any, prefira tipos específicos. Crie interfaces para objetos complexos.



// Ruimfunction createUser(name: any, age: any) {    return { name, age, createdAt: new Date() };}

// Bominterface User { name: string; age: number; createdAt: Date;}

function createUser(name: string, age: number): User { return { name, age, createdAt: new Date() };}

Blogs

Book Recommendations