본문 바로가기
반응형

전체 글131

[리팩터링 카탈로그] 1-4. 변수 인라인하기 절차 변수가 불변으로 선언되지 않았다면 불변으로 만든 후 테스트 한다. 이 변수를 가장 처음 사용하는 코드를 찾아서 대입문 우변의 코드로 바꾼다. 테스트한다. 변수를 사용하는 부분을 모두 교체할 때까지 이 과정을 반복한다. 변수 선언문과 대입문을 지운다. 테스트 한다. 예시 Before: let basePrice = anOrder.basePrice; return (basePrice > 1000); After: return anOrder.basePrice > 1000; 출처 : 리팩터링 2판 – Chapter6 2021. 12. 5.
[리팩터링 카탈로그] 1-3. 변수 추출하기 추출하려는 표현식에 부작용은 없는지 확인한다 불변 변수를 하나 선언하고 이름을 붙일 표현식의 복제본을 대입한다. 원본 표현식을 새로 만든 변수로 교체한다. 테스트한다. 표현식을 여러 곳에서 사용한다면 각각을 새로 만든 변수로 교체한다. 하나 교체할 때마다 테스트한다. 예시 Before: function price(order) { return ( order.quantity * order.itemPrice - Math.max(0, order.quantity - 500) * order.itemPrice * 0.05 + Math.min(order.quantity * order.itemPrice * 0.1, 100) ); } After: function price(order) { const basePrice = .. 2021. 12. 5.
[리팩터링 카탈로그] 1-2. 함수 인라인하기 다형 메서드polymorphic method인지 확인한다. 인라인할 함수를 호출하는 곳을 모두 찾는다. 각 호출문을 함수 본문으로 교체한다. 하나씩 교체할 때마다 테스트한다. 함수 정의(원래 함수)를 삭제한다. 예시 Before: function getRating(driver) { return moreThanFiveLateDeliveries(driver) ? 2 : 1; } function moreThanFiveLateDeliveries(driver) { return driver.numOfLateDeliveries > 5; } After: function getRating(driver) { return (driver.numOfLateDeliveries > 5) ? 2 : 1; } 출처 : 리팩터링 2판 .. 2021. 12. 5.
[리팩터링 카탈로그] 1-1. 함수 추출하기 함수를 새로 만들고 목적을 잘 드러내는 이름을 붙인다(‘어떻게’가 아닌 ‘무엇을’ 하는지 드러나야한다). 추출할 코드를 원본함수에서 복사하여 새 함수에 붙여넣는다. 추출한 코드 중 원본 함수의 지역 변수를 참조하거나 추출한 하무의 유효범위를 벗어나는 변수는 없는지 검사한다. 있다면 매개변수로 전달한다. 변수를 다 처리했다면 컴파일한다. 원본 함수에서 추출한 코드 부분을 새로 만든 함수를 호출하는 문장으로 바꾼다(즉, 추출한 함수로 일을 위임한다). 테스트한다. 다른 코드에 방금 추출한 것과 똑같거나 비슷한 코드가 없는지 살핀다. 있다면 방금 추출한 새 함수를 호출하도록 바꿀지 검토한다(인라인코드를 함수호출로 바꾸기). 예시 Before: function printOwing(invoice) { consol.. 2021. 12. 5.
[리팩터링 카탈로그] 1. 기본적인 리팩터링 기본적인 리팩터링 함수 추출하기 함수 인라인하기 변수 추출하기 변수 인라인하기 함수 선언 바꾸기 변수 캡슐화하기 변수 이름 바꾸기 매개변수 객체 만들기 여러 함수를 클래스로 묶기 여러 함수를 변환 함수로 묶기 단계 쪼개기 출처 : 리팩터링 2판 - Chapter6 2021. 12. 5.
Intellij IDEA LiveReload 기능 사용하기 1. dependency 추가 Maven org.springframework.boot spring-boot-devtools runtime true Gradle dependencies { developmentOnly 'org.springframework.boot:spring-boot-devtools' } 2. application.properties 추가 spring.devtools.livereload.enabled=true spring.thymeleaf.cache=false 3. Intellij 환경설정 수정 4. Intellij Registry 수정 2021. 12. 5.
[MySql] 권한 주기 RANT문을 사용해 사용자를 추가하거나 권한을 부여할수도 있습니다. GRANT ALL ON TO @ IDENTIFIED BY '비밀번호'; 사용자 권한 삭제는 REVOKE문을 사용하시면 됩니다. REVOKE ON FROM ; 1) user1에 모든 db의 권한을 줄때 ( root를 제외한 super user : dba ) localhost의 권한 grant all privileges on *.* to user1@localhost identified by 'pass1'; %의 권한 grant all privileges on *.* to user1 identified by 'pass1'; 2) user1에 db1의 사용권한을 줄때 localhost의 권한 grant all privileges on db1.*.. 2014. 4. 1.
키보드 숨기기 - 다른 여백 눌렀을때 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {[self.view endEditing:YES];} 2013. 11. 25.
Installing PDO_OCI and OCI8 PHP extensions on CentOS 6.4 64bit I am currently working on a PHP project that requires using an Oracle server as the database. I tried setting up the Oracle PHP extensions directly on my development machine (MacOSX) but failed after a few tries. I also managed to ruin my Homebrew-PHP setup which brought me more joy.So I ended up using Vagrant which is what I should have done in the first place. So I booted up a Vagrant box with.. 2013. 10. 18.
RepoForge(RPMforge), Epel, Remi Repository 기본적인 저장소(repository)로 사용되는 CentOS 저장소에서 찾을 수 없는 몇몇 패키지들이 있다. 물론 이는 yum 을 이용한 설치 및 업그레이드에 해당하는 사항이다.yum-plugin-priorities 설치저장소간에 우선순위를 설정하기 위해 priorities 플러그인이 필요하다.# yum -y install yum-plugin-prioritiesCentOS-Base.repo 수정우선 순위를 추가한다. 우선순위는 1~99 까지 값을 가지며 낮을수록 우선순위가 높다. 만약 값이 설정되어 있지 않다면 99로 인식한다.# vi /etc/yum.repos.d/CentOS-Base.repo[base]name=CentOS-$releasever - Basemirrorlist=http://mirrorli.. 2013. 10. 18.
반응형