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 / GeneralizeExtractedFunctions.diff
Created November 22, 2018 09:58
(Medium) - How TDD Can Prevent Over-Engineering
assert.strictEqual(actual, expected);
}
- const calculateInterestForGreaterThan2000 = (loanAmount, endOfFirstRange, centsForSecondRange, centsForFirstRange) => {
- const dollarsAboveThresholdForGreaterThan2000 = loanAmount.minus(endOfFirstRange);
- const interestForGreaterThan2000 = centsForSecondRange.minus(centsForFirstRange).multipliedBy(dollarsAboveThresholdForGreaterThan2000);
- return interestForGreaterThan2000;
+ const calculateInterestForGreaterThan2000 = (loanAmount, endOfRange, interestPerDollar, previousInterestPerDollar) => {
+ const dollarsAboveThreshold = loanAmount.minus(endOfRange);
+ const interestToPay = interestPerDollar.minus(previousInterestPerDollar).multipliedBy(dollarsAboveThreshold);
@FagnerMartinsBrack
FagnerMartinsBrack / LasrArgumentForFunction.diff
Created November 22, 2018 09:57
(Medium) - How TDD Can Prevent Over-Engineering
@@ -7,9 +7,9 @@
assert.strictEqual(actual, expected);
}
- const calculateInterestForGreaterThan2000 = (loanAmount, endOfFirstRange, centsForSecondRange) => {
+ const calculateInterestForGreaterThan2000 = (loanAmount, endOfFirstRange, centsForSecondRange, centsForFirstRange) => {
const dollarsAboveThresholdForGreaterThan2000 = loanAmount.minus(endOfFirstRange);
- const interestForGreaterThan2000 = centsForSecondRange.multipliedBy(dollarsAboveThresholdForGreaterThan2000);
+ const interestForGreaterThan2000 = centsForSecondRange.minus(centsForFirstRange).multipliedBy(dollarsAboveThresholdForGreaterThan2000);
return interestForGreaterThan2000;
@FagnerMartinsBrack
FagnerMartinsBrack / FunctionsAfterExtraction.js
Created November 22, 2018 09:56
(Medium) - How TDD Can Prevent Over-Engineering
const calculateInterestForGreaterThan2000 = (loanAmount, endOfFirstRange, centsForSecondRange) => {
const dollarsAboveThresholdForGreaterThan2000 = loanAmount.minus(endOfFirstRange);
const interestForGreaterThan2000 = centsForSecondRange.multipliedBy(dollarsAboveThresholdForGreaterThan2000);
return interestForGreaterThan2000;
};
const calculateInterestForGreaterThan5000 = (loanAmount, endOfSecondRange, centsForThirdRange, centsForSecondRange) => {
const dollarsAboveThresholdForGreaterThan5000 = loanAmount.minus(endOfSecondRange);
const interestForGreaterThan5000 = centsForThirdRange.minus(centsForSecondRange).multipliedBy(dollarsAboveThresholdForGreaterThan5000);
return interestForGreaterThan5000;
};
@FagnerMartinsBrack
FagnerMartinsBrack / ConditionsAfterExtractingToFunctions.js
Created November 22, 2018 09:52
(Medium) - How TDD Can Prevent Over-Engineering
if (loanAmount.greaterThan(END_OF_FIRST_RANGE) && loanAmount.lessThan(Money('$5001.00'))) {
let interestAmount = Money('$0.00');
interestAmount = interestAmount.plus(
calculateInterestForGreaterThan2000(loanAmount, END_OF_FIRST_RANGE, CENTS_FOR_SECOND_RANGE)
);
return interestAmount;
}
if (loanAmount.greaterThan(END_OF_SECOND_RANGE) && loanAmount.lessThan(Money('$10001.00'))) {
let interestAmount = Money('$0.00');
interestAmount = interestAmount.plus(
@FagnerMartinsBrack
FagnerMartinsBrack / UpliftFunctionToCalculateLoanAbove$2000.diff
Created November 22, 2018 09:48
(Medium) - How TDD Can Prevent Over-Engineering
@@ -7,6 +7,12 @@
assert.strictEqual(actual, expected);
}
+ const calculateInterestForGreaterThan2000 = (loanAmount, endOfFirstRange, centsForSecondRange) => {
+ const dollarsAboveThresholdForGreaterThan2000 = loanAmount.minus(endOfFirstRange);
+ const interestForGreaterThan2000 = centsForSecondRange.multipliedBy(dollarsAboveThresholdForGreaterThan2000);
+ return interestForGreaterThan2000;
+ };
+
@FagnerMartinsBrack
FagnerMartinsBrack / CreateFunctionToCalculateLoanAbove$2000.diff
Created November 22, 2018 09:47
(Medium) - How TDD Can Prevent Over-Engineering
const CENTS_FOR_FOURTH_RANGE = Money('$0.21');
if (loanAmount.greaterThan(END_OF_FIRST_RANGE) && loanAmount.lessThan(Money('$5001.00'))) {
- const dollarsAboveThreshold = loanAmount.minus(END_OF_FIRST_RANGE);
- const interestAmount = CENTS_FOR_SECOND_RANGE.multipliedBy(dollarsAboveThreshold);
+ const calculateInterestForGreaterThan2000 = (loanAmount, endOfFirstRange, centsForSecondRange) => {
+ const dollarsAboveThresholdForGreaterThan2000 = loanAmount.minus(endOfFirstRange);
+ const interestForGreaterThan2000 = centsForSecondRange.multipliedBy(dollarsAboveThresholdForGreaterThan2000);
+ return interestForGreaterThan2000;
+ };
@FagnerMartinsBrack
FagnerMartinsBrack / interestToPayForWithLastRange.js
Created November 22, 2018 09:45
(Medium) - How TDD Can Prevent Over-Engineering
const interestToPayFor = (loanAmount) => {
const END_OF_FIRST_RANGE = Money('$2000.00');
const END_OF_SECOND_RANGE = Money('$5000.00');
const END_OF_THIRD_RANGE = Money('$10000.00');
const CENTS_FOR_FIRST_RANGE = Money('$0.00');
const CENTS_FOR_SECOND_RANGE = Money('$0.09');
const CENTS_FOR_THIRD_RANGE = Money('$0.14');
const CENTS_FOR_FOURTH_RANGE = Money('$0.21');
if (loanAmount.greaterThan(END_OF_FIRST_RANGE) && loanAmount.lessThan(Money('$5001.00'))) {
const dollarsAboveThreshold = loanAmount.minus(END_OF_FIRST_RANGE);
@FagnerMartinsBrack
FagnerMartinsBrack / CopyLogicForGreaterThan$2000.diff
Created November 22, 2018 09:43
(Medium) - How TDD Can Prevent Over-Engineering
if (loanAmount.equalsTo(Money('$10001.00'))) {
let interestAmount = Money('$0.00');
+ const dollarsAboveThresholdForSecondRange = loanAmount.minus(END_OF_FIRST_RANGE);
+ const interestAmountForSecondRange = CENTS_FOR_SECOND_RANGE.multipliedBy(dollarsAboveThresholdForSecondRange);
+ interestAmount = interestAmount.plus(interestAmountForSecondRange);
+
const dollarsAboveThresholdForThirdRange = loanAmount.minus(END_OF_SECOND_RANGE);
const interestAmountForThirdRange = CENTS_FOR_THIRD_RANGE.minus(CENTS_FOR_SECOND_RANGE).multipliedBy(dollarsAboveThresholdForThirdRange);
interestAmount = interestAmount.plus(interestAmountForThirdRange);
@FagnerMartinsBrack
FagnerMartinsBrack / CopyLogicForGreaterThan$5000.diff
Created November 22, 2018 09:41
(Medium) - How TDD Can Prevent Over-Engineering
if (loanAmount.equalsTo(Money('$10001.00'))) {
let interestAmount = Money('$0.00');
+ const dollarsAboveThresholdForThirdRange = loanAmount.minus(END_OF_SECOND_RANGE);
+ const interestAmountForThirdRange = CENTS_FOR_THIRD_RANGE.minus(CENTS_FOR_SECOND_RANGE).multipliedBy(dollarsAboveThresholdForThirdRange);
+ interestAmount = interestAmount.plus(interestAmountForThirdRange);
+
const dollarsAboveThresholdForFourthRange = Money('$10001.00').minus(Money('$10000.00'));
const interestAmountForFourthRange = Money('$0.21').minus(Money('$0.14')).multipliedBy(dollarsAboveThresholdForFourthRange);
interestAmount = interestAmount.plus(interestAmountForFourthRange);
@FagnerMartinsBrack
FagnerMartinsBrack / previousCodeAsReference.diff
Created November 22, 2018 09:40
(Medium) - How TDD Can Prevent Over-Engineering
@@ -21,7 +21,7 @@
return interestAmount;
}
- if (loanAmount.greaterThan(END_OF_SECOND_RANGE)) {
+ if (loanAmount.greaterThan(END_OF_SECOND_RANGE) && loanAmount.lessThan(Money('$10001.00'))) {
let interestAmount = Money('$0.00');
const dollarsAboveThresholdForSecondRange = loanAmount.minus(END_OF_FIRST_RANGE);
@@ -35,6 +35,16 @@