인프런 워밍업 클럽 2기 - BE 클린코드, 테스트코드 스터디 2주차 발자국
일주일 간 학습 내용 요약
코드 다듬기
주석의 양면성
주석이 많다는 것은 코드가 비즈니스 요구사항을 잘 반영하지 못했다는 의미일 수 있다. 주석에 의존하면 코드 품질이 떨어질 수 있다. 주석은 코드로 설명할 수 없는 의사 결정 히스토리를 설명하는 데 사용하며, 자주 변하지 않는 정보를 기록해야 한다.
변수와 메서드의 나열 순서
변수는 사용하는 순서대로 나열하고, 메서드는 공개 메서드를 상단에 배치하는 것이 일반적이다. 공개 메서드는 중요도나 종류별로 그룹화하여 나열하고, 비공개 메서드는 공개 메서드에서 언급된 순서대로 배치한다.
패키지 나누기
패키지는 문맥에 따라 나누어 관리해야 하며, 너무 잘게 쪼개거나 너무 크게 묶지 않도록 주의한다. 대규모 패키지 변경은 팀원과의 합의가 필요하다.
기능 유지보수
버그 수정과 알고리즘 교체는 코드 유지보수에서 중요한 부분이다. 예를 들어, DFS와 BFS 알고리즘 교체 시 재귀 대신 스택을 사용하는 방식으로 변경할 수 있다.
IDE 도움 받기
코드 정렬 및 품질 체크 도구(linting) 사용이 중요하다. 협업 시에는 팀 내 합의된 포맷을 따르고, 정해진 스타일을 지속적으로 개선하는 것이 필요하다.
기억하기 좋은 조언들
능동적 읽기
복잡하거나 난해한 코드를 읽을 때는 리팩토링하면서 읽는 것이 좋다. 목표는 도메인 지식을 확장하고 이전 작성자의 의도를 파악하는 것이다. 주석을 사용해 이해한 내용을 기록하며 읽는 것도 도움이 된다.
오버 엔지니어링
필요한 수준 이상으로 복잡한 구조를 만드는 것은 피해야 한다. 예를 들어, 구현체가 하나인 인터페이스는 아키텍처 이해에 도움을 주거나, 곧 추가될 가능성이 있을 때만 유용하다. 너무 이른 추상화는 오히려 복잡도를 높이고 이해를 어렵게 만든다.
은탄환은 없다
모든 문제를 해결해주는 만능 해결책(은탄환)은 존재하지 않는다. 클린 코드도 상황에 따라 적정한 수준에서 적용해야 하며, 실무에서는 소프트웨어의 품질과 빠른 결과물 사이에서 균형을 맞춰야 한다. 적정 수준을 파악하기 위해서는 극단적인 시도를 해보는 것이 중요하다.
회고
• 칭찬하고 싶은 점: 이해가 되지 않는 것들은 이해가 될때까지 여러번 돌려보니 어느정도 감이 잡혀가고 있다. 앞으로도 시간이 조금 더 걸리더라도 이해하고 넘어가는게 좋을 것 같다.
• 아쉬웠던 점: 분명 강의를 들을땐 아 그렇지 하고 넘어갔는데 막상 리팩토링 미션을 마주하니 뭐부터 해야될지 감이 안잡혔다. 뭘 해야겠다는 생각은 머릿속에 있는데 어디부터 어떻게 시작할지 고민이 많았다. 아직 배우기만 했지 실제로 코드를 직접 치는일은 많이 없어서 경험이 진짜 중요하다는것을 느꼈다.
• 보완하고 싶은 점: 일단 코드를 많이 작성해봐야 내것으로 만들 수 있을 것 같다. 무조건 직접 코드를 쳐보자.
다음 주 학습 목표
• 다음주 부터는 테스트 코드 강의가 있는데 놓치는 일이 없도록 초반부터 완벽히 학습해야 할 것 같다.
Day 7 미션
참고강의
댓글을 작성해보세요.