techbook-study / reading-after-work

Day By Day Reading a Book
0 stars 0 forks source link

2023-06-14 퇴근 후 독서 #8

Closed OikimiO closed 1 year ago

OikimiO commented 1 year ago
  1. 형식 맞추기(p95)




limyohwan commented 1 year ago

리팩터링 2판

  1. for 문 쪼개기
// 쪼개기 전
public void calculate(){
    List<Object> list = new ArrayList<>();
    int count = 0;
    int money = 0;
    for(int i = 0; i < 100; i++){
        count +=list.get(i).getCount();
        money +=list.get(i).getMoney();
    }
}

// 쪼갠 후
public void calculate(){
    List<Object> list = new ArrayList<>();
    int count = totalCount(list);
    int money = totalMoney(list);
}

public void totalCount(List<Object> list){
    int result = 0;
    for(int i = 0; i <  list.size(); i++){
        result += list.get(i).getCount();
    }
    return result;
}

public void totalMoney(List<Object> list){
    int result = 0;
    for(int i = 0; i < list.size(); i++){
        result += list.get(i).getMoney();
    }
    return result;
}
  1. 리팩터링 = 소프트웨어의 겉보기 동작은 그대로 유지한 채 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법 리팩터링하다 = 소프트웨어의 겉보기 동작은 그대로 유지한 채 여러가지 리팩터링 기법을 적용해서 소프트웨어를 재구성하다 리팩터링을 하고난 이후에는 성능은 변해도 사용자 관점에서 달라지는 점이 없어야 한다 -> 만약 버그가 있는 문제였어도 버그가 그대로 유지해야 된다

  2. 리팩터링의 장점

    • 소프트웨어 설계가 좋아짐
    • 소프트웨어를 이해하기 쉬워짐
    • 버그를 쉽게 찾을 수 있음
    • 프로그래밍 속도를 높일 수 있음
  3. 리팩터링을 쉽게 하기 위해서는 자신만의 코드 스타일을 가지고 있어야 한다.

  4. 비슷한 일을 세번째 하게 되면 리팩터링을 해라 = 스트라이크 세번이면 리팩터링하자(삼진 리팩터링)

codeblue25 commented 1 year ago

[DOM을 깨우치다]

DOM트리는 다양한 속성을 통해 부모노드, 자식노드, 자매노드 등등에 접근이 가능하다.

<ul><!-- comment-->
  <li>item 1</li>
  <li>item 2</li>
  <!-- comment-->
</ul>
  1. 현재 노드의 부모 노드에 접근

    • parentNode
  2. 첫번째, 마지막 자식 노드에 접근

    • firstChild
    • firstElementChild
    • lastChild
    • lastElementChild
<script>

const example = document.querySelector("ul")

console.log(example.firstChild.nodeType)        // 실행결과: text
console.log(example.firstElementChild.nodeType) // 실행결과: li

</script>

firstElementChild는 text노드, comment 노드를 무시한다. 즉, HTML code에 반영을 위한 접근이 필요하다면 firstElementChild을 쓴다.

  1. 자매 노드에 접근
    • nextSibling
    • nextElementSibling
    • previousElementSibling