일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 탐욕법
- 코딩테스트
- 그래프
- heap
- 문자열
- Brute Force
- binary search
- 카카오 기출
- Queue
- 힙
- DP
- DVWA
- BFS
- 프로그래머스
- Greedy
- 정렬
- string
- Code Refactoring
- Dynamic Programming
- 알고리즘
- 큐
- Algorithm
- 완전탐색
- django
- programmers
- graph
- 동적계획법
- sort
- DFS
- 백준
- Today
- Total
생각과 고민이 담긴 코드
팀원 코드리뷰#1 본문
현재 진행 중 인 팀 프로젝트에서는 제조업 관련해서 원가 데이터를 입력받을 수 있는 웹페이지를 개발 중이었다.
기술 스택은 Django 프레임워크와 html, javascript를 사용하였다.
각자 소스코드들의 통일성을 유지하기 위해서 팀원들의 코드를 계속 리뷰 할 필요가 있었다.
팀원들은 각자의 화면을 맡아 개발하고 있었고 그 중 예를 들어 위의 화면에서는 법인정보 데이터를 입력하는 화면인데 각 Row에는 수정, 삭제하는 버튼이 각각 1개씩 존재하였다.
{% for i in rsCo %}
프론트에서는 백엔드로 부터 context 변수로 넘겨 받은 rsCo라는 객체 리스트을 for문 돌려서 각각의 객체에 접근하는데
이 객체가 DB에 Row에 해당하게 된다. 따라서 두 버튼에서는 각row의 수정, 삭제기능을 수행하기 위해 for문 안에서 하나의 객체의 id 값을 갖고 있을 필요성이 있었다.
그런데 여기서 이슈사항은 팀원들이 이 id 값을 저장하는 방식이 제 각각이라는 것이였다.
먼저 한 팀원의 코드이다. a태그를 사용함에 따라 불필요한 속성들을 무력화하기 위한 코드들이 불필요하게 들어가있었고 버튼의 a태그의 id속성에 row의 id 값을 저장하다보니 나머지 버튼에서는 id속성 중복으로 값을 저장할 수 없었다.
따라서 이 팀원의 선택은 임의의 typeid라는 속성을 만들어 그곳에 값을 저장하는 방식이였다.
두번째 팀원의 코드이다. 마찬가지로 a태그를 사용했고 이 팀원은 value라는 속성에 값을 저장하고 있었다. 이 방식 또한 a태그에서는 value라는 속성을 지원하지 않기 때문에 권장되는 방식이 아니다.
이처럼 화면마다 코드를 통일시키고 불필요한 속성들을 지우고 필요한 속성을 사용하도록 코드를 바꾸는 작업을 하였고 결과는 다음과 같다.
위에 보시는 것과 같이 button 태그를 사용하여 href 속성을 무력화 시킬 필요도 없었으며 button 속성에는 name이라는 속성 있어서 값을 저장할 수 있고 id속성과는 다르게 중복을 신경쓸 필요가 없었다. 결과적으로 두 버튼 모두 통일 되게 구성할 수 있었다.
이처럼 앞으로도 단지 기능만 돌아가면 다시 보지않는 코드가 아니라 계속 고민하면서 효율적인 방식으로 퀄리티를 높이는 코드 리팩토링 작업을 진행 할 예정이다.
'Code review & Code refactoring' 카테고리의 다른 글
코드 리팩토링/ Rest api 설계#3 (Django CORS 정책 관련 설정) (0) | 2021.03.28 |
---|---|
코드 리팩토링/ Rest api 설계#2 (Django Rest Framework) (0) | 2021.03.12 |
코드 리팩토링/ Rest api 설계#1 (문제 인식) (0) | 2021.02.25 |
팀원 코드리뷰#2 (1) | 2021.02.16 |