3주차
무엇을 했나?
본과제 진행
WebAPI 서버 만들기(계속)
코드 리뷰 받은 이후 코드 재설계 및 수정
기능 : 공지 등록 및 전송, 우편함, 출석부, 인앱 결제, 강화
회고
이제 WebAPI 개발의 전체적인 구조와 흐름에 대해서는 감을 잡았다
mysql, redis에 연결하고 요청을 보내고 결과를 받는 것도 어느정도 이해했다. 적절한 설계와 시간만 들이면 충분히 구현할 수 있을 정도로 이해했다.
잘못된 설계
서비스에서 또 서비스를 DI 받아서 사용했다.
하나의 서비스가 하나의 테이블을 접근하는 방식으로 설계했다. 그리고 어떤 여러 테이블에 접근할 필요가 있는 서비스에서 다른 서비스를 주입 받아서 사용했다. 하지만 이는 하나의 서비스에서 DB 커넥션을 여러개 맺는 꼴이 되며, 하나의 테이블에만 접근하는 경우에도 그 서비스 객체는 이미 여러 커넥션을 맺은 상태다. 이는 DB에 무리가 가게 되는 잘못된 구현이었다. 그래서 서비스 안의 서비스는 제거하였고, 차라리 컨트롤러에서 여러개의 서비스를 주입받아서 사용하는 식으로 바꿨다.
우편 테이블을 잘못 이해하고 설계했다.
우편의 content는 양이 클 수 있기에, 우편의 리스트를 보여줄 땐 우편 content를 안가져와도 된다는 이야기가 있었다. 나는 이를 우편과 content의 테이블을 분리하라는 것으로 잘못 이해했다. 그래서 mysql의 관련 table의 스키마를 다시 설정하고 다시 코딩했다.
좋은 코드란?
실장님이 좋은 코드가 무엇인지에 대해서 계속해서 강조하셨다. ASP.NET Core에 어느정도 익숙해졌기에, 좋은 코드에 대해 고민하고 적용해봤다.
일단 좋은 코드란, 코드를 처음 보는 사람도 쉽게 읽히는 코드다. (물론 코드가 기능을 잘 해야하기도 한다.) 변수명, 메소드명, 클래스명 등을 사용자가 파악하기 쉽게 설정하고, 메소드명은 길어도 좋으니 그 의미가 분명해야 한다. 클린코드라는 책을 짬짬히 읽으면서 적용해봤다.
깔끔하고 좋은 코드를 위한 노력
메소드/함수는 동사로 시작, 변수는 명사로 시작했다.
메인함수(여기서는 컨트롤러)에는 함수만 썼다. 메인 함수에서는 일부의 제어문을 제외하고는 가능한 함수/메소드를 사용하였고, 그 함수명, 메소드명, 매개변수명을 통해서 어떤 동작을 하는지 이해가 되게 했다.
조건문에 들어가는 코드들도 가능한 메소드로 썼다. if(IsWhat()) { … } 의 형식으로 바꿨다. 가장 메인문에서는 이런식으로 어떤 동작인지만 알게 써주는 것이 좋다고 생각했다. 그리고 그 구현은 각 함수/메소드 안에서 했다.
근데 사실 변수명, 메소드명은 아직 잘 모르겠다. 현업에서 관용적으로 쓰이는 단어들이 무엇인지 잘 모르겠다. 프레임워크나 라이브러리에 포함된 메서드 이름을 참고하면서 만들어보긴했는데 어렵다. 오픈소스를 열어보고 탐구해본다면 도움이 될 것 같다.
DB 설계의 중요성
DB가 잘 설계되어 있어야 코드 구현이 깔끔하다. 그리고 DB를 잘못 설계해서 수정해야 하면, 코드에서 모델과 모델을 사용하는 모든 곳에서 수정을 해야한다. 여간 복잡한 일이 아니다. 서버/백엔드 개발에 있어서 DB가 중요하다는 이유를 조금씩 알아가고 있다.
Last updated