본문 바로가기

All

컴파일러와 인터프리터 컴파일러- 고급언어로 쓰여진 소스코드를 컴퓨터에서 수행하기 위해 컴퓨터가 직접 이해 할 수 있는 언어로 번역해주는것 인터프리터- 소스코드를 직접 실행하거나 혹은 효율적인 다른 중간 코드로 변환 후 이것을 바로 실행 이둘의 차이점은 컴파일러의 경우 한번만 번역하면 속도가 빠르다 라는 장점이 있고 인터프리터는 실행방식이 코드 한줄씩 실행하기 때문에 실행속도가 빠르다. 원시코드가 자주 바뀌는 경우 인터프리터가 좋고 아닐 경우 컴파일러가 좋다. ps. 고등학교?? 중학교때 시험때문에 달달 외운기억이 있는데... 알긴 아는데... 잘 생각이 안난다. 그래서 다시 정리~! 더보기
[Refactoring] 매개변수 세트를 메서드로 전환 객체가 A 메서드를 호출해서 그 결과를 B 메서드에 매개변수로 전달하는데, 결과를 매개변수로 받는 B 메서드도 직접 A메서드를 호출 할 수 있을 땐 매개변수를 업애고 A 메서드를 B메서드가 호출하게 하자 int basePrice = _quantity * _temPrice;discountLevel = getDiscountLevel();double finalPrice = discountedPrice (basePrice, discountLevel); 위의 코드를 보면 getDiscountLevel() 함수를 내부적으로 호출 할수 있다. 이것을 내부적으로 discountedPrice에서 호출하도록 한다. int basePrice = _quantity * _itemPrice;doble finalPrice = di.. 더보기
[Android] Android 4.4 Kit Kat 이번에 Andorid 4.4에 대한 발표?? 가 있어서 홈페이지에 접속해보았다. 이떄까지의 Andoird 역사를 보여주고 마지막엔Kit Kat이 나왔다~!! 키라임파이에서 바뀌어진 코드명? 의견이 분분하지만 난 이렇게 특정 과자 이름으로 발표를 하는걸 보면 그 만큼 자신감이 있다라는 이야기가 아닐까? 라는 생각이 든다. 더보기
[Refactoring] 객체를 통째로 전달 객체에서 가져온 여러값을 메서드 호출에서 매개변수로 전달 할땐 그 객체를 통째로 전달하게 수정하자 void setFrame (int x, int y, int width, int height); 를 Rect라는 클래스를 만들어서 void setFrame (Rect rect); 위와 같이 바꾸자 장점은 코드 가독성 증가 및 새로운 값 전달시 편의성 증대가 있다 하지만 단점으로는 객체를 전달하기에 많은 값을 전달하지 않는 경우에는 하지 않는 것이 좋고 값을 전달할 때 호출되는 객체가 그 값들에 의존하게 되지만 값이 추출된 객체에는 의존하지 않게 된다는 점이다. 통 객체를 전달하게 되면 서로 의존하게 된다. 이것은 의존성 구조를 망가뜨릴 것 같으면 실시하지 않는 것이 좋다. 더보기
[Spring framework] url parameters 받는 방법 @RequestMapping (value = "/postLike/{postId}", method = RequestMethod.GET) public void postPostLike (@RequestParam(value = "testId", required = true) String testId, @PathVariable(value = "postId") final int postId ) { }//end postPostLike Method @RequestParam는 Url에서 Parameter의 값을 가져오는 것이고 @PathVariable는 @RequestMapping에서 value값을 보면 {postId} 여기 이 값을 가져온다. php를 하면서 @RequestParam과 같이 url에 parameter를.. 더보기
[Refactoring] 매개변수를 메서드로 전환 매개변수로 전달된 값에 따라 메서드가 다른 코드로 실행할땐 그 매개변수로 전달될 수 있는 모든 값에 대응하는 메서드를 각각 작성하자. void setValue (String name, int value) { if (name.equals("height")) {_height = value;return;} if (name.equals("width")) {_width = value;return;}Assert.shouldNeverReachHere(); } 위의 코드를 아래로 변환시킨다. void setHeight (int value) {_height = value;} void setWidth (int arg) {_width = arg;} 이렇게 만들면 조건문이 없어지기 때문에 코드가 간결해지고 컴파일 할때 검사가.. 더보기
[Refactoring] 메서드를 매개변수로 전환 기능은 비슷하지만 몇 가지 값에 따라 결과가 달라지는 메서드가 있을때 각 메서드를 전달된 매개변수에 따라 다른작업을 처리하는 하나의 메서드로 만들면 편리하다. class Employee { void tenPercentRaise () {salary *= 1.1;} void fivePercentRaise () {salary *= 1.05;} } 위의 함수들을 void raise (double factor) {salary *= (1 + factor);} 이와 같이 고치면 된다. 더보기
[Refactoring] 상태 변경 메서드와 값 반환 메서드를 분리 부작용이 있는 메서드와 부작용이 없는 메서드의 차이를 명확히 분간하는 것이 좋다. 값을 반환하는 모든 메서드는 눈에 띄는 부작용이 없어야 한다라는 규칙을 따르는 것이 좋다. getTotalOutstandingAndSetReadyForSummaries -> getTotalOutstandingsetReadyForSummaries 병행 처리 문제멀티스레딩 시스템에서 작업하는 살마은 테스트와 설정 연산 수행을 한번에 실시하는 것이 중요함을 알고 있다. 이런 경우에는 두 기능을 모두 수행하는 제 3의 메소드를 두어야한다. 질의 겸 상태 변경 메서드는 질의 메서드와 성태변경 메서드를 호출하고 동기화를 한다. 만약 동기화 하지 않는 다면 privatet 수준으로 제한해야 한다. 그렇게 하면 두 개의 이해하기 위운 메.. 더보기
[Refactoring] 메소드명 변경 코드는 컴퓨터보다 인간이 알아보기 쉽게 작성해야 한다. 인간이 알아보기 쉬우려면 코드에 사용된 모든 이름이 적절해야한다. public String getTelephoneNumber () {return ("(" + _officeAreaCode + ") " + _officeNumber);}위의 코드를 class Person { public String getTelephoneNumber () {return getOfficeTelephoneNumber();} public String getOfficeTelephoneNumber () {return ( + "(" + _officeAreaCode + ") " + _officeNumber);} } 위와 같이 변경한 후 호출되는 부분을 새 메서드로 바꾸자~! ps. 요.. 더보기
[cocos2d-x] CCLayer 또는 CCSprite clipping하기 draw 함수에서 아래와 같이 사용하면 된다.따로 kmGLPushMatrix(), kmGLPopMatrix()를 호출 하지 않아도 된다. glEnable(GL_SCISSOR_TEST); CCEGLView::sharedOpenGLView().setScissorInPoints(clippingRegion.origin.x + getPosition().x, clippingRegion.origin.y + getPosition().y, clippingRegion.size.width, clippingRegion.size.height); CCNode::visit();glDisable(GL_SCISSOR_TEST);[출처] cocos2d-x 레이어 클리핑 시키기|작성자 김아키라 더보기