├── .gitignore ├── README.md ├── imgs ├── Create-a-Field-for-Parameter.png ├── Extract-Class-ExpenseNamer-01.png ├── Extract-Class-ExpenseNamer.png ├── Push-Members-Down-01.png ├── Push-Members-Down-02.png ├── Push-Members-Down.png ├── addTotals.png ├── after-extract-class-ExpenseReporter.png ├── cannot-extract.png ├── change-signature-remove-printer-parameter.png ├── change-signature.png ├── class-diagram.png ├── extract-class-ExpenseReport.png ├── extract-fields.png ├── extract-interface-01.png ├── extract-interface-02.png ├── extract-interface-03.png ├── extract-interface-ExpenseNamer.png ├── extract-method-01.png ├── extract-method-02.png ├── extract-method-03.png ├── extracted-class-ExpenseReport.png ├── feature-envy-01.png ├── feature-envy-02.png ├── feature-envy-03.png ├── fig-01-function-should-do-onething.png ├── fig-02-srp.png ├── fig-03-ocp.png ├── fig-04-feature-envy.png ├── getName.png ├── inline-name.png ├── isMeal.png ├── isOverage.png ├── modify-subclass-01.png ├── modify-subclass-02.png ├── modify-subclass-03.png ├── move-line-up-totalUpExpenses.png ├── move-line-up.png ├── printExpense.png ├── printExpenses.png ├── printExpensesAndTotals.png ├── printHeader.png ├── printTotals.png ├── remove-type-01.png ├── remove-type-02.png ├── remove-type-03.png ├── remove-type-in-constructor-01.png ├── remove-type-in-constructor-02.png ├── safely-delete.png ├── split-for-loop.png ├── totalUpExpenses.png └── type-code-01.png ├── pom.xml ├── refactoring-steps.md └── src ├── main └── java │ └── expensereport │ ├── BreakfastExpense.java │ ├── CarRentalExpense.java │ ├── DinnerExpense.java │ ├── Expense.java │ ├── ExpenseNamer.java │ ├── ExpenseReport.java │ ├── ExpenseReportNamer.java │ ├── ExpenseReporter.java │ └── ReportPrinter.java └── test └── java └── expensereport ├── ExpenseReporterTest.java └── MockReportPrinter.java /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | *.iml 3 | build 4 | target 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/README.md -------------------------------------------------------------------------------- /imgs/Create-a-Field-for-Parameter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/Create-a-Field-for-Parameter.png -------------------------------------------------------------------------------- /imgs/Extract-Class-ExpenseNamer-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/Extract-Class-ExpenseNamer-01.png -------------------------------------------------------------------------------- /imgs/Extract-Class-ExpenseNamer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/Extract-Class-ExpenseNamer.png -------------------------------------------------------------------------------- /imgs/Push-Members-Down-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/Push-Members-Down-01.png -------------------------------------------------------------------------------- /imgs/Push-Members-Down-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/Push-Members-Down-02.png -------------------------------------------------------------------------------- /imgs/Push-Members-Down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/Push-Members-Down.png -------------------------------------------------------------------------------- /imgs/addTotals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/addTotals.png -------------------------------------------------------------------------------- /imgs/after-extract-class-ExpenseReporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/after-extract-class-ExpenseReporter.png -------------------------------------------------------------------------------- /imgs/cannot-extract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/cannot-extract.png -------------------------------------------------------------------------------- /imgs/change-signature-remove-printer-parameter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/change-signature-remove-printer-parameter.png -------------------------------------------------------------------------------- /imgs/change-signature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/change-signature.png -------------------------------------------------------------------------------- /imgs/class-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/class-diagram.png -------------------------------------------------------------------------------- /imgs/extract-class-ExpenseReport.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/extract-class-ExpenseReport.png -------------------------------------------------------------------------------- /imgs/extract-fields.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/extract-fields.png -------------------------------------------------------------------------------- /imgs/extract-interface-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/extract-interface-01.png -------------------------------------------------------------------------------- /imgs/extract-interface-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/extract-interface-02.png -------------------------------------------------------------------------------- /imgs/extract-interface-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/extract-interface-03.png -------------------------------------------------------------------------------- /imgs/extract-interface-ExpenseNamer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/extract-interface-ExpenseNamer.png -------------------------------------------------------------------------------- /imgs/extract-method-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/extract-method-01.png -------------------------------------------------------------------------------- /imgs/extract-method-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/extract-method-02.png -------------------------------------------------------------------------------- /imgs/extract-method-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/extract-method-03.png -------------------------------------------------------------------------------- /imgs/extracted-class-ExpenseReport.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/extracted-class-ExpenseReport.png -------------------------------------------------------------------------------- /imgs/feature-envy-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/feature-envy-01.png -------------------------------------------------------------------------------- /imgs/feature-envy-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/feature-envy-02.png -------------------------------------------------------------------------------- /imgs/feature-envy-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/feature-envy-03.png -------------------------------------------------------------------------------- /imgs/fig-01-function-should-do-onething.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/fig-01-function-should-do-onething.png -------------------------------------------------------------------------------- /imgs/fig-02-srp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/fig-02-srp.png -------------------------------------------------------------------------------- /imgs/fig-03-ocp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/fig-03-ocp.png -------------------------------------------------------------------------------- /imgs/fig-04-feature-envy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/fig-04-feature-envy.png -------------------------------------------------------------------------------- /imgs/getName.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/getName.png -------------------------------------------------------------------------------- /imgs/inline-name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/inline-name.png -------------------------------------------------------------------------------- /imgs/isMeal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/isMeal.png -------------------------------------------------------------------------------- /imgs/isOverage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/isOverage.png -------------------------------------------------------------------------------- /imgs/modify-subclass-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/modify-subclass-01.png -------------------------------------------------------------------------------- /imgs/modify-subclass-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/modify-subclass-02.png -------------------------------------------------------------------------------- /imgs/modify-subclass-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/modify-subclass-03.png -------------------------------------------------------------------------------- /imgs/move-line-up-totalUpExpenses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/move-line-up-totalUpExpenses.png -------------------------------------------------------------------------------- /imgs/move-line-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/move-line-up.png -------------------------------------------------------------------------------- /imgs/printExpense.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/printExpense.png -------------------------------------------------------------------------------- /imgs/printExpenses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/printExpenses.png -------------------------------------------------------------------------------- /imgs/printExpensesAndTotals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/printExpensesAndTotals.png -------------------------------------------------------------------------------- /imgs/printHeader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/printHeader.png -------------------------------------------------------------------------------- /imgs/printTotals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/printTotals.png -------------------------------------------------------------------------------- /imgs/remove-type-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/remove-type-01.png -------------------------------------------------------------------------------- /imgs/remove-type-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/remove-type-02.png -------------------------------------------------------------------------------- /imgs/remove-type-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/remove-type-03.png -------------------------------------------------------------------------------- /imgs/remove-type-in-constructor-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/remove-type-in-constructor-01.png -------------------------------------------------------------------------------- /imgs/remove-type-in-constructor-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/remove-type-in-constructor-02.png -------------------------------------------------------------------------------- /imgs/safely-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/safely-delete.png -------------------------------------------------------------------------------- /imgs/split-for-loop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/split-for-loop.png -------------------------------------------------------------------------------- /imgs/totalUpExpenses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/totalUpExpenses.png -------------------------------------------------------------------------------- /imgs/type-code-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/imgs/type-code-01.png -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/pom.xml -------------------------------------------------------------------------------- /refactoring-steps.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/refactoring-steps.md -------------------------------------------------------------------------------- /src/main/java/expensereport/BreakfastExpense.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/src/main/java/expensereport/BreakfastExpense.java -------------------------------------------------------------------------------- /src/main/java/expensereport/CarRentalExpense.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/src/main/java/expensereport/CarRentalExpense.java -------------------------------------------------------------------------------- /src/main/java/expensereport/DinnerExpense.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/src/main/java/expensereport/DinnerExpense.java -------------------------------------------------------------------------------- /src/main/java/expensereport/Expense.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/src/main/java/expensereport/Expense.java -------------------------------------------------------------------------------- /src/main/java/expensereport/ExpenseNamer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/src/main/java/expensereport/ExpenseNamer.java -------------------------------------------------------------------------------- /src/main/java/expensereport/ExpenseReport.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/src/main/java/expensereport/ExpenseReport.java -------------------------------------------------------------------------------- /src/main/java/expensereport/ExpenseReportNamer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/src/main/java/expensereport/ExpenseReportNamer.java -------------------------------------------------------------------------------- /src/main/java/expensereport/ExpenseReporter.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/src/main/java/expensereport/ExpenseReporter.java -------------------------------------------------------------------------------- /src/main/java/expensereport/ReportPrinter.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/src/main/java/expensereport/ReportPrinter.java -------------------------------------------------------------------------------- /src/test/java/expensereport/ExpenseReporterTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/src/test/java/expensereport/ExpenseReporterTest.java -------------------------------------------------------------------------------- /src/test/java/expensereport/MockReportPrinter.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msbaek/expense/HEAD/src/test/java/expensereport/MockReportPrinter.java --------------------------------------------------------------------------------