본문 바로가기

전체 글170

[일일 회고] 22.01.13.목 - 초보의 OOP 설계와 구현기(다형성과 추상화, 정적 팩터리 메서드 적용) 📚 개발 생각 오늘은 특정 주제에 대한 콘솔 프로젝트를 했다. 프로그램 실행부터 사용자 입, 출력과 데이터, 핵심 로직에 대한 요구사항이 있었다. 이를 절차 지향적으로 구현하는 것이 아니라 직접 OOP로 설계하고 구현하는 것이다. 예전에 C로 개발한 습관이 남아있어서 항상 어떤 문제를 볼 때 데이터를 중앙에 꺼내 쓰는 방식으로 개발했다. 이를 탈피하고자 특정 객체 안에 데이터와 프로시저로 묶어 정말 OOP 패러다임을 머릿속에 넣고 몸으로 익히고 싶었다. 사실 이전에 '객체지향의 사실과 오해 책'도 읽고 OOP 적용을 하려 했지만 역시나 어려웠다. 오늘의 회고는 프로젝트에서 겪었던 고민과 의문점을 남긴다. OOP ..ing ✅ 설계를 고민하고 구현하다 보니 다형성과 추상화가 된다고? 주어진 문제를 설계, .. 2022. 1. 13.
[일일 회고] 22.01.11.화 - 타인의 코드를 본다는 것 📚TIL 타인의 코드를 본다는 것 오늘은 어제 구현했던 자료구조를 가지고 팀원들과 각자 구현한 내용을 비교하며 리뷰했다. 타인의 코드를 본다는 것은 타인의 사고 과정뿐만 아니라 기술적 차이까지 살펴볼 수 있었다. 어제도 말했지만 어제 구현한 과제는 테스트에 집중하다 보니 이도 저도 아닌 코드가 되어버렸는데, 오늘 팀원들의 코드를 보며 객체지향적이고, 클린 코드, 코드 설계 관점까지 살펴볼 수 있었다. ✅ 인터페이스를 활용한 추상화, 제네릭 사용 내 코드의 문제는 링크드 리스트를 구현하는 데 도메인에 의존되어 있었다. 그러다 보니 링크드 리스트 기능뿐만 아니라 특정 도메인의 로직 (출력 문구, 삭제 등)이 코드 안에 들어있어 자료 구조를 재활용할 수 없었다. 하지만 팀원의 코드를 보니 LinkedList의.. 2022. 1. 11.
[일일 회고] 22.01.10.월 - 테스트 코드, 다 좋은 게 아니었어.. 오늘은 특정 요구사항에 맞는 데이터 구조를 설계하고 구현했다. 테스트 코드에 집중하다 보니 객체 설계에 신경을 쓰지 못했고 도리어 나쁜 테스트 코드만 작성했다. 📚TIL 좋은 테스트 코드란 무엇일까? 단위 테스트 적용 3일 차, 테스트 코드는 다 좋은 게 아니었어... 😞 책, '단위 테스트 4장'에서 좋은 테스트를 작성하기 위해서는 4가지 특성을 잘 분배해야 한다고 한다. 회귀 방지를하고 리팩터링에 내성이 있으며 빠른 피드백이 가능하고 유지 보수하기 좋은 테스트 코드를 작성해야한다. 오늘은 ‘회귀 방지’를 못한 경험을 했다. 회귀 방지를 못한 것은 요구사항 추가, 수정 시 기능이 의도한 대로 작동하지 않는 경우다. 이점을 인지하지 못했다. 전에는 기능이 추가될 때마다 의도한 대로 작동하지 않으니 매번 .. 2022. 1. 10.
[주간 회고] 22.01. 1주차 🌿 🍝 주간 회고를 어떤 방식으로 쓸까 고민하다가 편하게 일기 형식으로 써본다. 월요일 '코드 스쿼드' 백엔드 과정을 시작했다. 첫날 바로 전자계산기 구현 프로젝트가 주어졌다. 요구사항을 명확하게 정의하려 노력했고, 일의 순서를 그려보니 대강 얼마의 시간 안에 구현할 수 있겠다는 플랜을 잡을 수 있었다. 예전에는 구현하기에만 바빴을 텐데 이제는 업무(?)의 전체적인 흐름을 이해하고 일의 양과 시간을 정할 수 있어서 어느 정도 성장했구나 느꼈다. 처음으로 프로젝트에 유닛 테스트를 처음부터 적용하여 완전 TDD는 아니지만 비슷하게 따라 해 봤다. 모든 곳에 유닛 테스트를 적용할 순 없겠지만 핵심 로직에 테스트를 적용하니 빠른 리팩토링이 가능했고, 일일이 메인 문을 작성하지 않아도 코드 품질 평가를 손쉽게 할 수 있.. 2022. 1. 9.
📕 소프트웨어의 품질과 그 특성들 * 이 글은 책 소프트웨어의 품격 1장을 참고하여 작성되었습니다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 소프트웨어 품질이란 무엇인가 내적(internal) vs 외적(external) 소프트웨어 품질 기능적(functional) vs 비기능적(nonfunctional) 소프트웨어 품질 소프트웨어 품질 특성에 대한 설명 소프트웨어 품질 기준 사이 상호작용, trade-off 소프트웨어 품질이란 무엇인가 책에서 말한 소프트웨어 품질(quality)이란 소프트웨어에 대한 전반적인 가치가 아니라 소프트웨어가 지녀야 할 특성을 말한다. 여기서 특성은 특정 프로그래밍 언어, 효율성 등 많이 있지만 품질에서 이야기하는 특성은 이론상 측정 가능한 특성을 말한다.(특정 언어는 측정 가능 X) 소프트웨어 품질, .. 2022. 1. 8.
책 '소프트웨어의 품격(Seriously Good Software)' 소개와 요약정리, 스터디 📕 소프트웨어의 품격 - YES24 프로그래밍 언어의 기본을 익힌 독자를 대상으로 하는 책으로, 소프트웨어의 품질을 결정짓는 여러 가지 기준과 그 기준에 부합하는 소프트웨어를 개발하는 방법을 예제 바탕으로 설명한다. 더 www.yes24.com Seriouly Good Softwar(번역, 소프트웨어의 품격), 내 직역으론 '겁나 좋은 소프트웨어?'란 책을 우연히 서점에서 발견했고 마침 페이스북 추천글이 있었다. 소프트웨어의 품질에 대해 생각하지 못했거나 파편화 되어 있던 지식을 이번 기회에 정리하고자 한다. 주제 이 책은 한 가지 예제(수조 시스템)를 18가지 다른 방법으로 구현하며 각 방법론에 대해 토론한다. 성능과 코드의 명료성, 여러 측면에서 소프트웨어 품질을 최대화하는 방법을 배운다. 크게 주제로는.. 2022. 1. 8.