세션 소개
개인의 능력, 팀의 협업, 그리고 회사 전체의 효율성을 향상 시키는 것은 개선의 과정을 통해 이루어집니다.
작은 개선을 통해 작은 성공을 이루고, 더 큰 기회로 이어질 수 있는 시야를 공유하고 하고자 합니다.
발표자 소개
서버 컴퓨터를 만들다가,
3년차 서버개발자가 되었고,
고양이(걸오)님을 부양하기 위해 열심히 살아가고 있습니다.
디오미디스 스피넬리스 지음 | 남기혁 옮김 | 한빛미디어 | 24,000원
★ 소프트웨어의 완성은 디버깅!
이 책은 경험이 풍부한 개발자를 대상으로 소프트웨어를 완성하는 마지막 기술을 가르친다. 저자는 35년 경험에서 깨우친 일반 원칙, 높은 수준의 전략, 구체적인 기술에 관한 조언, 효율 높은 도구, 창의적인 기법, 효과적인 디버깅과 관련된 행동 특성을 제시한다. 저자가 제안하는 66개의 전문 기법을 통해 디버깅 역량을 확장하고, 각 문제 상황에 맞는 최상의 접근법을 선택할 수 있을 것이다.
★ 주요 내용
다양한 소프트웨어 장애를 해결하는 높은 수준의 전략과 방법
프로그래밍, 컴파일, 실행 시 적용할 구체적인 기법
디버거를 최대한 활용하는 방법
믿고 투자해도 좋은 범용 기술과 도구
막다른 길과 복잡한 미궁에서 탈출하는 첨단 아이디어와 기법
디버깅하기 쉬운 프로그램을 만들기 위한 조언
멀티스레딩, 비동기, 임베디드 코드 디버깅에 특화된 접근법
향상된 소프트웨어 설계, 구축, 관리를 통한 버그 회피법
아래의 9권 책 리뷰를 포함하고 있습니다.
리팩토링 코드 품질을 개선하는 객체지향 사고법
빅데이터의 충격 (거대한 데이터의 파도가 사업 전략을 바꾼다)
헤드 퍼스트 데이터 분석 (당신을 최고의 데이터 분석가로 이끌어줄 마법 같은 학습서)
왓슨 인간의 사고를 시작하다
소프트웨어 누가 이렇게 개떡같이 만든 거야
앱만장자 (부를 거머쥔 인디 개발자들의 성공 비법)
애자일 마스터 (프로젝트 인셉션 추정과 계획 그리고 실행)
읽기 좋은 코드가 좋은 코드다 (더 나은 코드를 작성하는 간단하고 실전적인 테크닉)
프로그래머, 열정을 말하다
라쎄 코스켈라 지음 | 이복연 옮김 | 한빛미디어 | 2013년 11월 | 25,000원
예스24: http://www.yes24.com/24/goods/1136108
테스트 라이브러리 사용법에서 나아가 ‘좋은 테스트란 무엇인가’, ‘좋은 테스트를 작성하려면 어떻게 해야 하는가’에 관한 현장의 물음에 해답을 제시한다. 테스트가 갖춰야 할 요건에 따라 나눈 테스트 카탈로그가 수록되어, 필요할 때마다 원하는 목록을 참고하여 자신이 작성한 테스트에서 문제를 발견하고 수정해 나갈 수 있으며 더욱 응용력 높은 학습을 할 수 있다.
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기Ahreum Kim
2018. 11. 03 'FEConf 2018' 발표자료입니다.
---
처음으로 프론트엔드 프로젝트에 (유닛)테스트코드를 작성해보며 느낀 경험을 공유합니다. 어떤 관점으로 접근 했는지부터, 테스트코드 작성을 하며 만난 고민과 해결책은 어떤 방식으로 풀어 냈는지 코드와 함께 다뤄보려 합니다. 저는 테스트 숙련자가 아니지만, 저와 비슷한 위치에서 테스트에 입문하시려는 분들께 어떻게 테스트에 입문하고 코드를 작성했는지에 대해서 구체적인 경험을 공유하는 것도 의미있을 거라 생각했습니다. 제가 드릴 얘기들이 정답이 아닐 수 있지만, 더 좋은 방향을 고민하면서 같이 생각해볼 수 있다면 좋겠습니다.
세션 소개
개인의 능력, 팀의 협업, 그리고 회사 전체의 효율성을 향상 시키는 것은 개선의 과정을 통해 이루어집니다.
작은 개선을 통해 작은 성공을 이루고, 더 큰 기회로 이어질 수 있는 시야를 공유하고 하고자 합니다.
발표자 소개
서버 컴퓨터를 만들다가,
3년차 서버개발자가 되었고,
고양이(걸오)님을 부양하기 위해 열심히 살아가고 있습니다.
디오미디스 스피넬리스 지음 | 남기혁 옮김 | 한빛미디어 | 24,000원
★ 소프트웨어의 완성은 디버깅!
이 책은 경험이 풍부한 개발자를 대상으로 소프트웨어를 완성하는 마지막 기술을 가르친다. 저자는 35년 경험에서 깨우친 일반 원칙, 높은 수준의 전략, 구체적인 기술에 관한 조언, 효율 높은 도구, 창의적인 기법, 효과적인 디버깅과 관련된 행동 특성을 제시한다. 저자가 제안하는 66개의 전문 기법을 통해 디버깅 역량을 확장하고, 각 문제 상황에 맞는 최상의 접근법을 선택할 수 있을 것이다.
★ 주요 내용
다양한 소프트웨어 장애를 해결하는 높은 수준의 전략과 방법
프로그래밍, 컴파일, 실행 시 적용할 구체적인 기법
디버거를 최대한 활용하는 방법
믿고 투자해도 좋은 범용 기술과 도구
막다른 길과 복잡한 미궁에서 탈출하는 첨단 아이디어와 기법
디버깅하기 쉬운 프로그램을 만들기 위한 조언
멀티스레딩, 비동기, 임베디드 코드 디버깅에 특화된 접근법
향상된 소프트웨어 설계, 구축, 관리를 통한 버그 회피법
아래의 9권 책 리뷰를 포함하고 있습니다.
리팩토링 코드 품질을 개선하는 객체지향 사고법
빅데이터의 충격 (거대한 데이터의 파도가 사업 전략을 바꾼다)
헤드 퍼스트 데이터 분석 (당신을 최고의 데이터 분석가로 이끌어줄 마법 같은 학습서)
왓슨 인간의 사고를 시작하다
소프트웨어 누가 이렇게 개떡같이 만든 거야
앱만장자 (부를 거머쥔 인디 개발자들의 성공 비법)
애자일 마스터 (프로젝트 인셉션 추정과 계획 그리고 실행)
읽기 좋은 코드가 좋은 코드다 (더 나은 코드를 작성하는 간단하고 실전적인 테크닉)
프로그래머, 열정을 말하다
라쎄 코스켈라 지음 | 이복연 옮김 | 한빛미디어 | 2013년 11월 | 25,000원
예스24: http://www.yes24.com/24/goods/1136108
테스트 라이브러리 사용법에서 나아가 ‘좋은 테스트란 무엇인가’, ‘좋은 테스트를 작성하려면 어떻게 해야 하는가’에 관한 현장의 물음에 해답을 제시한다. 테스트가 갖춰야 할 요건에 따라 나눈 테스트 카탈로그가 수록되어, 필요할 때마다 원하는 목록을 참고하여 자신이 작성한 테스트에서 문제를 발견하고 수정해 나갈 수 있으며 더욱 응용력 높은 학습을 할 수 있다.
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기Ahreum Kim
2018. 11. 03 'FEConf 2018' 발표자료입니다.
---
처음으로 프론트엔드 프로젝트에 (유닛)테스트코드를 작성해보며 느낀 경험을 공유합니다. 어떤 관점으로 접근 했는지부터, 테스트코드 작성을 하며 만난 고민과 해결책은 어떤 방식으로 풀어 냈는지 코드와 함께 다뤄보려 합니다. 저는 테스트 숙련자가 아니지만, 저와 비슷한 위치에서 테스트에 입문하시려는 분들께 어떻게 테스트에 입문하고 코드를 작성했는지에 대해서 구체적인 경험을 공유하는 것도 의미있을 거라 생각했습니다. 제가 드릴 얘기들이 정답이 아닐 수 있지만, 더 좋은 방향을 고민하면서 같이 생각해볼 수 있다면 좋겠습니다.
2. 본 PPT는 Design Patterns Study를 위해 작성되었습니다.
Study에 사용한 교재는 한빛미디어에서 나온
Head First Design Patterns을 사용하였습니다.
예시로 사용된 간단한 코드들은
https://github.com/doubleh777/DesignPatternsStudy.git에서
다운 받으 실 수 있습니다.
그리고 1989. 2. 6, 27년 전 오늘 태어난 김혜원 양 생일 축하합니다!!
Written by NHN NEXT 2기 조현호 For study with NHN NEXT 2기 조현호
서울시립대 이희태
3. 공부를 위해 간단한 시나리오를 생각해봅시다.
스타벅스에서 커피 정보를 관리하는
시스템을 만들고자 합니다.
객체 지향의 꽃은 상속이라는 말을 많이들 하던데
상속으로 만들면 되겠지?
9. 앞서 말했다시피 우린 여전히 분명
지난시간 배웠던 디자인 원칙을 어겼습니다.
그런데 과연 문제가 없을까요?
10. 고객이 더블모카를 주문한다면 어떡하죠?
방법이 없군요…
첨가물의 종류가 추가 될때 마다 새로운 메소드를 추가해야겠군요.
뿐만 아니라 슈퍼클래스의 cost()메소드도 고쳐야겠고요.
커피가 아닌 새로운 음료를 출시 할 수도 있겠죠?
그러면 이런 음료들도 커피에만 들어가는 재료들을
모두 상속받아야 할텐데… 과연 이게 합리적일까요?
21. 메인 메소드를 살펴보죠.
아하! 이렇게 첨가물을 new할 때
beverage를 파라미터로 넣어주면
첨가물이 첨가되는군요!!
이게 가능한 이유는
핵심 component인 커피와 첨가물들이 똑같은
“Beverage”라는 클래스를 상속받기 때문입니다!!
이렇게하면 첨가물이 추가된 음료도 결국 Beverage니까
그 음료에다가 또 다른 첨가물을 추가하려고 해도
파라미터로 이전 음료를 넣는것이 가능한거죠!
테스트를 해보니 잘 찍혀 나오는군요!
이젠 더블 모카를 주문해도 문제가 없어요.
22. 데코레이터 페턴을 이용하면
우리가 아까 배웠던 디자인원칙,
OCP를 지키면서 디자인 할 수 있죠.
즉, 첨가물이나 새로운 종류의 음료를 추가하기 위해서는
기존의 코드를 건드릴 필요 없이 새로운 클래스를 추가해서 확장을
하면 되는거에요.
쉽게 확장할 수 있으면서도 기존의 코드를 변경하지 않으니
OCP를 지켰다고 할 수 있죠.
23. 몇 몇 질문들이 있을 수 있을 것 같아요.
예를 들면,
“상속이 아니라 구성을 사용하라면서요??
이것도 결국 상속 아닌가요??”
같은 질문이 있을 수 있을 것 같아요.
24. 생각 해봅시다.
분명 상속을 이용해 디자인을 하였지만,
그 상속이 무엇을 위한 상속이었을까요?
그건 바로 앞에서 메인 메소드에서 보셨다시피
“형식”을 맞추기 위한 수단인겁니다.
그래서 우리는 손쉽게 첨가물을 추가 할 수 있었죠.
바로 같은 “Beverage”를 상속하고 있다는 점 때문에!!!
그리고 결국 행동을 슈퍼클래스에서 상속 받아 얻게 되는 것이 아니라
첨가물을 추가할 때 마다 얻게되므로 구성을 이용한다고 할 수 있죠.
25. 실제로 이런 데코레이터 페턴을 이용하는 것을
이미 많이 봐 오셨을 것도 같은데요,
예를 들면, java.io를 이용해 파일 입출력을 할 때,
FileInputStream fis = new FileInputStream();
BufferedInputStream bis = new BufferedInputStream(fis);
이런식으로 이용 할 수 있는 것은
데코레이터 패턴으로 디자인 되어 있기 때문입니다!!!