[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기Ahreum Kim
2018. 11. 03 'FEConf 2018' 발표자료입니다.
---
처음으로 프론트엔드 프로젝트에 (유닛)테스트코드를 작성해보며 느낀 경험을 공유합니다. 어떤 관점으로 접근 했는지부터, 테스트코드 작성을 하며 만난 고민과 해결책은 어떤 방식으로 풀어 냈는지 코드와 함께 다뤄보려 합니다. 저는 테스트 숙련자가 아니지만, 저와 비슷한 위치에서 테스트에 입문하시려는 분들께 어떻게 테스트에 입문하고 코드를 작성했는지에 대해서 구체적인 경험을 공유하는 것도 의미있을 거라 생각했습니다. 제가 드릴 얘기들이 정답이 아닐 수 있지만, 더 좋은 방향을 고민하면서 같이 생각해볼 수 있다면 좋겠습니다.
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법복연 이
『이펙티브 디버깅』 디버깅 지옥에서 탈출하는 66가지 전략과 기법
디오미디스 스피넬리스 지음 | 남기혁 옮김 | 한빛미디어 | 24,000원
★ 소프트웨어의 완성은 디버깅!
이 책은 경험이 풍부한 개발자를 대상으로 소프트웨어를 완성하는 마지막 기술을 가르친다. 저자는 35년 경험에서 깨우친 일반 원칙, 높은 수준의 전략, 구체적인 기술에 관한 조언, 효율 높은 도구, 창의적인 기법, 효과적인 디버깅과 관련된 행동 특성을 제시한다. 저자가 제안하는 66개의 전문 기법을 통해 디버깅 역량을 확장하고, 각 문제 상황에 맞는 최상의 접근법을 선택할 수 있을 것이다.
★ 주요 내용
다양한 소프트웨어 장애를 해결하는 높은 수준의 전략과 방법
프로그래밍, 컴파일, 실행 시 적용할 구체적인 기법
디버거를 최대한 활용하는 방법
믿고 투자해도 좋은 범용 기술과 도구
막다른 길과 복잡한 미궁에서 탈출하는 첨단 아이디어와 기법
디버깅하기 쉬운 프로그램을 만들기 위한 조언
멀티스레딩, 비동기, 임베디드 코드 디버깅에 특화된 접근법
향상된 소프트웨어 설계, 구축, 관리를 통한 버그 회피법
<3탄>스프링 부트를 사용한 마이크로 서비스 개발 (로컬 환경) | 페어 프로그래밍 데모 (테스트 작성)
이번 세션에서는 Spring Boot를 사용한 웹 애플리케이션 개발에 대해 소개합니다. 이때 제작되는 애플리케이션은 Pivotal에서 풀타임으로 사용하고 있는 페어프로그래밍을 통해 테스트부터 작성하는 핑퐁 페어등을 소개합니다. 두명이 함께 코드를 작성하는 환경을 통해 빠른 사업환경의 변화를 수용할 수 있는 개발 업무가 Pivotal에서는 어떻게 다른지 살펴봅니다.
2020년 서울시에서 주최한 강소기업탐방 프로그램에서 발표한 자료 입니다.
학교를 졸업하고 software engineer로 취직을 하기까지의 여정을 다뤘습니다
1. 개발자가 나에게 맞을지 고민하기 위한 방법
2. 개발자로 취직하기 (이력서/면접 준비 팁)
3. 개발자로 취직한 후 우리가 하는 일
2022-03-19 해외인기아티클 5기 발표자료입니다.
2021년 10월 1주차 해외 인기 아티클
- 타이포그래피 크기를 만들 때 피해야될 실수 5가지 (2021년)
- 스타트업에서 당신이 유일한 디자이너일 때 디자인 시스템을 구축하는 방법
- 당신이 알아야 할 10가지 기본 UI 디자인 원칙
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기Ahreum Kim
2018. 11. 03 'FEConf 2018' 발표자료입니다.
---
처음으로 프론트엔드 프로젝트에 (유닛)테스트코드를 작성해보며 느낀 경험을 공유합니다. 어떤 관점으로 접근 했는지부터, 테스트코드 작성을 하며 만난 고민과 해결책은 어떤 방식으로 풀어 냈는지 코드와 함께 다뤄보려 합니다. 저는 테스트 숙련자가 아니지만, 저와 비슷한 위치에서 테스트에 입문하시려는 분들께 어떻게 테스트에 입문하고 코드를 작성했는지에 대해서 구체적인 경험을 공유하는 것도 의미있을 거라 생각했습니다. 제가 드릴 얘기들이 정답이 아닐 수 있지만, 더 좋은 방향을 고민하면서 같이 생각해볼 수 있다면 좋겠습니다.
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법복연 이
『이펙티브 디버깅』 디버깅 지옥에서 탈출하는 66가지 전략과 기법
디오미디스 스피넬리스 지음 | 남기혁 옮김 | 한빛미디어 | 24,000원
★ 소프트웨어의 완성은 디버깅!
이 책은 경험이 풍부한 개발자를 대상으로 소프트웨어를 완성하는 마지막 기술을 가르친다. 저자는 35년 경험에서 깨우친 일반 원칙, 높은 수준의 전략, 구체적인 기술에 관한 조언, 효율 높은 도구, 창의적인 기법, 효과적인 디버깅과 관련된 행동 특성을 제시한다. 저자가 제안하는 66개의 전문 기법을 통해 디버깅 역량을 확장하고, 각 문제 상황에 맞는 최상의 접근법을 선택할 수 있을 것이다.
★ 주요 내용
다양한 소프트웨어 장애를 해결하는 높은 수준의 전략과 방법
프로그래밍, 컴파일, 실행 시 적용할 구체적인 기법
디버거를 최대한 활용하는 방법
믿고 투자해도 좋은 범용 기술과 도구
막다른 길과 복잡한 미궁에서 탈출하는 첨단 아이디어와 기법
디버깅하기 쉬운 프로그램을 만들기 위한 조언
멀티스레딩, 비동기, 임베디드 코드 디버깅에 특화된 접근법
향상된 소프트웨어 설계, 구축, 관리를 통한 버그 회피법
<3탄>스프링 부트를 사용한 마이크로 서비스 개발 (로컬 환경) | 페어 프로그래밍 데모 (테스트 작성)
이번 세션에서는 Spring Boot를 사용한 웹 애플리케이션 개발에 대해 소개합니다. 이때 제작되는 애플리케이션은 Pivotal에서 풀타임으로 사용하고 있는 페어프로그래밍을 통해 테스트부터 작성하는 핑퐁 페어등을 소개합니다. 두명이 함께 코드를 작성하는 환경을 통해 빠른 사업환경의 변화를 수용할 수 있는 개발 업무가 Pivotal에서는 어떻게 다른지 살펴봅니다.
2020년 서울시에서 주최한 강소기업탐방 프로그램에서 발표한 자료 입니다.
학교를 졸업하고 software engineer로 취직을 하기까지의 여정을 다뤘습니다
1. 개발자가 나에게 맞을지 고민하기 위한 방법
2. 개발자로 취직하기 (이력서/면접 준비 팁)
3. 개발자로 취직한 후 우리가 하는 일
2022-03-19 해외인기아티클 5기 발표자료입니다.
2021년 10월 1주차 해외 인기 아티클
- 타이포그래피 크기를 만들 때 피해야될 실수 5가지 (2021년)
- 스타트업에서 당신이 유일한 디자이너일 때 디자인 시스템을 구축하는 방법
- 당신이 알아야 할 10가지 기본 UI 디자인 원칙
6. 많은 경우 get/set 메소드는private 필드를 접근하는 부적절한 용도로만 사용된다. 해결하고자 하는 문제를 명확하게 파악하지 못했음을 의미.객체간의 관계를 세심하게 디자인 했다면 대부분의 get/set 이 불필요 추측에 의한 디자인은 필요치 않은 기능을 추가하는데 불필요한 시간을 낭비한다. 유연성을 위한 프로그래밍이 아닌 게으름일 뿐!
9. get/set 없는 삶 문제는 코딩이 아닌 디자인 CRC 카드 커닝험이 고안한 디자인 프로세스 교수 방법론 유스 케이스 : 어떤 유용한 결과를 내는,엔드유저가 수행하는 단일 작업
10. CRC 카드 각 사람이 CRC 카드를 가지고 객체를 표현 하며, 서로 이야기를 통해 유스케이스를 구성하는 액티비티를 수행한다.
11. CRC 프로세스 협업자끼리만 이야기를 나눌 수 있다. 협업자가 아닌 다른 사람과 이야기가 필요할 경우그 사람과 이야기 할 수 있는 협업자를 찾는다. 불가능 하다면 그 사람을 CRC 카드 협업자에 추가 한다. 어떤 작업을 수행할 사람이 없다면 새로운 CRC 를 추가하거나 기존 CRC 에 추가한다. 만약 CRC 의 책임이 너무 많다면 책임의 일부를 처리할 새로운 CRC 를 생성한다. 유의 사항 사용하는 단어와 프로세스 모두 구현이 아닌 문제의 도메인에 집중한다. 정보를 묻는 대신 필요한 정보를 가진 협업자에게 작업을 요청 한다. 약간의 데이터를 넘겨주는 것은 괜찮지만, 데이터 흐름은 최소화 한다.
12. CRC 결과물 대화를 통해 해결한 문제를 기록하며 이는 곧 프로그램의 동적 모델이 된다. CRC 카드 결과물은 프로그램의 정적 모델이 된다.
13. OO 디자인 RUP, Crystal, XP 등의 디자인 프로세스가 있다. 중요한 건 OO 시스템의핵심은 객체들 간의 대화 나눔 이라는 것(메시징)! 메시징 시스템을 세심히 디자인 하였다면 get/set 메소드를 없애고 유연하게 만들 수 있다!
14. 그럼 get/set 은 어디다 쓰나요 다른 객체를 돌보는 경우컬렉션 범용 라이브러리자바빈즈, 스트럿츠 절차지향 경계 레이어DB,UI 고도의 범용성과 유연성이 필요할 경우 필연적으로 getter/setter 를 사용할 수 밖에 없다.어떤 용도와 목적으로 사용할 지 예측 할 수 없다.
15. but 여러분은 자신이 작성하는 코드가 어떤 용도로 사용될지 어느 정도 알고 있다. 대부분의 프로그래머들이 평소 작성하는 코드는 고도의 범용성을 필요로 하지 않는다.
16. 정리 프로그램의 유지 보수성은 객체 간에 흐르는 데이터 양과 반비례 한다. 구현을 노출 시키면 유지보수성이 나빠진다. 접근자와수정자는 조심스럽게 사용하라. 익숙한 것이 올바른 것은 아니다.
17. 그 외 몇 가지 이슈 - 부록 리팩토링 get/set 의 남용 문제는 조악한 디자인을 암시하며 이는 리팩토링이 아닌 프로그램 재디자인이 필요하다. 단순 필드 접근의 getter 보다는 클래스 객체를 반환하는 getter 가 덜 해롭다 예) double 값을 반환하는 메소드 보다 Money 객체를 반환하는 메소드가 낫다. 객체가 구현하는 인터페이스를 통해 넘겨주는 것이 베스트