[값이나 참조에 영향을 미치는지에 따라]불변 함수(immutable function) : 기존 데이터(입력값이나 외부 상태)를 변경(mutable)하지 않는 함수가변 함수(mutable function) : 입력값이나 외부 상태를 변경하는 함수 [외부 상태나 참조값에 영향을 받거나, 영향을 주는지에 따라]순수 함수(pure function) : 외부 상태를 건드리지 않으며, 입력값이 동일하면 출력값이 동일함을 충족하는 함수 불순 함수(impure function) : 외부 상태를 건드리거나, 입력값이 같아도 결과가 달라질 수 있는 함수🔷 1. 기준별 정의개념기준의미개념기준의미✅ 순수 함수입력과 출력 기준같은 입력 → 같은 출력, 사이드 이펙트 없음❌ 불순 함수입력과 출력 + 부작용 기준같은 입력 → ..
좋은 함수 이름은 함수를 사용하기 쉽고, 유지보수하기도 쉬어진다.함수의 이름을 만들 때 함수 내부 로직이 어떻게 구현되었는지를 설명하는 이름으로 함수 이름을 짓는 경우가 있는데,함수의 이름은 구현을 설명하기 보다는 함수의 용도를 설명하는 이름으로 지어야 한다. 즉, 함수의 이름은 How to do(어떻게 했는지)가 아닌 What to do(무엇을 하는지)를 설명하는 이름을 붙여야 함수의 용도를 이해하기 쉬워진다. 어떻게 구현했는지를 설명하는 이름이 아닌, 어떤 목적일 때 사용하는 함숭인지를 설명하는 이름으로 짓는다. 개념 설명:무엇을 하는지에 집중한 이름은 구현 세부사항만 보여줍니다.왜 하는지에 집중한 이름은 개발자의 의도나 비즈니스 목적을 보여줍니다.이유는?다른 개발자가 함수를 처음 봤을 때, 함수 ..
import java.time.LocalDate;import java.time.Month;public record Paystub(int amount, int bonus, String reasonCode) { public static Paystub noPay(String reasonCode) { return new Paystub(0, 0, reasonCode); }}public class Employee { private boolean isSeparated; private boolean isRetired; private int salary; public Employee(boolean isSeparated, boolean isRetired, int salary) ..
//[Before]public class Calculator { public static void main(String[] args) { List people = List.of( new Person("kim", 18, 28000000), new Person("lee", 19, 30000000), new Person("park", 20, 35000000) ); var averageAge = 0; var averageSalary = 0; for(Person person : people) { averageAge += person.getAge()..

Ch06.08 Introduce Parameter Object 매개변수 객체 만들기//[Before]public class Station {... public List readingsOutsideRange(int min, int max) { return readings.stream() .filter(t -> t.getTemperature() max) .toList(); }}//[After-Step01]public class Station {... public List readingsOutsideRange(NumberRange range) { return readings.stream() .filter(t->t.getTemperature() range.getMax()) .toList..
https://docs.google.com/spreadsheets/d/1nFx-PjZ9Qs3QBZFzaMo6MSUSrWjSsO-iz5kpBtlVRPQ/edit?gid=866204681#gid=866204681 리팩터링 이름 비교 & IDE들이 제공하는 리팩터링 목록_『리팩터링, 2판』(개앞맵시/남기혁 옮김,ABCDEFGHIJKLMNOPQRSTUVWXY2판// 지원 깃허브대표 IDE들이 제공하는 자동 리팩터링// 책에서 소개하는 범용 기법들 외에 각 언어에 특화된 다양한 기법들을 추가로 제공하니 아래 링크를 클릭하여 자세히docs.google.com https://github.com/WegraLee/Refactoring GitHub - WegraLee/Refactoring: 『리팩터링, 2판』(한빛미디어,..