본문 바로가기
[Effective Java] 라이브러리를 배우고 사용하자. [Effective Java] 라이브러리를 배우고 사용하자. - 표준 라이브러리를 사용하면, 그것을 작성한 전문가들의 지식과 더 앞서 사용한 사람들의 경험을 이용하는 것이다. - 라이브러리를 사용하면 해결책을 작성하는 쓸데없는 시간을 낭비할 필요가 없다. - 라이브러리를 사용하면 우리의 노력 없이도 라이브러리의 성능이 지속적으로 개선된다. 또 새로운 기능이 계속 추가된다. - 라이브러리를 사용하면 우리 코드를 주류에 둠으로써 많은 개발자들에 의해 더욱 가독성이 좋아지고, 유지보수 가능하며, 재 사용 가능하게 된다. - 라이브러리를 사용하면 많은 장점이 있지만 많은 개발자들이 그렇게 하지 않는다. 원하는 기능이 라이브러리에 있는지 모르기 때문일 것이다. - 라이브러리는 너무 커서 모든 문서를 파악하기는 어.. 2017. 1. 30.
[Effective Java] 지역 변수의 유효 범위를 최소화 하자. [Effective Java] 지역 변수의 유효 범위를 최소화 하자. - 지역 변수의 유효 범위를 최소화하면, 코드의 가독성과 유지 보수성을 높이고 에러의 가능성이 줄어든다. - C와 같은 종전 프로그래밍 언어들은 지역 변수를 블록의 맨 앞에 선언해야 했으며, 일부 프로그래머들은 습관 때문에 계속 그렇게 한다. 하지만 이것은 버려야 할 습관이다. 자바에서는 명령문만 적법하다면 어디에든 변수를 선언할 수 있기 때문. - 지역 변수의 유효 범위를 최소화하는 가장 강력한 방법은 그 변수가 최초 사용되는 곳에 선언하는 것. 만일 변수를 사용하기 전에 선언하면 혼란만 생긴다. - 지역 변수의 선언과 초기화에 주의하자. 만일 변수를 올바르게 초기화하는데 필요한 정보가 충분하지 않다면, 충분하게 될 때 까지 선언을 .. 2017. 1. 24.
[Effective Java] 제네릭 타입을 애용하자. [Effective Java] 제네릭 타입을 애용하자. - 클래스를 제네릭화 하는 방법. - 1. 클래스 선언부에 하나 이상의 타입 매개변수를 추가. - 2. 코드 안에 나오는 모든 Object 타입을 그것에 맞는 타입 매개변수로 변경한 후 컴파일. new E[ size ] 와 같은 부분에서 보통 에러가 난다. 이를 피해가는 방법 1. E[] elements = (E[]) new Object[ size ]; // 타입 안전하진 않다. 이를 피해가는 방법 2. Object[] elements = new Object[ size ]; // 사용하는 부분에서 casting 이 필요하다.. scalar 타입보다 배열 타입에 대한 unchecked 캐스트 경고를 억제하는 것이 더 위험하므로, 2번 방법이 더 적합해.. 2016. 11. 29.
[노원 카페] 아메리꺄노 - 무난한 모던한 카페~ [노원 카페] 아메리까노 - 무난한 모던한 카페~ 김스타님과 무슨 바람이 불었는지 모르겠지만,식사장소를 노원으로 정하고 떠났습니다. 밥을 먹은 후에 카페는,이전에 김스타님이 친구분과 딸기빙수를 개 맛있게 먹었다고 신나게 자랑한 "아메리꺄노" 카페 이름이 장난스러운 것 같으면서도, 스페인 느낌도 좀 나고,외우기 쉬워서 좋습니다. 실내와 연결된 형태의 카페입니다. 딸기빙수가 짱짱 맛있다고 자랑해서 오게 된 카페인데,딸기빙수가 계절빙수라 불가능하다고 합니다.. 흑흑... 그래서 울며 겨자먹기로..추워서 다른 곳을 찾아다니기 싫어서 그냥 커피를 마십니다. 메뉴판에 뜨거운 아메리카노는 3,000원인데..어렴풋이 행사하고 있어서 조금 더 싸게 제공해줬던 것 같습니다.( 김스타님이 쏘셔서 저는 가격을 잘.. ) 카페.. 2016. 11. 27.
[Effective Java] 가급적 상속(inheritance) 보다는 컴포지션(composition)을 사용하자. 가급적 상속(inheritance) 보다는 컴포지션(composition)을 사용하자. - 상속은 코드를 재사용하는 강력한 방법이다. 그러나 일을 하는데 가장 좋은 도구는 아니다. 잘못 사용하면 부실한 소프트웨어를 초래한다. - 동일 프로그래머가 서브 클래스와 수퍼 클래스의 구현을 관장하는 같은 패키지 내에서 상속을 사용하는 것은 안전하다 상속을 위해 특별히 설계되고 문서화된 클래스를 확장(extends) 하기 위해 상속을 사용하는 것도 안전하다. 그러나 다른 패키지에 걸쳐 일반적인 실체 클래스로부터 상속을 받는 것은 위험하다. - 상속은 캡슐화(encapsulation) 을 위배한다. 올바른 동작을 위해 서브 클래스는 자신의 수퍼 클래스가 구현하는 상세 내역에 의존한다. 수퍼 클래스의 구현 내역은 소프.. 2016. 10. 27.
[Effective Java] public 클래스에서는 public 필드가 아닌 접근자(accessor) 메소드를 사용한다. public 클래스에서는 public 필드가 아닌 접근자(accessor) 메소드를 사용한다. - 어떤 클래스가 자신이 속한 패키지의 외부에서 접근 가능하다면 무조건 접근자 메소드를 제공하자. - 만일 패키지 전용 클래스거나 private inner class 라면 데이터 필드를 노출해도 아무 문제가 없으며 ( 클래스 설계를 잘 했다는 가정 하에 ), 접근자 메소드를 사용하는 것보다 코드를 알아보기 쉽다. - public 클래스에서 내부 필드를 외부로 노출하는 것은 결코 좋은 발상이 아니지만 필드가 불변이라면 그나마 덜 해롭다. Summary public 클래스는 자신의 가변 필드를 절대로 외부에 노출시키지 않아야 한다. 논란의 여지는 있으나 불변 필드를 노출하는 것은 그나마 덜 해롭다. 패키지 전용 또.. 2016. 10. 21.
[실용주의 프로그래머] 소프트웨어 엔트로피 [실용주의 프로그래머] 소프트웨어 엔트로피 출처 : 실용주의 프로그래머 -엔트로피(entropy)는 시스템 내의 “무질서” 한 정도를 가르키는 물리학 용어이다. -깨진 창문을 내버려두지 말라. -깨진 창문(나쁜 설계, 잘못된 결정, 혹은 형편없는 코드)을 고치지 않은 채로 내버려 두지 마라.발견하자마자 바로 고쳐라.적절히 고칠 시간이 충분치 않다면 판자로 덮는 것만이라도 하라.불쾌한 코드를 주석처리 하거나, 아직 구현되지 않았음이라는 주석을 달거나, dummy 데이터로 대치해 놓거나 하라.더 이상의 손상을 예방하기 위해 어떤 조치든 취하고 현 상황을 잘 관리하고 있다는 것을 보여 줘라. -깨진 창문이 꽤 있는 프로젝트를 한다면, “나머지 코드가 전부 쓰레기니까 나도 그렇게 하지 뭐” 라는 사고로 빠져들기.. 2016. 7. 25.
Good Engineer 의 5가지 조건 Good Engineer 의 5가지 조건 * Good Engineer 는 게으르다. Good Engineer 는 무엇이 고장났는지 정확히 모르는 상황에서 그것을 신경쓰고 시간을 쓰지 않는다. * Good Engineer 는 이기적이다. Good Engineer 는 가려운 곳이 있으면 스스로 가려운 곳을 긁을 product 를 생산해내며, 그것에 강하게 motivated 된다. 사실 가장 어려운 것은 고객이 원하는 것이 무엇인가 찾는 것인데, Engineer 자신이 고객이 된다면 feedback cycle 은 매우 빠르다. * Good Engineer 는 무식하다. 좋은 아이디어를 죽이는 한가지 방법은 그것에 대해 너무 많이 아는 것이다. 존재하는 모든 solution 에 대해 그리고 그것의 제약사항을 알.. 2016. 5. 3.
[iOS Study] 오토 레이아웃 소개 [iOS Study] 오토 레이아웃 소개 출처 : 아론 힐리가스의 iOS 프로그래밍 -아이패드와 아이폰 모두에서 실행 가능한 단일 앱을 유니버설 앱(Universal application) 이라 한다. -Deployment info 섹션으로 이동하여 Devices 팝업에서 iPhone 을 Universal 로 변경하면 된다. -절대 좌표 체계는 레이아웃이 깨지기 쉽다.미리 화면 크기를 알고 있다고 가정하기 때문이다. 오토 레이아웃을 사용하여 상대적인 방식으로 뷰들의 레이아웃을 기술할 수 있다.이것은 실행 시에 frames 를 결정하도록 해준다.따라서 frames 의 정의가 프로그램이 실행 중인 장비의 화면 크기를 고려할 수 있도록 한다. -레티나 장비는 비레티나 장비보다 두 배 많은 픽셀을 가지고 있지만.. 2016. 3. 3.
반응형