Skip to content

Instantly share code, notes, and snippets.

View FagnerMartinsBrack's full-sized avatar
🎯
Focusing

Fagner Brack FagnerMartinsBrack

🎯
Focusing
View GitHub Profile
@FagnerMartinsBrack
FagnerMartinsBrack / DynamicIndex.diff
Created November 22, 2018 10:44
(Medium) - How TDD Can Prevent Over-Engineering
let interestAmount = Money('$0.00');
- if (loanAmount.greaterThan(ranges[0].endOfRange)) {
- interestAmount = interestAmount.plus(calculateInterest(loanAmount, ranges[0]));
- }
-
- if (loanAmount.greaterThan(ranges[1].endOfRange)) {
- interestAmount = interestAmount.plus(calculateInterest(loanAmount, ranges[1]));
- }
-
@FagnerMartinsBrack
FagnerMartinsBrack / MoveRangesIntoArray.diff
Created November 22, 2018 10:43
(Medium) - How TDD Can Prevent Over-Engineering
const greaterThan5000 = { endOfRange: Money('$5000.00'), interestPerDollar: Money('$0.14'), previousInterestPerDollar: Money('$0.09') };
const greaterThan10000 = { endOfRange: Money('$10000.00'), interestPerDollar: Money('$0.21'), previousInterestPerDollar: Money('$0.14') };
+ // You can move this into a configuration file so that changes
+ // in the behavior doesn't require code changes
+ const ranges = [greaterThan2000, greaterThan5000, greaterThan10000];
+
let interestAmount = Money('$0.00');
- if (loanAmount.greaterThan(Money('$2000.00'))) {
@FagnerMartinsBrack
FagnerMartinsBrack / CodeAfterConditionsHandleSingleCalculation.js
Created November 22, 2018 10:42
(Medium) - How TDD Can Prevent Over-Engineering
const interestToPayFor = (loanAmount) => {
const greaterThan2000 = { endOfRange: Money('$2000.00'), interestPerDollar: Money('$0.09'), previousInterestPerDollar: Money('$0.00') };
const greaterThan5000 = { endOfRange: Money('$5000.00'), interestPerDollar: Money('$0.14'), previousInterestPerDollar: Money('$0.09') };
const greaterThan10000 = { endOfRange: Money('$10000.00'), interestPerDollar: Money('$0.21'), previousInterestPerDollar: Money('$0.14') };
let interestAmount = Money('$0.00');
if (loanAmount.greaterThan(Money('$2000.00'))) {
interestAmount = interestAmount.plus(calculateInterest(loanAmount, greaterThan2000));
}
if (loanAmount.greaterThan(Money('$5000.00'))) {
interestAmount = interestAmount.plus(calculateInterest(loanAmount, greaterThan5000));
@FagnerMartinsBrack
FagnerMartinsBrack / RemoveDuplicationFor$5000Range.diff
Created November 22, 2018 10:41
(Medium) - How TDD Can Prevent Over-Engineering
interestAmount = interestAmount.plus(calculateInterest(loanAmount, greaterThan2000));
}
- if (loanAmount.greaterThan(Money('$5000.00')) && loanAmount.lessThan(Money('$10001.00'))) {
+ if (loanAmount.greaterThan(Money('$5000.00'))) {
interestAmount = interestAmount.plus(calculateInterest(loanAmount, greaterThan5000));
}
if (loanAmount.greaterThan(Money('$10000.00'))) {
- interestAmount = interestAmount.plus(calculateInterest(loanAmount, greaterThan5000));
@FagnerMartinsBrack
FagnerMartinsBrack / RemoveDuplicationFor$2000Range.diff
Last active November 22, 2018 10:41
(Medium) - How TDD Can Prevent Over-Engineering
let interestAmount = Money('$0.00');
- if (loanAmount.greaterThan(Money('$2000.00')) && loanAmount.lessThan(Money('$5001.00'))) {
+ if (loanAmount.greaterThan(Money('$2000.00'))) {
interestAmount = interestAmount.plus(calculateInterest(loanAmount, greaterThan2000));
}
if (loanAmount.greaterThan(Money('$5000.00')) && loanAmount.lessThan(Money('$10001.00'))) {
- interestAmount = interestAmount.plus(calculateInterest(loanAmount, greaterThan2000));
interestAmount = interestAmount.plus(calculateInterest(loanAmount, greaterThan5000));
@FagnerMartinsBrack
FagnerMartinsBrack / FocusOnTheTwoFirstConditions.js
Created November 22, 2018 10:37
(Medium) - How TDD Can Prevent Over-Engineering
let interestAmount = Money('$0.00');
if (loanAmount.greaterThan(Money('$2000.00')) && loanAmount.lessThan(Money('$5001.00'))) {
interestAmount = interestAmount.plus(calculateInterest(loanAmount, greaterThan2000));
}
if (loanAmount.greaterThan(Money('$5000.00')) && loanAmount.lessThan(Money('$10001.00'))) {
interestAmount = interestAmount.plus(calculateInterest(loanAmount, greaterThan2000));
interestAmount = interestAmount.plus(calculateInterest(loanAmount, greaterThan5000));
}
@FagnerMartinsBrack
FagnerMartinsBrack / SingleInterestAmountReturn.diff
Created November 22, 2018 10:36
(Medium) - How TDD Can Prevent Over-Engineering
const greaterThan5000 = { endOfRange: Money('$5000.00'), interestPerDollar: Money('$0.14'), previousInterestPerDollar: Money('$0.09') };
const greaterThan10000 = { endOfRange: Money('$10000.00'), interestPerDollar: Money('$0.21'), previousInterestPerDollar: Money('$0.14') };
- if (loanAmount.greaterThan(Money('$2000.00')) && loanAmount.lessThan(Money('$5001.00'))) {
- let interestAmount = Money('$0.00');
+ let interestAmount = Money('$0.00');
+ if (loanAmount.greaterThan(Money('$2000.00')) && loanAmount.lessThan(Money('$5001.00'))) {
interestAmount = interestAmount.plus(calculateInterest(loanAmount, greaterThan2000));
-
@FagnerMartinsBrack
FagnerMartinsBrack / interestToPayForAfterYouRemoveDuplication.js
Created November 22, 2018 10:35
(Medium) - How TDD Can Prevent Over-Engineering
const interestToPayFor = (loanAmount) => {
const greaterThan2000 = { endOfRange: Money('$2000.00'), interestPerDollar: Money('$0.09'), previousInterestPerDollar: Money('$0.00') };
const greaterThan5000 = { endOfRange: Money('$5000.00'), interestPerDollar: Money('$0.14'), previousInterestPerDollar: Money('$0.09') };
const greaterThan10000 = { endOfRange: Money('$10000.00'), interestPerDollar: Money('$0.21'), previousInterestPerDollar: Money('$0.14') };
if (loanAmount.greaterThan(Money('$2000.00')) && loanAmount.lessThan(Money('$5001.00'))) {
let interestAmount = Money('$0.00');
interestAmount = interestAmount.plus(calculateInterest(loanAmount, greaterThan2000));
return interestAmount;
}
if (loanAmount.greaterThan(Money('$5000.00')) && loanAmount.lessThan(Money('$10001.00'))) {
@FagnerMartinsBrack
FagnerMartinsBrack / UpliftRange.diff
Created November 22, 2018 10:01
(Medium) - How TDD Can Prevent Over-Engineering
@@ -7,12 +7,7 @@
assert.strictEqual(actual, expected);
}
- const calculateInterestForGreaterThan2000 = (loanAmount, endOfRange, interestPerDollar, previousInterestPerDollar) => {
- const greaterThan2000 = {
- endOfRange: endOfRange,
- interestPerDollar: interestPerDollar,
- previousInterestPerDollar: previousInterestPerDollar
- };
@FagnerMartinsBrack
FagnerMartinsBrack / StoreRangeInLiteral.diff
Created November 22, 2018 10:00
(Medium) - How TDD Can Prevent Over-Engineering
}
const calculateInterestForGreaterThan2000 = (loanAmount, endOfRange, interestPerDollar, previousInterestPerDollar) => {
- const dollarsAboveThreshold = loanAmount.minus(endOfRange);
- const interestToPay = interestPerDollar.minus(previousInterestPerDollar).multipliedBy(dollarsAboveThreshold);
+ const greaterThan2000 = {
+ endOfRange: endOfRange,
+ interestPerDollar: interestPerDollar,
+ previousInterestPerDollar: previousInterestPerDollar
+ };