μ΄λ²μ μ°μνν ν¬μ½μ€μμ ν ν¬λ컬 λΌμ΄ν μΈμ μ μ§ννλ€. κ±°κΈ°μ κΈ°μ μ μΈ λ΄μ©μ λν΄μ μμ±ν΄μΌ νλλ°, νμ κ΄μ¬μκ³ μ¬λ―Έμμ΄νλ μ£Όμ μΈ ν μ€νΈ μ£Όλ κ°λ°μ λν΄μ μμ±ν΄λ³΄λ©΄ μ’μ κ² κ°μ ν΄λΉ λ΄μ©μ μμ±νλ€. κ·Όλ° κ΄μ¬μκ³ μ¬λ―Έμμ΄ νλ μ£Όμ μ§λ§ μ€μ λ‘ ν μ€νΈ μ£Όλ κ°λ°λ§μΌλ‘ κ°λ°μ νμ§ μλλ€. κ·Έλ¬λ€λ³΄λ μ΄ κ°κ°μ μμ΄λ²λ¦΄ κ²λ§ κ°κΈ°λ νκ³ , ν리μ½μ€κ° 본격μ μΌλ‘ μμλκΈ°λ ν΄μ 1μ£Όμ°¨ λ¬Έμ μΈ 'λ¬Έμμ΄ κ³μ°κΈ°'λ₯Ό ν μ€νΈ μ£Όλ κ°λ°λ§μΌλ‘ νμ΄λ³΄μλ€.
PR λ§ν¬: https://github.com/yeezy-com/java-calculator-7/pull/1
ν μ€νΈ μ£Όλ κ°λ°μ ν΅ν λ¬Έμμ΄ κ³μ°κΈ° ꡬν by yeezy-com · Pull Request #1 · yeezy-com/java-calculator-7
github.com
μ μΆνμ§ μμκ³ , κ°μΈ λ ν¬ PRμ΄λ€. 컀λ°μ μ΄ 125κ°κ° λμλ€.
μ§κΈλΆν°λ ν
μ€νΈ μ£Όλ κ°λ°λ§μΌλ‘ ν΄λ³΄λ©΄μ λλ μ μ μ’ νμ΄λ³΄λ €κ³ νλ€. μ΄λ₯Ό μν΄ λΉκ΅κ΅°μ΄ μμΌλ©΄ μ’μ κ² κ°μμ 7κΈ° ν리μ½μ€ μμ μ νμλ PRμ λ€κ³ μλ€. κ·Όλ°, λλ μ λΏλ§ μλλΌ μκ°μ νλ¦λλ‘ μμ±νλ€λ³΄λ κΈμ΄ κ°λ μ£Όμ λ₯Ό λ²μ΄λ μλ μλ€. μΌλ¨ READMEλ₯Ό μμ±νλ λ°©μμ΄λ μΈμΈν λΆλΆλ€λΆν° μ°¨μ΄κ° κ½€ λ§μ΄ λ¬λ€.


ν리μ½μ€ λΉμμλ ν μ€νΈ μ£Όλ κ°λ°μ΄λΌλ κ°λ μ‘°μ°¨ λͺ¨λ₯΄κ³ μμκΈ° λλ¬Έμ, μμνκΈ° μ μ μ΄λ€ μꡬμ¬νμ΄ μμμ§ κ³ λ―Όνλ μκ°μ΄ κΈΈμλ€. νμ§λ§, μ²μλΆν° λͺ¨λ κ²μ μκ°ν μ μμκΈ° λλ¬Έμ ꡬννλ©΄μ μ§μμ μΌλ‘ μꡬμ¬νμ μΆκ°ν΄κ°λ€. κ·Έλ¦¬κ³ μ΄λ¬ν μ¬νλ€μ ν λ²μ νλμ© κ΅¬ννμ§ μκ³ , κ³μ λ€λ₯Έ μꡬμ¬νλ€κ³Ό μ΄μ°λ¬μ§μ μκ°νλλΌ λ‘μ§ μμ²΄κ° μμ λλ μΌλ μ¦μλ€.
ν μ€νΈ μ£Όλ κ°λ°λ‘ νμμ λλ μ‘°κΈ λ¬λλ€. λΉμ₯ λ¬Έμ μμ 보μ΄λ κ²λ€λ§ μ§§κ² μ κ³ λ°λ‘ ꡬνμ νλ€. κ·Έ κ³Όμ μμ μλ‘μ΄ μꡬμ¬νμ΄ λ³΄μ΄λ©΄ λΉμ₯ κ·Έκ²μ λν΄ μκ°νκΈ° 보λ€λ READMEμ κ°λ¨ν μ κΈ°λ§ νλ€. κ·Έλ¦¬κ³ , ν μ¬μ΄ν΄μ λκ³ λλ©΄ μΆκ°λ μꡬμ¬νμ λν΄μ λ€μ μ¬μ΄ν΄μ λλ λ°©μμΌλ‘ μ§ννλ€. κ·Έλ¬λ€λ³΄λ λΉμ₯ λ μμ 보μ΄λ μꡬμ¬νμ μ’ λ μ§μ€ν μ μμλ κ² κ°λ€. κ·Έλμ μκ°λ³΄λ€ λ‘μ§ μμ²΄κ° λ³κ²½λλ μΌμ μμκ³ , κ²μ¦ μ¬μ΄μ κ΄κ³ μ λλ§ μ’ μκ°νμλ€.
μ΄ λΆλΆμ λν΄μ ν μ€νΈ μ£Όλ κ°λ° μμ²΄κ° κ²½νμ 쀬λ€κΈ°μλ μ‘°κΈ μ λ§€ν κ² κ°κΈ°λ νλ€. ν리μ½μ€λ₯Ό νλ κ·Έλμ λμ μ§κΈμ λλ μ¬λ¬ λ°©λ©΄μμ μ°¨μ΄κ° κ½€ ν΄ κ²μ΄κΈ° λλ¬Έμ.. μ, νμ§λ§ μ§ννλ μ€μ λ€λ₯Έ μΌμ νκ³ λ€μ λμμ μ½λλ₯Ό μ§€λ ν μ€νΈ μ£Όλ κ°λ°μ΄ νμ€ν λμμ΄ ν¬κΈ΄ νλ€. μ΄μ μλ λ€μ μ리μ μμΌλ©΄ 'λ΄κ° λ ꡬννκ³ μμμ§?'μ κ°μ κ³ λ―ΌμΌλ‘ μμνλ κ² κ°μλ°, ν μ€νΈ μ£Όλ κ°λ°μ κ·Έ μ§νλκ° νμ€νκ² λμ 보μ΄λκΉ μ΄λ¬ν νμμ΄ μμλ€. νΉν μ΄ λΆλΆμ 컀λ°μ μΈμΈνκ² λλ μ λ κ·Έλ° κ² κ°κΈ°λ νλ€. κ·Όλ° μ»€λ°μ κ·Έμ ν μ€νΈ μ£Όλ κ°λ° μ§ν κ³Όμ μ μν΄ μΈμΈνκ² λ¨κΈ΄ κ²μ΄μ§ λ³΄ν΅ λͺ¨λ μ¬μ΄ν΄μ λκ³ νλμ 컀λ°μ λ¨κΈ°λκ² μ’μ κ² κ°λ€.


μ΄ λΆλΆλ κ²½νμ μ°¨μ΄κ° ν¬λ€κ³ μκ°νκΈ΄ νμ§λ§, ν μ€νΈ μ£Όλ κ°λ°μ κ³Όν μ€κ³λ₯Ό μ΄λμ λ λ°©μ§ν΄μ£Όλ κ² κ°λ€. ν리μ½μ€ μμ μλ μλ°λ‘ λκ° κ°λ°νλκ±Έ μ²μ ν΄λ³΄κΈ°λν΄μ λ¨λ€ νλ―μ΄ λ°λΌνλ€. κ·Έλμ μ΄λ²μ λΉκ΅κ΅°μ΄ λμ§ λͺ»ν κ² κ°λ€. νμ¬λ Splitter, Calculator μ λλ‘ λ§λ¬΄λ¦¬νλ€. κ·Έλ¦¬κ³ μ΄λ° κ°μ²΄λ₯Ό λ§λλ κ³Όμ μμ ν μ€νΈλ₯Ό λ¨Όμ μμ±νκ² λλκΉ, μΈν°νμ΄μ€λ₯Ό λ¨Όμ κ³ λ―Όνκ² λλ€.
μ΄κ² λ ν μ€νΈμ λͺ©μ μμ²΄κ° ν μ€νΈ λ©μλ μ΄λ¦μΌλ‘ λνλλ€ λ³΄λκΉ, μΈν°νμ΄μ€ μ΄λ¦μ κ³ λ―Όνλ μκ°λ μ§§μλ€. μμ κ°μΌλ©΄ ꡬνμ λ¨Όμ νκ³ μ΄λ¦μ μκ°νμ κ²μ΄λ€. μ΄λ°κ±΄ μ°Έ ν μ€νΈ μ£Όλ κ°λ°μ μ₯μ μ΄λΌκ³ μκ°νλ€.
μ.. μ§λΆνκΈ΄ νλ°, 리ν©ν°λ§ κ³Όμ μμλ λλ €μμ΄ λνλ€. ν μ€νΈλΌλ μ΅μνμ λ°©μ΄λ§μ΄ μ‘΄μ¬νλκΉ λ΄λΆ ꡬνμ νν λ°κΎΈλ κ²μ ν° λλ €μμ΄ μμλ€. κ·Έλ¦¬κ³ μ΄κ±΄ μ΄λ²μ μ§ννλ©΄μ μκ² λ건λ°, ν μ€νΈ μ£Όλ κ°λ°μμλ 'κ°μ§ ꡬν'μ΄ ν΅μ¬μ΄λ€. κ·Όλ° μ΄ κ°μ§ ꡬνμ 'μ§μ§ ꡬν'μΌλ‘ λ§λλ κ²λ 리ν©ν°λ§ κ³Όμ μ ν¬ν¨λλ€λ μ μ΄λ€. μλ₯Ό νλ λ€λ©΄
@Test
void λ_μμ_ν©μ_λ°ννλ€() {
final var calculator = new Calculator();
final var sum = calculator.sum(2, 4);
assertThat(sum).isEqualTo(6);
}
κ°λ¨νκ² μ΄λ¬ν ν μ€νΈκ° μλ€κ³ νμ. κ·Έλ¦¬κ³ νμ¬λ red λ¨κ³μ ν΄λΉνλ€. κ·Έλ¬λ©΄ ν μ€νΈ μ£Όλ κ°λ°μμλ μ΄λ₯Ό λΉ λ₯΄κ² greenμΌλ‘ λ§λ€κΈ° μν΄μ μ΄λ° λ°©μμΌλ‘ ꡬνν κ²μ΄λ€.
public class Calculator {
public int sum(int n1, int n2) {
return 6;
}
}
μ΄κ² λ°λ‘ ν μ€νΈ μ£Όλ κ°λ°μμ λ§νλ 'κ°μ§ ꡬν'μ΄λ€. μ΄μ μλ μ΄λ¬ν κ°μ§ ꡬνμ μ§μ§ ꡬνμΌλ‘ λ§λ€κΈ° μν΄μλ λΉμ·ν ν μ€νΈλ₯Ό κ³μ μ¬λ¬ κ° λ§λ€μ΄κ°λ©° green λ¨κ³λ₯Ό κ±°μ³μΌ νλ€κ³ μκ°νμλ€. μλ₯Ό λ€λ©΄ μ΄λ° λ°©μμ΄λ€.
@Test
void λ_μμ_ν©μ_λ°ννλ€() {
final var calculator = new Calculator();
final var sum = calculator.sum(2, 4);
assertThat(sum).isEqualTo(6);
}
@Test
void λ_μμ_ν©μ_λ°ννλ€2() {
final var calculator = new Calculator();
final var sum = calculator.sum(4, 4);
assertThat(sum).isEqualTo(8);
}
@Test
void λ_μμ_ν©μ_λ°ννλ€3() {
final var calculator = new Calculator();
final var sum = calculator.sum(2, 3);
assertThat(sum).isEqualTo(5);
}
μ΄λ° μ¬μ΄ν΄μ λλ€λ³΄λ©΄ κ²°κ΅ μ§μ§ ꡬνμ λ§λ€κ² λλ€λ μκ°μ΄μλ€.
public class Calculator {
public int sum(int n1, int n2) {
return n1 + n2;
}
}
νμ§λ§, μΌνΈ 벑μ μ΄λ¬ν 'μ§μ§ ꡬνμ λ§λλ κ²'μ‘°μ°¨ 리ν©ν°λ§μ κ³Όμ μΌλ‘ λ³΄κ³ μμλ€. κ·Έ κ³Όμ μ μκ°λ³΄λ€ μΈμΈνλ€. μλλ κ·Έ κ³Όμ μ λνλΈ κ²μ΄λ€. μ ννμ§ μμ μ μμ§λ§ λλ μ΄λ κ² λ°μλ€μλ€λ μ μ μκ³ λ΄μ£Όλ©΄ μ’μ κ² κ°λ€.
@Test
void λ_μμ_ν©μ_λ°ννλ€() {
final var calculator = new Calculator();
final var sum = calculator.sum(2, 4);
assertThat(sum).isEqualTo(6);
}
public class Calculator {
public int sum(int n1, int n2) {
return 6;
}
}
ν μ€νΈ μ£Όλ κ°λ°μμλ 리ν©ν°λ§ κ³Όμ μμ κ°μ₯ κ°μ‘°νλ건 'μ€λ³΅ μ κ±°'μ΄λ€. ν μ€νΈμ Calculator μ¬μ΄μ μ€λ³΅μ΄ 보μ΄λκ°? λλ μ²μμ λκ°νμ§λ§, '6'μ΄ λ°λ‘ μ€λ³΅μ΄λ€. μ΄λ₯Ό μΌνΈ 벑μ μ€λ³΅μ΄ ν μ€νΈμ μλ λ°μ΄ν°μ μ½λμ μλ λ°μ΄ν° μ¬μ΄μ μ‘΄μ¬νλ€κ³ νννλ€. κ·ΈλΌ μ΄λ₯Ό μ΄λ»κ² κ°μ ν κΉ?
@Test
void λ_μμ_ν©μ_λ°ννλ€() {
final var calculator = new Calculator();
final var sum = calculator.sum(2, 4);
assertThat(sum).isEqualTo(6);
}
public class Calculator {
public int sum(int n1, int n2) {
return 2 + 4;
}
}
μ΄λ κ² 6μ 2 + 4λ‘ λ°κΎΌλ€. νμ§λ§, μ¬κΈ°μ λ μ¬λ°λ μ μ 2μ 4λ μ€λ³΅μ΄λΌλ μ μ΄λ€. ν μ€νΈ μ½λμ 2, 4κ° μ‘΄μ¬νκΈ° λλ¬Έμ΄λ€. κ·ΈλΌ λ¨Όμ 2λ₯Ό μ΄λμ μ»μ μ μλκ°? 'int n1'μ΄λ€.
@Test
void λ_μμ_ν©μ_λ°ννλ€() {
final var calculator = new Calculator();
final var sum = calculator.sum(2, 4);
assertThat(sum).isEqualTo(6);
}
public class Calculator {
public int sum(int n1, int n2) {
return n1 + 4;
}
}
μμλ₯Ό μΈμλ‘ λ체νλ€. κ·Έλ¬λ©΄ λ€μ 4κ° λ¨λλ€. μ΄ λν μ€λ³΅μ΄λ―λ‘ κ°μ κ³Όμ μ λ°μ λ€μμ²λΌ μ κ±°ν μ μμ κ²μ΄λ€.
@Test
void λ_μμ_ν©μ_λ°ννλ€() {
final var calculator = new Calculator();
final var sum = calculator.sum(2, 4);
assertThat(sum).isEqualTo(6);
}
public class Calculator {
public int sum(int n1, int n2) {
return n1 + n2;
}
}
μ΄λ¬λ©΄ 'μ§μ§ ꡬν'μ΄ μμ±λλ€. μ΄ κ³Όμ μμ²΄κ° λκ² λ¬΄μλ―Έ ν΄λ³΄μΌ μλ μλ€. νμ§λ§, μ΄λ° μΈμΈν ꡬν κ³Όμ μ λ°μλκ°λ λ₯λ ₯μ κ°μ‘°νκ³ μΆλ€. μ§κΈμ μμ κ° λκ² λ¨μν΄μ μμν μ μμ§λ§ μ΄λ €μ΄ μꡬμ¬ν μ΄μλ€κ³ μκ°ν΄λ³΄μ. μ΄λ¬ν λ₯λ ₯μ΄ μλ€λ©΄, μλ§ ν λν μ΄λ‘ ꡬνμ νκ² λ κ²μ΄κ³ .. κ²°κ΅ λ‘€λ°±μ κ³Όμ μ λ§μ΄ κ²ͺμ κ²μ΄λ€. νμ§λ§ μ΄λ° λ₯λ ₯μ ν΅ν΄ λ¬Έμ λ₯Ό μ’ λ μκ² λλμ΄ μ 볡ν μ μλ€. λλ μ΄λ¬ν μ μμ ν μ€νΈ μ£Όλ κ°λ°μ΄ λ§μ λμμ΄ λμλ€κ³ μκ°νλ€. μ΄λ¬ν λΆλΆμ΄ 곡κ°μ΄ μκ°λ€λ©΄ μμ¬μ΄κ±°μ§ λ μ΄μ© μ μλ€.
νμ§λ§ μ΄λ κ² κ°μ‘°ν΄λ λ₯λ ₯μ μλ κ²κ³Ό μ°λ κ²μ μ°¨μ΄κ° νμ€ν μλ€. λ§μ ꡬννλ€λ³΄λ μ΄λκΉμ§κ° μΈμΈν ꡬνμΌκΉ? λΌλ κ³ λ―Όλ λκ² λ§μ΄ νλ€. κ·Έλ¬λ€λ³΄λ κ½€ μ€λ μκ°μ΄ 걸리기λ νλ€.. μ§μμ μΌλ‘ ν μ€νΈ μ£Όλ κ°λ°μ νμ΄λ³΄λκ² μ’μ κ² κ°λ€. μΌνΈ 벑λ ν λ¬Έμ λ₯Ό μ¬λ¬ λ² νμ΄λ³΄λκ±Έ μΆμ²νκΈ°λ νλ€. λ§€λ² κ΅¬νν λλ§λ€ λ€λ₯Έ λ°©μμΌλ‘ λ§λ€μ΄μ§λκ² λ¬λ―ΈλΌκ³ νλ€.
λ μκΈ°ν κ² μ΄λ€ κ²μ΄ μμκΉ.. μ, ν μ€νΈ μ£Όλ κ°λ°μ ν΅ν΄ ꡬνμ λ€ ν νμ μ ν리μΌμ΄μ μ μ€μ λμμΈ μ λ ₯ - μΆλ ₯μ κΈ°λ₯λ€μ λ§λ€λ©° 쑰립νλλ°, μμνμ λμ λ€λ₯΄κ² μ€μ μ λ ₯μμ μλ¬κ° λ°μνκΈ°λ νλ€. `\n` μ΄ κ°νλ¬Έμκ° λ¬Έμ μλ κ²μΈλ°, ν μ€νΈλ ν΅κ³Όνλλ° μκΎΈ μ€μ μ λ ₯μΌλ‘ μ²λ¦¬νλ©΄ μ€ν¨νλ κ·Έλ° λ¬Έμ κ° μμλ€. κ·Έλμ κ½€ μ λ¨Ήμλ κΈ°μ΅μ΄ λλ€.
λ, μ΄κ² green κ³Όμ μ΄νμ μλ‘μ΄ red ν μ€νΈλ₯Ό μμ±ν΄μΌ νλλ° μ λ¨μμ ꡬνν κ²λ€ λλ¬Έμ μλ‘κ² μμ±ν red ν μ€νΈλ€μ΄ λ°λ‘ μ±κ³΅νλ κ²½μ°λ μμλ€. νΉν, κ²μ¦μ΄ κ·Έλ¬λ€. μ΄λ° κ²½μ°μλ μμΈ λ©μμ§κΉμ§ ν μ€νΈ ν΅κ³Ό κΈ°μ€μΌλ‘ μΌμμ red ν μ€νΈλ₯Ό λ§λ€κΈ°λ νλ€. μ΄ λ°©μμ μκ°νκΈ° μ μλ `red-green` μ΄λΌλ 컀λ°μΌλ‘ νλ λ¨κ²Όλλ°, μ΄ λΆλΆμ μ’ μμ½κΈ°λ νλ€. μ΄μ λν΄ claudeλ ν μ리 νλ€.


ν μ€νΈ μ£Όλ κ°λ°μ 'κ°λ°'μ μν λ°©λ²λ‘ μ΄μ§λ§ κ°λ°μλ€μ μ¬κ³ κ³Όμ μ체λ₯Ό λ°κΏμ€λ€λ μ μμ λκ² λ§€λ ₯μ μ΄λ€. λν, μ΄λ° μ¬κ³ κ³Όμ μ체λ λ΄κ² λκ² μ λ§λλ€κ³ λκΌλ€. μμΌλ‘λ μ’ μ’ μ΄λ¬ν λ¬Έμ λ μ€μ νλ‘μ νΈμμλ ν μ€νΈ μ£Όλ κ°λ°μ ν΅ν΄ μ μ΄μ΄λκ° κ² κ°λ€. λ€λ€ ν μ€νΈ μ£Όλ κ°λ°μ λ§€λ ₯μ λλΌκ³ μλν΄λ΄€μΌλ©΄ νλ€.
'κ°λ° > μ°μνν ν¬μ½μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| μ€μ΅μ ν΅ν ν μ€νΈ μ£Όλ κ°λ°(TDD) (1) | 2025.11.21 |
|---|---|
| BufferedReaderμ readLine()μΌλ‘ HTTP μμ² νμ± μ€ μκΈ΄ λ¬Έμ (1) | 2025.09.08 |
| μ°ν μ½ λ 벨 2 νκ³ (4) | 2025.06.13 |
| μ°ν μ½ λ 벨 2μμμ μΈ λ²μ§Έ λ―Έμ νκ³ (17) | 2025.06.01 |
| μλΉμ€ ν μ€νΈ κ°μ νκΈ° (6) | 2025.05.26 |