My-Book(History)
-
켄트 벡의 구현 패턴 - 클래스My-Book(History) 2016. 10. 14. 17:13
단순한 상위클래스 이름 - 메타포 를 사용하자 ( 메타포란 사용을 쉽게 하기 위한 메뉴, 아이콘등이 가장 대표적인 메타포라고 말할 수 있습니다 ) 한정적 하위클래스 이름 - 상위 클래스로 부터 상속을 받았다는 것을 알리고자 클래스명 뒤에 Handle 과 같은 명칭을 사용하자 추상 인터페이스 - 인터페이스를 통해 유연성을 얻을 수 있는 경우에만 인터페이스에 비용을 지불해야 한다. 버전 인터페이스 - 최초 설계한 메소드를 많은 클래스가 구현하고 있는경우 새로운 메소드를 확장하기 어려운경우 아래 예제를 이용하자( extends를 사용해야한다는건 알지만 나중에 이글을 읽을때 다시 복습하기 위해서다) ex) 1. 최초 interfacec Command { void run(); } 2..확장 interface Re..
-
켄트 벡의 구현 패턴 - 프로그래밍 이론My-Book(History) 2016. 10. 14. 15:34
단순성 - 프로램을 최대한 단순화하라 - 의미 없는 코드는 모두 제거하라. - 설계 시 에도 고도한 요소는 모두 빼고, 요구 사항을 분석해서 꼭 필요한 사항만을 뽑아내라. - 과도한 복잡도를 제거하면 코드를 새로운 관점에서 바라볼 수 있다. 유연성 - 프로그램은 유연해야 하지만, 프로그램이 발전하는 방향으로 유연해야 한다. - 추측에 의거해 설계에 유연성을 부여하는 것보다는 단순성을 유연하게 적용한 후 테스트를 철저하게 하는 편이 더욱 효과적이다. - 유연성이 있으면서도 당장 이득을 얻을 수 있는 패턴을 사용하라. - 당장 비용이 들어가지만, 앞으로 이득을 얻을 수 있을지 불확실한 패턴의 경우에는 일단 사용을 자제하는 편이 좋다. 구현 패턴의 근간이 되는 원칙 1. 지역적 변화 : 코드를 수정할 때 함께..
-
자바 프로그래밍 면접 이렇게 준비한다.My-Book(History) 2016. 8. 27. 19:26
● 눈에 띄는 이력서 작성하기 - 사용할 수 있는 도구, 소스 버전 관리 시스테등 업무에 필요한 부가적인 항목들을 다룰 수 있는지 적어 넣어라 - 사용할 수 있는 핵심 기술을 어필하라(적합한 내용인지 확인할것) - 핵심 기술 영역과 비슷하게 경험했던 사항을 '블릿' 기호로 요약하라 (블릿이란 ● 이런것) - 팀에서 어떤 역할을 했고 어떤 부분을 담당하였을때 무엇을 이루어 냈는지 어필하라 - 수행했던 업무를 설명할떄는 강력한 형용사를 적절한 위치에 사용하는것이 좋으며, 스스로를 '리더' 개발자로 설명하거나 단독 권한을 가졌다거나 핵심 팀원이라고 설명하라 - 블로그, GitHub 등 면접 환경과 다른 실제 모습을 보여줄 수 있도록 링크를 제공하는것도 좋다. ● 배열 - 자바 배열은 객체로 취급한다는것을 명심..
-
애자일(프랙티스) - 애자일 협력My-Book(History) 2016. 6. 4. 21:50
멘토가 되자 - 지식은 나누면 커진다 아는것을 설명하는 시간을 가지면, 아는 것에 대한 더 나은 이해를 얻는다. 다른 사람이 질문을 할 때 다른 관점도 얻게 된다.새로운 팁과 트릭 몇개를 알게 될지도 모른다. 대게 멘토가 된다는 것은 자신에게 도움이 될 뿐만이 아니라 팀 동료가 실력을 높이도록 돕는 것을 뜻한다.그리고 팀의 테두리 안에 멈춰서는 안 된다. - 멘토가 되자 아는 것을 공유하는데 즐거움이 있다. 얻은 만큼 베풀어라. 더 나은 목표를 달성하기 위해서 다른 사람을 자극하자. 팀의 전체적인 역량을 향상시키자.
-
애자일(프랙티스) - 애자일 코딩My-Book(History) 2016. 5. 28. 22:01
의도적이고, 의미 있게 프로그램 하라 호어 온 소프트웨어 디자인 - 소프트웨어 설계를 하는 두가지 방법이 있다. 하나는 명백하게 어떤 결함도 없도록 무척 간결하게소프트웨어를 만드는 방법이고, 다른 방법은 매우 복잡하게 만들어서 결함을 명백히 찾아내지 못하게 만드는 것이다. - 코드를 개발할 때, 항상 편리함보다는 읽기 쉬움을 선택해야 한다. 코드 작성 시 성능이 좋지 않더라도 읽기 쉽다면 더 가치 있는 코드다. ex) 디폴트 인수나 선택적인 인수가 코드를 읽기 어렵고, 이해하기 힘들며, 버그를 더 많이 만든다면, 나중에 혼란을 일으키는 것보다 인수를 명확하게 설정하는 편이 낫다. - 코드를 이해하기 쉽게 만드는 한 가지 방법은 무슨일이 벌어지는지 알 수 있도록 코드를 명확하게 만드는 것이다, ------..
-
애자일(프랙티스) - 사용자가 원하는 내용을 제공하기My-Book(History) 2016. 5. 22. 21:10
설계가 강요하는 대신 안내하도록 하라 - 강기슭에 이르러 강을 건너는 방법에 대해 더 잘 판단할 수 있을 때까지, 강을 건너는 방법의 세부내용을 정하느라 시간을 낭비하지 말라- 요구사항이 조금 변해도 계속 구현하기 쉽다면 그 설계는 좋은 설계다. ★ 균형유지 하기 ● '미리 대규모로 설계할 수 없다' 는 말은 설계가 전혀 없다는 뜻이 아니다. 이말은 단지 실제 코드로 검증하는 일 없이 설계 작업에 매달리지 말라는 뜻이다. 설계에 대한 고민없이 코딩에 뛰어드는 것은 위험하다. 그런 식으로 뛰어들어도 괜찮은 경우는, 배우거나 프로토타입을 만들기 위해 바로 코딩한 후에 그 코드를 버릴 때다. ● 초기 설계가 쓸모없는 것으로 결론이 나도 초기 설계는 해야 한다. 설계를 만드는 행동은 매우 가치 있다. 꼭 설계 ..
-
애자일(프랙티스) - 애자일 기르기My-Book(History) 2016. 5. 22. 20:05
변화에 뒤처지지 말라 반복해서 조금씩 배우자 - 신기술을 따라잡는 데 매일 일정 시간을 확보하자.공부 시간이 길 필요는 없지만, 규칙적이어야 한다. 더 배우고 싶은 개념을 끊임없이 공부하자. 익숙하지 않은 용어나 구절을 들으면 노트에 적어 두자.그런 후에 익숙하지 않은 내용을 조사하기 위해 정해진 시간을 규칙적으로 활용하라. 최신 소식을 얻자 지역 사용자 그룹에 참석하자- 지역 사용자 그룹은 프로세스 향상, 객체지향 설계, 리눅스, 맥을 비롯한 모든 기술 영역에 존재한다.연설자에게 귀를 기울이고 끝난 다음 질문과 답변 시간에 참석하자. 워크숍이나 학회에 참석하자 열심히 읽자 Tip - 기술 변화를 따라가라.모든 분야에서 전문가가 될 필요는 없지만, 업계가 어디로 가는지 알고 있어야 하고, 그에 맞춰서 경..
-
애자일(프랙티스) - 애자일 시작하기My-Book(History) 2016. 5. 22. 19:09
애자일 정의 - 애자일 개발은 고도의 협력적인 환경에서, 지속적인 조정을 위해 피드백을 사용한다. 애자일 개발 방법론에 임하기 전에 명심?해야할 내용 - 문제가 아직 작을 때 부딪치고, 많은 것을 투자하기 전에 불명확한 것에 대해 조사하고 진실을 발견하자마자 지금까지의 모든 것이잘못되었다고 인정할 준비가 되어 있어야 한다. 결과를 위해 일하라 중.. - 문제에 대처하는 첫 번째 중요한 단계는 누가 잘못을 했는지 찾아서 시인하도록 하는것이 아니라 '이걸 해결하거나 개선하려면 무엇을 해야 할까?' 하고 물어보는 것이다. 그리고 비난을 하는 대신 문제를 해결하는데 집중해야 한다. - 균형 유지하기 ● '그건 내 잘못이 아니야'라는 말은 대부분 사실이 아니다. '그건 전적으로 네 잘못이야'라는 말도 보통 비슷하..