휘황찬란했던 나의 온보딩 발표가 마무리 되었다.
바로 본론으로 들어가보자면
느낀점,
- 내가 확실히 안다면 , 발표를 하는데 있어 자연스레 자신감이 붙을 것이다.
즉, 내가 말하는 부분에 있어 공부를 많이 하고 발표를 할 것.
- 선배님들이 말씀해주시는 피드백의 시간은 정말 값졌다!
- 개발자로써 , 갖춰야될 부분 부터 코드적으로 피드백,,!정말 달콤했고 소중한 시간이었다.
- 결론은 , 처음으로 코드리뷰 시간을 가져보면서
왜 "코드리뷰" 가 중요하고 !
왜 구글은 "코드리뷰" 문화를 중요시하는지!
에 대한 답을 얻을 수 있었다.피드백 ,
- modify 처리할때 , null값으로 확인하는 것은 불필요한 일일 수 있다.
- popup component가 같은 폼으로 두가지의 역할을 하는데 이것도 더 간단하게 할 수 있을거 같다.
- reload()방식은 필요없는 것도 불러와지기 때문에 , 쓰지말고 필요한 함수만 불러오는 것이 좋을 것이다.
- 어떠한 것을 명시할떄 0,1,2와 같은 것이 아닌 , 다른 사람이 한눈에 인식할 수 있게 짓자.
- REST , URL 개념이해하기 ,
- .exist() , .first() 사용해서 db접근하면 더 효율적일 것이다.
- orm에서 index사용은 안좋다
- python , typescript 변수명 작성법 신경쓰기
- set,get이라고 sessionservice구성할때 제공해주는 것이 있다.
- cors와 csrf
- localstorage 대신에 sessionstorage나 cookie사용 - ssh인증
- api 규칙 따라서 짜야하는데 , 너무 자유롭게 했다는점
- drf 적용
- 경고창 띄우는 구문을 백에서 받아오기
- http , https 차이
리팩토링,
- 피드백을 반영하여 리팩토링 해보는 과정 또한 매우 중요하기에,
앞으로의 테스크는 위 피드백을 반영하는 것으로 해보려 한다!
아래 포스트를 읽어보시면 위 글의 이해에 도움이 될 것입니다.
자세한 코드 설명 - Saladlab Onboarding #1
login API
- ORM - exists() 를 사용하여 수정
#1. 기존
#<!----------------기존 username 확인 코드------------------->
#1.DB username 확인
UsernameSet = UserSignup.objects.all().values_list("user_name" , flat = True)
print(UsernameSet)
# 1단계, username 일치하는지 확인
x =0
for i in UsernameSet:
if i == LoginUsername:
x += 1
print("x", x)
else:
print("bad")
if x ==0:
print("username fail _ firstfail")
return JsonResponse(loginusernamefail)
#<!----------------/기존 username 확인 코드------------------->
BAD : USER가 많아질 경우 위 방법은 정말 비효율적이다.
그래서,
#2. 변경
#<!----------------변경된 username 확인 코드 ------------------->
#1.DB username 확인 코드 리팩토링 -> exists()사용
Usernametrue = UserSignup.objects.filter(user_name =LoginUsername).exists()
print("username이 유효한지", Usernametrue)
if Usernametrue == False:
return JsonResponse(loginusernamefail)
#<!----------------/변경된 username 확인 코드 ------------------->
DB에 접근할때부터 filter()와 exist()로 인해 filter()로 걸어준 조건에 부합하는 것이 db에 존재하는지 바로 알수 있게된다.
후 exist()로 인해 값이 true 또는 false이기에 , 이에 맞춰 조건문을 걸어준다면 더 효율적인 로그인 api가 완성된다.
Modify API
- 기존 코드 중 복잡한 코드 간략화 작업
#1.
# <----------------------기존 modify main 코드 -------------------->
# # 2-2 -> title 비교 -> 수정 ok
if modifyPayload['tdmdtitle'] == '':
newtitle = currentToDo[0]['title']
print("title is same")
else :
print( "title is modify")
# 2-3 -> content 비교 -> 수정 ok
if modifyPayload['tdmdcontent'] :
newcontent = modifyPayload['tdmdcontent']
print('컨텐트 ',modifyPayload['tdmdcontent'] )
else :
newcontent = currentToDo[0]['content']
print("content is same")
# 2-4 -> due date 비교 -> 수정 ok
if modifyPayload['tdmdduedate'] == '':
newduedate = currentToDo[0]['due_date']
print("duedate is same")
else :
newduedate = modifyPayload['tdmdduedate']
# <----------------------/기존 modify main 코드 --------------------->
#2. 변경 - backend
newstatus = modifyPayload['tdmdstatus']
newtitle = modifyPayload['tdmdtitle']
newcontent = modifyPayload['tdmdcontent']
newduedate = modifyPayload['tdmdduedate']
modify_todo= TodoModel.objects.filter(id = modifyPayload['tdmdid']).update(status =newstatus , title =newtitle , content =newcontent , due_date=newduedate , updated_at = newupdate)
#2. 변경 - front
<div class="realpopups2">
<div class="infoboxs2">
<div class="titlebox2">
<input class="Titletext2" [(ngModel)]="todocurrenttitle" type="text" placeholder={{todocurrenttitle}} />
</div>
<div class="duedatebox2">
<div>
<p style="margin:20px; font-size: 20px;">Due Date : </p>
</div>
<div class="duedateinputbox2">
<input class="DueDatetext2" [(ngModel)]="todocurrentduedate" type="text"
placeholder={{todocurrentduedate}} />
</div>
</div>
프론트에서 , ngmodel 에 기입되는 변수를 기존의 tdmd_ 단위에서 tdcurrent로 변경
@input 데코레이터로 현재의 값을 받아와서 저장된 변수가 있기때문에 새로운 변수를 생성할 필요가 없었다.
ngmodel로 인해 기존의 값이 존재하더라고 사용자가 수정상태에서 새로운 값을 입력한다면, 그 값으로 변경이 되기떄문