O que é Ledger e por que nomes são difíceis?
No desenvolvimento de software, escolher nomes apropriados para variáveis, funções e estruturas de dados é uma habilidade crucial. Por isso, é importante ter uma cultura com padrões em mente.
O que é Ledger Serie:
No desenvolvimento de software, escolher nomes apropriados para variáveis, funções e estruturas de dados é uma habilidade crucial. Nomes claros e consistentes são essenciais para a manutenabilidade do código e para promover uma cultura de desenvolvimento saudável. Vamos explorar por que nomes são importantes e como podemos melhorar a legibilidade e a manutenção do nosso exemplo de ledger.
A Importância dos Nomes
Clareza: Nomes bem escolhidos tornam o código mais fácil de entender, tanto para o autor quanto para outros desenvolvedores que irão trabalhar no projeto no futuro.
Manutenabilidade: Código legível e claro facilita a manutenção e a atualização, reduzindo o tempo necessário para corrigir bugs ou adicionar novas funcionalidades.
Comunicação: Bons nomes funcionam como documentação implícita, ajudando a comunicar a intenção do código de maneira mais eficaz.
Consistência: Nomes consistentes ajudam a estabelecer padrões dentro da base de código, tornando-a mais previsível e menos propensa a erros.
Exemplo de Melhoria: Alterando transactionId
para idempotencyId
No nosso exemplo anterior, usamos transactionId
para garantir a idempotência das transações. Embora este nome seja claro, idempotencyId
pode ser um nome mais descritivo e preciso, refletindo exatamente sua finalidade.
Atualizando o Código
Vamos atualizar o exemplo de código para usar idempotencyId
em vez de transactionId
:
Definindo a estrutura do ledger no MongoDB:
{
_id: ObjectId("60c72b2f9b1d8e4d2f507d3a"),
date: ISODate("2023-06-13T12:00:00Z"),
description: "Depósito",
amount: 100000, // Valor em centavos
balance: 100000, // Saldo em centavos
idempotencyId: "abc123" // Id de idempotência
}
Função para adicionar uma nova entrada ao ledger e calcular o saldo usando idempotência:
const { MongoClient } = require('mongodb');
async function addTransaction(description, amount, idempotencyId) {
const url = 'mongodb://localhost:27017';
const client = new MongoClient(url);
try {
await client.connect();
const database = client.db('finance');
const ledger = database.collection('ledger');
const existingTransaction = await ledger.findOne({ idempotencyId: idempotencyId });
if (existingTransaction) {
console.log('A transação já existe:', existingTransaction);
return;
}
const lastEntry = await ledger.find().sort({ date: -1 }).limit(1).toArray();
const lastBalance = lastEntry.length > 0 ? lastEntry[0].balance : 0;
const newBalance = lastBalance + amount;
const newEntry = {
date: new Date(),
description: description,
amount: amount,
balance: newBalance,
idempotencyId: idempotencyId
};
await ledger.insertOne(newEntry);
console.log('Transação adicionada com sucesso:', newEntry);
} finally {
await client.close();
}
}
addTransaction('Depósito', 50000, 'unique-idempotency-id-001'); // Valor em centavos
Conclusão
A escolha de nomes apropriados é uma parte essencial do desenvolvimento de software. Nomes claros, descritivos e consistentes facilitam a leitura, manutenção e comunicação do código. No exemplo acima, alteramos transactionId
para idempotencyId
, tornando o propósito da variável mais claro.
No nosso próximo post, exploraremos mais sobre a importância de boas práticas de nomenclatura e como elas podem impactar positivamente a qualidade do código e a eficiência da equipe de desenvolvimento.
Fiquem atentos para mais insights sobre a construção de sistemas financeiros confiáveis e boas práticas de desenvolvimento!
Sigam-me no Twitter
Se gosta e quer apoiar o meu trabalho seja meu patreon
Quer alavancar sua carreira? Comece agora com minha mentoria pelo link
https://mentor.daniloassis.dev
Veja mais em https://linktr.ee/daniloab
Foto de Luca Onniboni na Unsplash