Objetos e Estruturas de Dados (Código Limpo: Que Bruxaria é Essa?!?! - Parte 4)
ananopaisdojavascript
Posted on September 25, 2021
Use getters e setters
O uso de getters e setters para acessar dados pode ser melhor que simplesmente procurar por uma propriedade em um objeto. Talvez você pergunte: "Por quê?!". Bom, aqui você vai ver uma lista desorganizada de motivos:
- Quando você quer fazer mais do que obter a propriedade de um objeto, você não tem que procurar e mudar cada dado acessível na sua base de códigos.
- Simplifica a inclusão de validações ao usar um
set
. - Encapsula a representação interna.
- Facilidade de inclusão de tratamento de registros e erros no momento de obtenção e configuração.
- Você pode fazer o carregamento lento das propriedades do seu objeto, vamos dizer obtendo-as de um servidor.
Não é recomendável:
function makeBankAccount() {
// ...
return {
balance: 0
// ...
};
}
const account = makeBankAccount();
account.balance = 100;
É recomendável:
function makeBankAccount() {
// this one is private
let balance = 0;
// a "getter", made public via the returned object below
function getBalance() {
return balance;
}
// a "setter", made public via the returned object below
function setBalance(amount) {
// ... validate before updating the balance
balance = amount;
}
return {
// ...
getBalance,
setBalance
};
}
const account = makeBankAccount();
account.setBalance(100);
Faça com que objetos tenham membros privados
Esse feito pode ser alcançado por meio de closures (ES5 e versões anteriores)
Não é recomendável:
const Employee = function(name) {
this.name = name;
};
Employee.prototype.getName = function getName() {
return this.name;
};
const employee = new Employee("John Doe");
console.log(`Employee name: ${employee.getName()}`); // Employee name: John Doe
delete employee.name;
console.log(`Employee name: ${employee.getName()}`); // Employee name: undefined
É recomendável:
function makeEmployee(name) {
return {
getName() {
return name;
}
};
}
const employee = makeEmployee("John Doe");
console.log(`Employee name: ${employee.getName()}`); // Employee name: John Doe
delete employee.name;
console.log(`Employee name: ${employee.getName()}`); // Employee name: John Doe
E aí? Gostaram? Até a próxima tradução! 🤗
💖 💪 🙅 🚩
ananopaisdojavascript
Posted on September 25, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
cleancode Avoiding Frontend Development Failure: Proven Practices for Writing Clean Code
October 1, 2024