본문 바로가기

분류 전체보기166

클린코드 12장 12장 창발성 창발(創發)또는 떠오름 현상은 하위 계층(구성 요소)에는 없는 특성이나 행동이 상위 계층(전체 구조)에서 자발적으로 돌연히 출현하는 현상이다.(위키백과) 창발적 설계로 깔끔한 코드를 구현하자 켄트 벡이 제시한 단순한 설계 규칙 4가지 모든 테스트를 실행한다. 중복을 없앤다. 프로그래머 의도를 표현한다. 클래스와 메서드 수를 최소로 줄인다. 단순한 설계 규칙 1: 모든 테스트를 실행하라 '테스트 케이스를 만들고 계속 돌려라'라는 규칙을 따르면 시스템은 낮은 결합도와 높은 응집력이라는, 객체 지향 방법론이 지향하는 목표를 저절로 달성할 수 있다! 단순한 설계 규칙 2~4: 리팩터링 코드 몇 줄을 추가할 때마다 잠시 멈추고 설계를 깔끔하게 조감한다. 테케가 있으므로 코드를 정리하면서 시스템이 깨.. 2022. 9. 16.
클린코드 11장 이 포스트는 2021.12~2022.09 기간동안 벨로그에 작성한 글을 티스토리에 옮겨 적은 것입니다. 11장 시스템 도시를 세운다면? 도시가 잘 돌아갈 수 있는 이유 중 하나는 적절한 추상화와 모듈화이다. 큰 그림을 이해하지 못할지라도 개인과 개인이 관리하는 구성요소는 효율적으로 돌아간다. 시스템 제작과 시스템 사용을 분리하라 소프트웨어 시스템은 (애플리케이션 객체를 제작하고 의존성을 서로 '연결'하는 준비 과정과 (준비과정 이후에 이어지는) 런타임 로직을 분리해야 한다.) Main 분리 시스템 생성과 시스템 사용을 분리하는 한 가지 방법. 생성과 관련한 코드는 모두 main이나 main이 호출하는 모듈로 옮긴다. 즉 애플리케이션은 객체가 생성되는 과정을 전혀 모른다. 팩토리 객체 생성 시즘을 애플리케.. 2022. 9. 16.
[cs 정리]네트워크 이 포스트는 2021.12~2022.09 기간동안 벨로그에 작성한 글을 티스토리에 옮겨 적은 것입니다. 1. OSI 7계층과 각 층에 대한 설명 OSI 7계층은 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것입니다. 응용 계층, 표현 계층, 세션 계층, 전송 계층, 네트워크 계층, 데이터링크 계층, 물리 계층으로 이루어져 있습니다. osi 7계층은 이론적인 모델이고, 실제로 데이터를 전송하는 데 사용되는 모델은 tcp/ip 모델이라고 한다. osi는 통신 전반에 대한 표준이고, tcp/ip는 데이터 전송기술에 특화되어 있다. 각각이 헤더를 붙여 캡슐화했기 때문에 문제가 발생했을때 빠르게 대응할 수 있다. 7계층-응용 계층(Application Layer) HTTP, DNS등을 이용해 사용자가.. 2022. 9. 16.
클린코드 10장 10장 클래스 클래스 체계 변수가 먼저 나오고, 그다음에 함수가 나온다. 변수 순서: static->public->private->비공개 인스턴스 함수 순서: 공개함수->자신을 호출하는 비공개 함수(추상화 단계가 순차적으로 내려감) 캡슐화 변수와 유틸리티 함수는 가능한 공개하지 않는 편이 낫다. 클래스는 작아야 한다. 큰 클래스 하나보다는 작은 클래스 여럿으로 이뤄진 시스템이 더 좋다. 클래스 이름은 해당 클래스 책임을 기술해야 한다. 간결한 이름이 떠오르지 않는다면 클래스 크기가 너무 커서 그렇다. 단일 책임 원칙 단일 책임 원칙은 클래스나 모듈을 변경할 이유가 하나뿐이어야 한다는 원칙이다. (모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화해야 함) 책임=변경할 이유 를 파악하려.. 2022. 9. 16.
클린코드 9장 이 포스트는 2021.12~2022.09 기간동안 벨로그에 작성한 글을 티스토리에 옮겨 적은 것입니다. 9장 단위 테스트 TDD 법칙 3가지 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. 위 3가지 법칙을 따르면 개발과 테스트를 빠르게 수행할 수 있다. 단 이렇게하면 테스트 케이스가 너무 많이 나와서 관리가 힘들 수 있다. 깨끗한 테스트 코드 유지하기 지저분한 테스트 코드를 내놓느니 차라리 안하는게 낫다. 테스트 코드가 복잡할수록 실제 코드를 짜는 시간보다 테스트 케이스를 추가하는 시간이 더 걸린다. 테스트 코드는 실제 코드 못지 않게 중요하다... 2022. 9. 16.
문자열로 된 수식 계산하기 이 포스트는 2021.12~2022.09 기간동안 벨로그에 작성한 글을 티스토리에 옮겨 적은 것입니다. eval 함수를 쓰면 된다. print(eval('1+1'))) #2가 출력됨 만약 계산할 수 없는 수식의 문자열이라면 에러가 발생한다. 2022. 9. 16.
반응형