• μλ νμΈμ~ μ΄μ μ μ΄μνλ λΈλ‘κ·Έ λ° GitHub, κ³΅λΆ λ΄μ©μ μ 리νλ Study-GitHub κ° μμ΅λλ€!
• π
β μ°μνν ν¬μΈλ―Έλ 190425 TDD 리ν©ν λ§ by μλ°μ§κΈ° λ°μ¬μ±λ
μλ νμΈμ! μ΄λ²μ μ λ§ μ’μ κ°μλ₯Ό λ³΄κ² λμ΄μ μ 리νκ³ μ κΈμ μ°λ €κ³ ν©λλ€!
β
λ³Έ κ°μλ TDD, 리ν©ν λ§ μ°μ΅λ°©λ²μ λν κ°μμ΄μ§λ§ μ λ 리ν©ν λ§μ λν΄ μ 리λ₯Ό ν΄λ³΄μμ΅λλ€.
β
μμμμ μ λ΄μ©μΈ 1~2λ¨κ³λ TDDμ λν λ΄μ©μ΄κ³ , 3λ¨κ³λΆν° 리ν©ν λ§κ³Ό κ΄λ ¨λ λ΄μ©μ λλ€.
β
β
리ν©ν λ§κ³Ό κ΄λ ¨ν μ μ½μ¬ν, λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€.
• Java Code Conventionμ μ§ν€λ©΄μ νλ‘κ·Έλλ°μ νλ€. https://google.github.io/styleguide/javaguide.html https://myeonguni.tistory.com/1596
|
μμ κ°μ κ³Όμ μ μ§ν€λ©΄μ, λ λμκ° ν¨μ(λ©μλ)μ λΌμΈ μλ₯Ό μ€μ΄κ±°λ, Indentμ depthλ₯Ό 1κΉμ§λ§ νμ©νλλ‘ λ κ°μ ν΄ λκ°λ©΄μ 리ν©ν λ§μ μ§νν©λλ€.
β
β
리ν©ν λ§μ μ¬μ©λ μ½λλ λ€μκ³Ό κ°μ΅λλ€.
public static int splitAndSum(String text) {
int result = 0;
if(text == null || text.isEmpty()) {
result = 0;
} else {
String[] values = text.split(",|:");
for(String value: values) {
result += Integer.parseInt(value);
}
}
return result;
}
μ λ©μλμλ λ€μκ³Ό κ°μ μ¬λ¬ λ¬Έμ μ μ΄ μ‘΄μ¬ν©λλ€.
• ν λ©μλκ° μ¬λ¬κ°μ§μ μΌμ ν©λλ€.
• else μμ½μ΄κ° μ‘΄μ¬ν©λλ€.
• depthκ° 2 μ΄μμ λλ€.
β
λ°λΌμ μμ κ°μ λ¬Έμ μ μ κ°μ ν΄λκ°λ©° 리ν©ν λ§μ μ§νν΄λ³΄λλ‘ νκ² μ΅λλ€.
β λ©μλ λΆλ¦¬ 리ν©ν λ§
• ν λ©μλμ μ€μ§ ν λ¨κ³μ Indent(λ€μ¬μ°κΈ°) λ§ νλ€.
μ μ½λμμ λ€μ¬μ°κΈ°λ₯Ό 1λ‘ λ§μΆκΈ° μν΄ λ©μλλ₯Ό λΆλ¦¬ν΄μΌ νλλ°, forλ¬Έμ μ½λλ₯Ό λ©μλλ‘ λ°λ‘ λΆλ¦¬ν©λλ€.
μμμμ forλ¬Έμ sumμ΄λΌλ λ©μλλ‘ λΆλ¦¬ν΄μ λ§λ€μμ΅λλ€.
μ΄μ splitAndSum λ©μλλ forλ¬Έμ λ°λ‘ λΆλ¦¬ν΄μ λΉΌλκΈ°λλ¬Έμ, depth λ 1μ΄ λ©λλ€.
νμ§λ§ μμ§ κ°μ μ¬νμ΄ λ§μλ°μ, λ€μμΌλ‘ else μμ½μ΄λ₯Ό μ κ±°ν΄λ³΄λλ‘ νκ² μ΅λλ€.β
β
• else μμ½μ΄λ₯Ό μ°μ§ μλλ€.
κΈ°μ‘΄μ μ½λ splinAndSum() μ λΉν΄ removeElseSplitAndSum() λ©μλμλ else μμ½μ΄λ₯Ό μ κ±°νλλ°μ,
μμ κ°μ΄ μμΈ μν©μ΄ μκ²Όμ λ(ifλ¬Έ) λ°λ‘ returnμ νκ² λλ©΄ λ‘컬 λ³μ(result)λ₯Ό μμ±ν νμκ° μκ³ ,
λν else μμ½μ΄λ₯Ό μ¬μ©ν νμκ° μμ΅λλ€.
(μλ μμ μμ removeElseSplitAndSum λ©μλμ μ΄λ¦μ splitAndSum μΌλ‘ λ³κ²½νκ³ μ¬μ©ν©λλ€.)
• λ©μλκ° ν κ°μ§ μΌλ§ νλλ‘ κ΅¬ννκΈ°.
μμ sum λ©μλλ λ κ°μ§μ μΌμ νλλ°, λμΉμ±μ ¨λμ ?
• 1) λ¬Έμμ΄μ μ μλ‘ λ³ννλ€(parseInt)
• 2) μ μλ₯Ό λͺ¨λ λνλ€(+=)
μμ κ°μ΄ λ κ°μ§μ μΌμ νλλ°μ, λ°λΌμ "λͺ¨λ λ©μλλ ν κ°μ§μ μΌμ ν΄μΌνλ€"λ μμΉλλ‘ λ¦¬ν©ν λ§μ ν©λλ€.
μμ κ°μ΄ λ¬Έμμ΄μ μ μλ‘ λ³ννλ λ©μλ - toInts() , μ μλ₯Ό λνλ λ©μλ - sum() μ ν΅ν΄
μ΄μ λ κ° λ©μλλ€μ ν κ°μ§μ μΌλ§ μνν©λλ€.
(toInts2(), tosum2() λ©μλμ²λΌ streamκ³Ό λλ€λ₯Ό ν΅ν΄ λμΌν κ²°κ³Όλ₯Ό κ°λ¨νκ² ννν μ μμ΄μ! π―)
λν κΈ°μ‘΄μ splitAndSum() λ©μλμλ κΈ°μ‘΄μ values[] λ‘컬 λ³μλ₯Ό μ κ±°νκ³ , μμ κ°μ΄ λ°λ‘ returnμ ν μ μμ΅λλ€.
νμ¬ κΉμ§μ μ½λλ₯Ό 보면 λ€μκ³Ό κ°μ΅λλ€.(κΈ°μ‘΄ μ½λλ₯Ό streamμΌλ‘ λ체νμ΅λλ€.)
public static int splitAndSum(String text) {
if (text == null || text.isEmpty()) {
return 0;
}
return sum(toInts(text.split(",|:"))); // Decorator
}
private static int[] toInts(final String[] values) {
return Arrays.stream(values).mapToInt(Integer::parseInt).toArray();
}
private static int sum(final int[] value) {
return Arrays.stream(value).sum();
}
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4};
int result = Arrays.stream(arr).sum();
System.out.println(result);
}
β compose method ν¨ν΄ μ μ©
• λ©μλ(ν¨μ)μ μλκ° μ λλ¬λλλ‘ λλ±ν μμ€μ μμ μ νλ μ¬λ¬ λ¨κ³λ‘ λλλ€.
λ§μ§λ§μΌλ‘ μμμμ λ¬Έμ₯μ 리ν©ν λ§ νκ² μ΅λλ€.
β 리ν©ν λ§ λ§λ¬΄λ¦¬
리ν©ν λ§μ΄ λ§λ¬΄λ¦¬κ° λμλλ°μ, 리ν©ν λ§ νκΈ° μ μ μ½λμ νμ μ½λλ₯Ό λΉκ΅ν΄λ³΄κ² μ΅λλ€.
리ν©ν λ§ μ μ½λ
public static int splitAndSum(String text) {
int result = 0;
if(text == null || text.isEmpty()) {
result = 0;
} else {
String[] values = text.split(",|:");
for(String value: values) {
result += Integer.parseInt(value);
}
}
return result;
}
리ν©ν λ§ ν μ½λ
public static int splitAndSum(String text) {
if (isBlank(text)) {
return 0;
}
return sum(toInts(split(text))); // Decorator
}
private static boolean isBlank(final String text) {
return (text == null || text.isEmpty());
}
private static String[] split(final String text) {
return text.split(",|:");
}
private static int[] toInts(final String[] values) {
return Arrays.stream(values).mapToInt(Integer::parseInt).toArray();
}
private static int sum(final int[] value) {
return Arrays.stream(value).sum();
}
π 리ν©ν λ§μ ν νμ μ½λμ νΉμ§μ λ€μκ³Ό κ°μ΅λλ€.
• κ° λ©μλ(ν¨μ)λ ν κ°μ§μ μΌλ§ ν©λλ€.
• κ° λ©μλμ Indent(λ€μ¬μ°κΈ°) depth μ λͺ¨λ "1" μ λλ€.
• else μμ½μ΄κ° μ‘΄μ¬νμ§ μμ΅λλ€.
β
β
β
β κ°μ λ΄μ©μ μ 리νμλ©΄ λ€μκ³Ό κ°μ΅λλ€.
• νλ²μ λͺ¨λ μμΉμ μ§ν€λ©΄μ 리ν©ν λ§μ νλ €κ³ μ°μ΅νμ§ λ§λΌ.
• νλ²μ ν κ°μ§ λͺ ννκ³ κ΅¬μ²΄μ μΈ λͺ©νλ₯Ό κ°μ§κ³ μ°μ΅νλΌ.
• μ°μ΅μ κ·Ήλ¨μ μΈ λ°©λ²μΌλ‘ μ°μ΅νλ κ²λ μ’λ€.
• ν λ©μλμ λΌμΈ μ μ νμ 15λΌμΈ -> 10λΌμΈμΌλ‘ μ€μ΄λλ‘ μ°μ΅ν κ²
β
'μ€ν°λ & μΈλ―Έλ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μΊμΉ # κ°λ°μ 컀리μ΄μ½ - κ°λ°μ μ±μ₯ λ‘λ맡 (3) | 2021.06.29 |
---|---|
μΊμΉ # κ°λ°μ 컀리μ΄μ½ - κ°λ°μ λ©΄μ (0) | 2021.06.23 |
OSS κ°λ°μν¬λΌ Meetup μ€ννΈμ (StartUp)μ λ§λλ€ (2) | 2021.05.15 |
Wanted Live Talk #23. μ€λμ κ°λ°μ 1μ£Όμ°¨ (0) | 2021.04.15 |
OKKYCON: 2021 νμ μ κΈ°μ (0) | 2021.03.06 |
λκΈ