
오늘 TIL 3줄 요약
- 시간 복잡도가 같더라도, 상황에 따라 처리 속도가 달라질 수 있다
- 해시 테이블 속도의 비결은 해시 함수
- 좋은 코드를 향한 열망과 고민은 개발자의 숙명
TIL (Today I Learned) 날짜
2024.02.17
오늘 읽은 범위
에피소드 26 ~ 29
책에서 기억하고 싶은 내용을 써보세요.
📍 정렬 알고리즘
✔️ 버블 정렬 (Bubble Sort)
- 서로 인접한 두 원소를 비교하여 정렬하는 알고리즘
- 시간 복잡도 : O(N^2)
✔️ 선택 정렬 (Selection Sort)
- 전체 데이터 중 가장 작은 데이터 또는 가장 큰 데이터의 위치를 따로 기억하여 정렬하는 알고리즘
- 시간 복잡도 : O(N^2)
✔️ 삽입 정렬 (Insertion Sort)
- 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여 자신의 위치를 찾아 삽입하여 정렬하는 알고리즘
- 시간 복잡도 : O(N^2)
📍 스택과 큐
✔️ 스택 (Stack)
- 데이터를 수직으로 쌓고, 값을 추가하거나 삭제할 때 윗부분에서 작업 수행 ➡️ LIFO (Last In First Out)
- 스택을 사용하는 경우 : 웹 브라우저의 뒤로 가기 버튼, 되돌리기 단축키
✔️ 큐 (Queue)
- 데이터를 수직으로 쌓고, 값을 추가하거나 삭제할 때 아랫부분에서 작업 수행 ➡️ FIFO (First In First Out)
- 큐를 사용하는 경우 : 쇼핑몰 주문 처리 시스템
📍 해시 테이블
- 키와 값을 짝지어 데이터를 정리한 테이블
- 쉬운 데이터 정리 및 검색 속도 향상
- 시간 복잡도 : O(1)
✔️ 해시 함수
- 해시 테이블 시간 복잡도의 비결
- 키 값 ➡️ 인덱스로 바꾸는 역할
📍 클린 코드 작성 방법
- 의미 있는 변수와 함수 이름 사용하기
- 함수 이름 동사로 짓기
- 함수의 액션은 1개여야 한다
- 함수를 설계하는 시점부터 함수가 해야 하는 역할을 명확하게 정하기
- 무분별한 매개변수 사용 자제
- 함수 역할 파악을 위해 여러 인자 값 전달 피하기
- 불가피한 상황이라면 ➡️ Configuration Object 방식으로 매개변수를 묶어서 전달하자
- boolean 값은 인자로 보내지 말 것
- '함수의 액션은 1개여야 한다'에 위배
- 축약어 사용 금지
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
✔️ 클린 코드의 중요성에 대해서 인지하고 있었지만, 개발을 시작하는 입장에서 처음부터 클린 코드까지 신경 쓸 여유가 없었다 😢 코드가 돌아가는 것만으로도 감사할 뿐 ... 😂
현재는 혼자 코드를 짜보는 일이 대부분이라 나만 알아볼 수 있으면 된다고 안일하게 생각했던 것 같다.
아직 클린 코드를 작성하는 것이 익숙하지 않기에 우선 잘 실행되는 코드부터 사용하고, 이후 쉽게 적용할 수 있는 클린 코드 원칙부터 시도해봐야겠다.
코드 리뷰의 기회가 있다면, 놓치지 않고 적극적으로 봐달라고 해야지.
내가 담당하게 될 시스템을 내가 담당하기 이전의 코드보다 더 클린하게 만들어서 나뿐만이 아니라, 협업하게 될 모든 동료들을 위해 클린 코드를 항상 인지하며 코드를 짜야겠다고 다짐한다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
🙅
오늘 읽은 다른사람의 TIL
🙅
유튜브 강의
[에피소드 26] https://youtu.be/Bor_CRWEIXo?si=L0ttK10Md9NEGFcc
[에피소드 27] https://youtu.be/Nk_dGScimz8?si=J5_lOccDHWuRSlDj
[에피소드 28] https://youtu.be/HraOg7W3VAM?si=Ai4ckL5nUlGtpUyU
[에피소드 29] https://youtu.be/Jz8Sx1XYb04?si=5MttQlvKAV7HFbnA
슬랙 스크린샷
