컴퓨터/이론 및 tools 사용 47

[리팩토링 refactoring] Moving Features between Objects 객체간의 기능 이동

▶Moving Features between Objects 객체간의 기능이동객체 디자인에서 가장기본이 되는 것 중의 하나는 책임을 어디에 둘지를 결정하는 것이다. 이 리팩토링 기법 클래스 사이에 안전하게 기능을 이동하고 새로운 클래스를 생성하고, 공용 액세스에서 구현 세부 정보를 숨기는 방법을 보여준다. - Move Method- Move Field- Extract Class- Inline Class- Hide Delegate- Remove Middle Man- Introduce Foreign Method- Introduce Local Extension

[리팩토링 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..

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

최소힙 구조 최소값이 우선일 때 {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();동일한 코드를 조건문 밖으로 옮겨라. 절차조건에 상관 없이 동일하게 실행되는 코드 확인.공통으로 사용되는 코드가 시작 부분에 있다면, 그 코드를 조건문 앞으로 옮긴다.공통으로 사용되는 코드가 끝 부분에 있다면, 그..