전체 글 411

[리팩토링 refactoring] Composing methods 메소드 구성 - Remove assignments to parameters 매개 변수에 대한 할당 제거

▪Remove assignments to parameters 매개변수에 대한 할당 제거 Problem어떤 값이 메소드 몸체 안에 파라미터 값으로 할당되어졌을 때 - JAVA int discount(int inputVal, int quantity) {if (inputVal > 50) {inputVal -= 2;}//...} Solutionint discount(int inputVal, int quantity) {int result = inputVal;if (inputVal > 50) {result -= 2;}//...}대신 임시 변수를 사용한다.이 리팩토링은 로컬변수를 다루는게 아니라 파라미터를 다루고 있다.만약 파라미터가 매개변수 참조를 통해 전달되는 경우, 파라미터 값이 이 메소드 안에 변경된 후, 이..

[리팩토링 refactoring] Composing Method 메소드 구성

▶Composing methods 메소드 구성 대부분의 리팩토링은 올바르게 메소드를 구성하는데 사용된다. 대부분의 경우, 지나치게 긴 메소드는 모든 악의 근원이다. 이러한 메소드 내부의 코드의 모호성 때문에 실행 로직이 숨겨지고 메소드를 이해하기 매우 어렵다. 메소드 구성 리팩토링 기술은 메소드를 간소화 하고 코드 중복을 제거하여 향후 개선을 위한 길을 열어준다. Composing Methods 메소드구성- Extract Method- Inline Method 즉시처리하는 메소드- Extract Variable- Inline Temp- Replace Temp with Query- Split Temporary Variable- Remove Assignments to Parameters 매개변수에 대한 할당..

리팩토링 refactoring

블로그에 있는 리팩토링 글 정리 클릭 시 해당 글로 이동 Update 2017.01.30 리팩토링 refactoring 이란? Composing Methods 메소드구성 - Extract Method - Inline Method 즉시처리하는 메소드 - Extract Variable - Inline Temp - Replace Temp with Query - Split Temporary Variable - Remove Assignments to Parameters 매개변수에 대한 할당 제거 - Replace Method with Method Object - Subsitute Algorithm Moving Features between Objects - Move Method - Move Field - Extr..

[단위] 나만 헷갈리는 기억용량, 속도 단위..컴퓨터 연산 단위

데이터 통신 계산문제 공부할때, 클록주파수 구할때,, 단위 때문에 틀리는건 나만 그러는건가...?;; 1. 기억용량 단위 컴퓨터 시간 속도 바이트 B,Byte 1 1 킬로 바이트 KB 2^10 10^3 메카 바이트 MB 2^20 10^6 기가 바이트 GB 2^30 10^9 테라 바이트 TB 2^40 10^12 페타 바이트 PB 2^50 10^15 B -> KB -> MB -> GB -> TB -> PB 2. 속도단위 밀리 초 ms milli second 10^-3 마이크로 초 µs micro second 10^-6 나노 초 ns nano second 10^-9 피코 초 ps pico second 10^-12 펨토 초 fs femto second 10^-15 아토 초 as atto second 10^-18..

컴퓨터/팁 2017.01.21

[알고리즘] 우선순위 큐 최소힙 구조, 최대힙 구조

최소힙 구조 최소값이 우선일 때 {34,12,87,45,35,66} 순서로 입력됨 완전 이진 트리를 사용하고 루트에 가장 우선순위가 높은 자료가 위치함. 최소힙 삽입연산 최소힙 삭제연산 최대힙 구조 부모노드의 키 값이 자식노드의 킷값보다 항상 큼. 대소 관계는 오로지 부모노드와 자식노드 간에만 성립 특히 형제 사이에는 대소 관계 정해지지 않음. 최대힙 삽입연산 최대힙 삭제연산

CVIPTools로 주파수 변환, 푸리에변환 fourier 이산 코사인 변환 discrete cosine walsh-hadamard 웨이브릿 Wavelete

CVIPTools 다운로드 http://cviptools.siue.edu/downloads.php Analysis -> Transforms에서 FFT 고속 푸리에 변환(fast Fourier transform), DCT (Discrete Cosine Transform) 이산 코사인변환 왼쪽부터 순서대로 Original Image blocksize = 128로 설정 Fourier transform Spectrum이 가운데로 옮겨짐 cosine transform Spectrum이 왼쪽상단으로 옮겨짐 Walsh-Hadamard Transform 왼쪽부터 순서대로 Original Image Walsh blocksize = 32로 설정 Handamard blocksize = 32로 설정 Wavelet transf..

CVIPTools로 Hough Transform 허프 변환

CVIPTools 다운로드 http://cviptools.siue.edu/downloads.php Analysis에서 Edge/Line Detection에서 Hough Transform을 할 수 있다. Hough Transform에서의 CVIPTools 변수 Line Angles 허프변환이 검색할 각도의 범위 Line Pixels 선이 유지되도록 가져야할 최소 화소의 개수 또한 허프 화상에서 임계값이라고 함 Connect distance 어느정도까지 떨어져있는 두 개 선 분할 제어를 연결될 수 있거나 여전히 연결. Delta Length 허프공간의 로우 매개변수를 양자화 한다. 선의 두께가 제어가 될 수 있다. 우선순위에 가까이 있으면 선 두께는 여러 분할 선으로 구성될 수 있다. Segment Leng..

[리팩토링 refactoring] Simplifying Method Calls 메서드 호출 단순화 - Add Parameter 매개변수 추가

▪Add Parameter 매개변수 추가메서드를 변경해야 하며 이 변경 사항은 이전에는 메소드에서 사용할 수 없었던 정보 또는 데이터를 추가해야한다.Problem메소드에 특정 조치를 수행하기 위한 충분한 데이터가 없다.class Calendar { // ... private Set appointments; public ArrayList findAppointments(Date date, String name) { Set result = new ArrayList(); Iterator iter = kent.getCourses().iterator(); while (iter.hasNext()) { Appointment each = (Appointment) iter.next(); if (date.compareTo(..

[리팩토링 refactoring] Simplifying Conditional Expressions 조건문의 간결화 - Consolidate Duplicate Conditional fragments 조건문의 공통 실행 코드 빼내기

▪Consolidate Duplicate Conditional fragments 조건문의 공통 실행 코드 빼내기Problem동일한 코드 조각이 조건문의 모든 분기 안에 있는 경우if (isSpecialDeal()) { total = price * 0.95; send();}else { total = price * 0.98; send();} Solutionif (isSpecialDeal()) { total = price * 0.95;}else { total = price * 0.98;}send();동일한 코드를 조건문 밖으로 옮겨라. 절차조건에 상관 없이 동일하게 실행되는 코드 확인.공통으로 사용되는 코드가 시작 부분에 있다면, 그 코드를 조건문 앞으로 옮긴다.공통으로 사용되는 코드가 끝 부분에 있다면, 그..

[리팩토링 refactoring ] Organizing Data 데이터 체계화 - Encapsulate Collection 컬렉션 캡슐화

▪Encapsulate Collection 컬렉션 캡슐화 Problem & Solution 클래스는 객체 컬렉션을 포함하는 필드를 포함이 콜렉션은 배열,리스트, 세트 또는 벡터 일 수 있다.컬렉션에 대한 작업을 위해 정상적인 getter 및 setter가 만들어짐. 그러나 컬렉션은 다른 데이터 유형에서 사용되는 프로토콜과 약간 다른 프로토콜에 의해 사용되야 한다. getter 메소드는 컬렉션 객체 자체를 반환하지 않아야한다. 그러면 클라이언트가 소유자 클래스에 대한 지식없이 컬렉션 내용을 변경할 수 있기 때문 클라이언트에 대한 오브젝트 데이터의 내부 구조가 너무 많이 보인다. 콜렉션 요소를 가져 오는 메소드는 콜렉션을 변경할 수 없거나 구조에 대한 과도한 데이터를 공개 할 수없는 값을 리턴해야한다. 컬렉..