verbessert die Aufführung des clean code Apps (berücksichtigt clean cooding im Praxis)
This commit is contained in:
parent
5f8b6f777c
commit
fd05f8cc59
@ -1,4 +1,4 @@
|
|||||||
var budget = [
|
const budget = [
|
||||||
{ value: 250, description: "Sold old TV 📺", user: "david" },
|
{ value: 250, description: "Sold old TV 📺", user: "david" },
|
||||||
{ value: -45, description: "Groceries 🥑", user: "david" },
|
{ value: -45, description: "Groceries 🥑", user: "david" },
|
||||||
{ value: 3500, description: "Monthly salary 👩💻", user: "david" },
|
{ value: 3500, description: "Monthly salary 👩💻", user: "david" },
|
||||||
@ -9,56 +9,53 @@ var budget = [
|
|||||||
{ value: -1800, description: "New Laptop 💻", user: "david" },
|
{ value: -1800, description: "New Laptop 💻", user: "david" },
|
||||||
];
|
];
|
||||||
|
|
||||||
var limits = {
|
const spendingLimits = {
|
||||||
david: 1500,
|
david: 1500,
|
||||||
joanne: 100,
|
joanne: 100,
|
||||||
};
|
};
|
||||||
|
const getLimit = user => spendingLimits?.[user] ?? 0;
|
||||||
var add = function (value, description, user) {
|
const addExpense = function (value, description, user = "david") {
|
||||||
if (!user) user = "david";
|
// if (!user) user = "david"; // statt einen solchen urprünglichen Wert in der if Anweisung zu erstellen,
|
||||||
|
// es ist besser als einen urprünglichen Parameter in der Methode zu definieren const addExpense = function (value, description, user = "david") {
|
||||||
user = user.toLowerCase();
|
user = user.toLowerCase();
|
||||||
|
|
||||||
var lim;
|
// let lim;
|
||||||
if (limits[user]) {
|
// if (spendingLimits[user]) {
|
||||||
lim = limits[user];
|
// lim = spendingLimits[user];
|
||||||
} else {
|
// } else {
|
||||||
lim = 0;
|
// lim = 0;
|
||||||
}
|
// } // statt die If Anwesisungen zu definieren, ist es besser solche Bedienung als ternanry Operator zu definieren
|
||||||
|
|
||||||
if (value <= lim) {
|
// const limit = spendingLimits[user] ? spendingLimits[user] : 0; // besseres Performance und einen schöneren Überblick aud den Code zu haben
|
||||||
|
// dritte Möglicheit/oder noch bessere Lösung mit dem Optional Chaining (wird überprüft wenn spendingLimits[user] mehr als 0 ist/exixstiert,
|
||||||
|
// wenn nicht wird automatisch der Wert 0 zugewissen, ohne das Optional Chaning Operator wäre der Wert undefined
|
||||||
|
// const limit = spendingLimits[user]?.[user];
|
||||||
|
const limit = getLimit(user); // Verwendung der Methode, damit wird DRY(Don't repeat yourself) Prinzip werwendet
|
||||||
|
|
||||||
|
if (value <= limit) {
|
||||||
budget.push({ value: -value, description: description, user: user });
|
budget.push({ value: -value, description: description, user: user });
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
add(10, "Pizza 🍕");
|
addExpense(10, "Pizza 🍕");
|
||||||
add(100, "Going to movies 🍿", "Matilda");
|
addExpense(100, "Going to movies 🍿", "Matilda");
|
||||||
add(200, "Stuff", "Jay");
|
addExpense(200, "Stuff", "Jay");
|
||||||
console.log(budget);
|
|
||||||
|
|
||||||
var check = function () {
|
const checkExpenses = function () {
|
||||||
for (var el of budget) {
|
// der Name einer Methode check, zu wenig beschreibt, was sie eigentlich checkiert,
|
||||||
var lim;
|
// in unserem Fall wäre besser, checkExpenses, damit eindeutlich ist, was eigentlich diese Methode checkiert
|
||||||
if (limits[el.user]) {
|
|
||||||
lim = limits[el.user];
|
|
||||||
} else {
|
|
||||||
lim = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (el.value < -lim) {
|
// durch was das Loop geht. Besser als nur "el" für ein Element in dem Feld zu definieren, entry
|
||||||
el.flag = "limit";
|
for (const entry of budget)
|
||||||
}
|
if (entry.value < -getLimit(entry.user)) entry.flag = "limit";
|
||||||
}
|
|
||||||
};
|
};
|
||||||
check();
|
checkExpenses();
|
||||||
|
|
||||||
console.log(budget);
|
const logBigExpenses = function (bigLimit) {
|
||||||
|
let output = "";
|
||||||
var bigExpenses = function (limit) {
|
for (const entry of budget)
|
||||||
var output = "";
|
output += entry.value <= -bigLimit ? $entry.description.slice(-2) : "";
|
||||||
for (var el of budget) {
|
output = output.slice(0, -2);
|
||||||
if (el.value <= -limit) {
|
|
||||||
output += el.description.slice(-2) + " / "; // Emojis are 2 chars
|
|
||||||
}
|
|
||||||
}
|
|
||||||
output = output.slice(0, -2); // Remove last '/ '
|
|
||||||
console.log(output);
|
console.log(output);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
logBigExpenses(1);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user