| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 구글 자바 코드 스타일
- 우아한테크코스 Google Java Style Guid
- ReverseProxy
- jwt원리
- session이란?
- 포워드프록시
- jwt토큰구조
- Google Java Style Guide
- 신입개발자 프로젝트
- session이뭔가요?
- 자바 코드 가이드
- 프로그래밍 배열
- 배열과 메모리
- 메모리에서 배열
- 세션단점
- jwt란?
- jwt토큰원리
- GPT프로젝트
- 구글 자바 스타일
- session장점
- 프록시서버
- 백엔드 서버
- session이 뭔가요?
- 세션장단점
- jwt토큰관리
- 신입개발자
- Google Java Code Style Guide
- 토큰구조
- session단점
- 세션장점
- Today
- Total
dev_dbdb1114
CleanCode 강의 후기(feat.WantedOnBoarding) 본문
CleanCode 강의 후기(feat.WantedOnBoarding)
dbdb1114 2023. 9. 6. 16:23개요
WantedOnBoarding 백엔드 챌린지에 참가했다. 3시간 길이의 강의 였다. 그동안 들었던 ‘클린코드’라는 개념에 대해서 설명을 들을 수 있었고, 나름의 기준을 만들어가기에 좋은 수업이었다. 자신만의 기준이 없는 나 같은 사람이라면 따라하며 기초를 잡기에 좋았다. 물론 강의에서 들은 내용이 전부 정답이라고 생각하지 않는다. 프로그래밍을 공부하면서 느꼈던 점은 매번 요구사항에 맞는 여러가지 방법들 중에서 제일 적합해 보이는 것을 골라서 사용하는 것이다. 정답은 없다. 하지만 기준이 없는 상태라면 누군가가 고심끝에 만들어낸 프로그래밍 기법이고, 유명하기에 한 번 익혀두면 좋겠다는 생각이든다.
MeaningfulNaming - 변수도 담백하게
"변수도 담백하게" 라는 말은 내 머릿속에서 나온 말이다. 나는 담백하다는 말을 좋아한다. 음식 보다는 사람에게 많이 쓴다. “너 참 담백하구나” 이런 느낌? 이런 칭찬을 부담스럽게 느끼는 사람들이 있어서 자주 쓰지는 않는다. 다만, 내가 사람에게 느끼는 담백함은 이런 것이다.
인간의 담백함
- 본인의 마음에 솔직하다.
- 하는 말이 받아들이기에 이질감이 없고 매끄럽다.
- 말을 헷갈리게 하지 않고, 쉬운 단어를 쓴다.
- 불필요한 말을 하지 않는다.
변수의 담백함
- 역할이 명확히 드러나야 한다.
- 다른 변수와 헷갈려서는 안된다.
- 읽기에 좋아야한다. ( 가독성 )
- 최대한 명확히 구분되어야 한다. ( 검색의 용이, 로그 파악에 용이 )
- 불필요한 내용은 포함시키지 않는다.
수업내용에서 말씀하신 규칙들을 내 느낌을 위주로 써봤다. 이 규칙들을 생각하면서 변수명을 짓는다면 군더더기 없이 깔끔하겠다는 생각이 든다. 하지만 난이도는 담백한 사람이 되는 것 만큼이나 어려운 것 같다. 프로그래밍 공부를 하면서 매순간 느끼는 것 처럼 부단히 노력해야하는 것이 하나 추가된 느낌이다.
함수는 작게 만들자
Atomic 디자인 패턴이 생각났다. Atomic 디자인 패턴은 모든 컴포넌트를 원자 단위로 쪼개어 사용한다고 해서 Atomic이라는 이름이 붙었는데 함수는 작게 만들라니까 이게 생각났다. 수업중에 들었던 내용은 나중에 쓸지 안 쓸지 모르기 때문에 함수는 가능한한 작은 단위로 만들어 두는 것이 좋다고 말씀하셨는데 끝에 강사님 본인도 처음 프로그래밍 할 때는 굳이 나눠야하나 생각했지만, 여태껏 개발을 하다보니 굳이 나눠두는게 좋다고 한다. ( 이런 얘기를 들으니 더 설득력 있었다. )
그 중 명령과 조회를 분리하라는 말씀을 하셨는데 내가 이해한 기준으로 설명하자면 이렇다.
명령 : 어떤 행동을 하게 하는 것
조회 : 존재여부, 어떤게 맞는지 등을 알려주는 것
여러가지 함수가 있을텐데 내 머리속으로 예시를 들어보자면, 회원가입을 할 때 기존 회원인지 확인을 해야할 것이다. 보통 id를 중복체크를 한다고 하더라도, email이 같거나 전화번호가 같은 회원이 있을 수 있다. 이럴 때 회원가입 하는 함수에 이미 회원인지 확인하는 함수를 넣지 말라는 이야기이다.
변경 전
public int join(User user){
if ( null != userService.getUser(user.getId)){
return userService.insertUser(user);
} else {
return "fail";
}
}
변경후
public int join(User user){
if ( userService.isExist(user) ){
return userService.insertUser(user);
} else {
return "fail";
}
}
너 정말 private 하게 쓰고있어? ( 디미터 법칙 )
솔직하게 한 대 맞았다. 아직은 이해할 수 없지만 써야한다는 약간의 의무감으로 인해 'private'이라는 접근제어자를 쓰고있었다. 어떤 객체를 만들 때 안에 정보를 안전하게 다뤄야 하니까 private을 썼는데 그래놓고 늘 getter와 setter를 만들어서 객체의 정보에 접근했다. 항상 의문이 있었지만 “뭐 조금은 도움이 되겠지“ 하며 안일한 생각에 늘 그렇게 코드를 작성했다. 강의를 들으며 제대로 꼬집혔다. 이때 말씀해주신 관련 법칙이 디미터 법칙 이었다. 내가 이해하기로는 필요하다면 getter와 setter 보다는 기능단위로 만들어서 함수를 사용해야 한다는 이야기로 이해했다.
후기
모든 수업 내용을 정리하듯 여기에 올리기에는 강사님이 열심히 준비한 자료를 배포하는 느낌이 들어서 올리지 않았다. 다만 나중에 언젠가 나도 여러 책을 보고 연습을 해서 완전히 내 것이 된다면 잘 정리해서 보는 사람들이 뭐라도 하나 얻어갈 수 있는 글을 쓰고싶다. 그런 날이 될 때 까지 열심히 공부해야겠다. 내가 아직 취준생 입장이라 그런지 모르겠지만 프로그래밍을 공부하다보면 공부할 것 들이 계속해서 내 앞에 떨어진다.( 현업자들 이야기를 들어보면 평생 그렇다고 하더라 ) 새로운 기술, 내가 익히지 못한 기술, 디자인패턴 등등 처음에는 너무 낯설고 어렵고 막막했지만 이제는 즐기며 공부하고 있다. 하나 하나 알아가는 즐거움이 참 좋다. 이번 강의도 그렇게 하나 하나 알게 된 순간 이었고 좋은 강의를 들을 수 있어서 원티드와 수업해주신 진호님께 감사하다.