티스토리 뷰
우아한테크코스의 프리코스 2주차 미션 제출 후 받은 공통 피드백 내용 중 저에게 도움이 된 피드백 내용과 그에 대한 생각, 또 해당 피드백을 코드에 어떻게 적용하였는지 작성해보려고합니다.
특히 이번 피드백의 경우 제가 2주차 미션을 진행하며 고민했던 부분들을 다룬 내용이 꽤 있어 제가 미션을 진행해온 방향이 크게 틀리지 않았다는 것을 확인 받을 수 있었던 것 같습니다.
발생할 수 있는 예외 케이스에 대해 고민한다
정상적인 경우를 구현하는 것보다 예외 상황을 모두 고려해 프로그래밍하는 것이 더 어렵다.
예외 상황을 고려해 프로그래밍하는 습관을 들인다.
이 피드백을 보고 저는 1차 코딩테스트를 봤을 때가 생각났습니다. 코딩테스트를 볼 당시 나름 기능 구현 뿐만 아니라 예외 상황에 대한 처리 또한 신경썼다고 생각했습니다. 하지만 시험 종료 후 오픈 카톡에서 오가는 내용을 보니 정말 생각지도 못한 예외들이 너무 많은 것을 보고 제 자신의 부족함을 많이 느끼게 되었습니다. 그렇기에 이번 미션을 진행하는 과정에서도 최대한 제가 생각할 수 있는 예외에 대해서는 모두 처리할 수 있도록 구현하였으며, 다른 분들의 코드들을 참고하며 제가 생각하지 못했던 예외는 없는지 살펴보는 시간을 가졌습니다. 그렇다보니 예외 처리를 하는 부분의 코드 길이가 생각보다 길어져 이게 맞는 방향인지 의심을 하게됐었는데, 제가 고민했던 부분들에 대해 이렇게 피드백을 주셔서 제가 가고 있는 방향을 다시 한번 확인할 수 있는 계기가 된 것 같습니다.
git을 통해 관리할 자원에 대해서도 고려한다
gitignore에 대한 말씀인 것 같습니다.
java에서 제공하는 api를 적극 활용한다
함수(메서드)를 직접 구현하기 전에 java api에서 제공하는 기능인지 검색을 먼저 해본다.
java api에서 제공하지 않을 경우 직접 구현한다.
이 피드백은 보고 정말 너무 신기했습니다. 2차 과제를 진행하는 과정을 블로그에 정리했었는데 그 내용 중 같은 내용이 있었기 때문입니다.
있는 건 활용하는게 맞습니다. 분명 java api에서 제공하는 기능들을 java의 동작 원리에 대해 꾀차고 계신 분들이 개발한 것일 겁니다. 그렇기에 이러한 기능들은 최대한 활용해야하며, 그러기 위해 최종 코딩 테스트 전까지 java api에서 제공하는 기능들을 학습하고 한번씩 사용해보는 시간을 가져보려고합니다.
객체에 메시지를 보내라
상태 데이터를 가지는 객체에서 데이터를 꺼내려(get)하지 말고 객체에 메시지를 보내라.
아래의 "인스턴스 변수의 수를 줄이기 위해 노력한다" 피드백과 같이 생각해보면 Winner 클래스에서 제공하는 기능으로 우리는 maxPosition을 구할 수 있습니다. 따라서 먼저 Winner 클래스로 maxPosition을 구하고 모든 Car 객체들을 순회하면서 maxPositon을 인자로 넘겨 해당 객체가 우승자인지 판단 할 수 있습니다. 처음에는 객체에 메시지를 보내라는 말이 무슨 뜻인지 몰랐는데 확실히 코드를 보며 적용해보니 어떻게 동작하는 것이 객체에 메시지를 보내는 것인지 알게 되었습니다.
필드(인스턴스 변수)의 수를 줄이기 위해 노력한다
필드(인스턴스 변수)의 수가 많은 것은 객체의 복잡도를 높이고, 버그 발생 가능성을 높일 수 있다.
필드(인스턴스 변수)에 중복이 있거나, 불필요한 필드가 없는지 확인해 필드의 수를 최소화한다.
제 코드를 확인해보면 피드백에서 말해주신 것과같이 decide() 메소드와 setMaxPosition() 메소드로 해당 값을 구하고 있으면서도 이 값을 인스턴스 변수로 다시 저장하는 행동을 하고 있었습니다. 분명 인스턴스 변수로 따로 저장하지 않아도 되었을 텐데 이렇게 구현한 모습을 보니 인스턴스 변수를 생성하여 작성하는 습관을 가지고 있었던 것 같습니다. 앞으로는 최대한 불필요한 인스턴스 변수를 줄이는 방향으로 코드를 작성해보겠습니다.
'Backend > Java' 카테고리의 다른 글
Null vs. Empty vs. Blank (feat. isEmpty, isBlank) (2) | 2022.02.18 |
---|---|
부생성자에서 주생성자를 호출하라 (0) | 2022.02.17 |
Random vs. ThreadLocalRandom (2) | 2022.02.17 |
@SupperessWarning의 쓰임을 알고 사용하자 (0) | 2022.02.14 |
[우아한테크코스/프리코스] 1주차 백엔드 피드백 (0) | 2021.12.04 |