분리

    [클린 코드] 함수(1)

    명령과 조회 명확히 분리하기 함수는 무엇인가를 수행하거나, 답하거나 둘 중 한가지만을 해야한다. 객체의 상태를 변경하거나, 객체의 정보를 반환하거나 둘 중 하나만 해야한다는 말이다. 예를 들어 다음 함수를 예를 들어 보자. fun set(attr: String. value: String): Boolean { ... } 위 set 함수는 이름이 attr인 속성을 찾아 값을 value로 바꾼 후 성공한다면 true를 실패한다면 false를 리턴한다. 문제는 이런 메소드를 사용하면 아래와같은 어색한 형태의 코드가 나온다. if(set("name", "MJ")){ ... } 이런 형태의 메소드가 가지는 단점은 누군가가 이 코드를 볼때 "name"이 "Tom"으로 설정 되어있는지 체크하는 코드인지, 아니면 "na..

    임계 구역과 경쟁 상태

    임계 구역 (Critical Section) 임계 구역이란 한 번에 하나의 프로세스 혹은 스레드만 접근 가능한 코드 영역으로 공유 데이터에 접근하는데 있어서 문제가 발생하지 않도록 하나의 접근만 허용함을 보장한다. 일반적으로 4가지의 코드 영역으로 나눠 볼 수 있는데 그 특징은 아래와 같다. entry section critical section에 진입하기 위해 진입 허가를 요청하는 영역으로 접근을 제어(lock)한다. critical section 하나의 프로세스 혹은 스레드만 접근 할 수 있는 영역 exit section 제어(lock)을 해제하는 등, 더 이상 임계 구역에 존재하지 않을 때 알리는 역할을 하는 영역 remainder section 입력, 중요, 종료 세션을 제외한 나머지 코드 부분의..