본문 바로가기
TIL

10. 14. 09일차 TIL - 코딩컨벤션, 알고리즘-복잡도

by 눈 새 2024. 10. 14.

오늘은 달리기반의 첫 이론수업이 있는 날이었다.
수업 내용은 1주차 강의 내용을 복습하는 것과 함께 코딩 컨벤션에 대해 배웠다.


1. 코딩컨벤션 (Coding Convention) 이란?

코드를 읽는 사람과 작성하는 사람이 모두 쉽게 이해할 수 있도록 하는 일종의 약속이다.

쉽게 말해 누가 봐도 쉽게 알아볼 수 있도록 이름을 짓는 방법이다.

1) 코딩 컨벤션 종류

  • camelCase : 주로 변수와 함수 선언에 사용된다.
  • kekbab-case : 페이지, pathname, 폴더명, css className에 사용된다.
  • snake_case : 파이썬에서 많이 쓰인다. js에서는 잘 사용하지 않으나,
    • 대문자 표현은 상수 표현할 때 많이 사용된다.
    • ex) const MILLISECONDS_PER_DAY = 60 * 60 * 24 * 1000; // 86400000;
  • PascalCase : 컴포넌트, 페이지 파일 명에 많이 사용한다.

 

2) 코딩 컨벤션의 중요성

  • 팀원 모두 같은 코드를 작성 할 수 있게 된다.
    • 팀의 코드를 한 사람이 짠 코드처럼 느껴지게하는 데에 목적이 있다.
  • 사람에 의존적이지 않고 규칙에 의존적인 코드를 짜게 되고 모르는 부분의 코드도 빠르게 파악할 수 있게 한다.
  • 코드 컨벤션만 보고 어떤 의도의 코드인지 파악하기 쉽게 된다.

위와 같은 장점으로 인해 협업하기 전에 여러 컨벤션(Convention)들을 정하고 시작한다.

 

3) 기본적인 변수 / 함수 선언법

  • 변수는 명사로 표기한다.
  • 꼭 명확한 의미를 담아서 작성한다.
  • 길더라도 사전에 약속되지 않은 줄임말은 사용하지 않는다.
  • boolean은 is, has, thsis, -ing를 붙인다.
  • 함수는 동사로 표기한다.
  • 복수에는 복수 표현을 사용한다. ( -s , -List )

2. 알고리즘 - 복잡도

1) 복잡도 ( Complexity )

  • 알고리즘의 성능을 나타내는 지표이다.
  • 시간복잡도와 공간복잡도가 있다.

2) 시간 복잡도 ( Time Complexity )

입력 값과 연산 수행 시간의 상관관계를 나타내는 척도

= 코드의 시간적 효율성과 관련된 복잡도

  • 점근적 표기법 : 입력값에 따른 수행 시간의 증가율에 집중하기 위해서 중요하지 않은 요소를 제거하는 표기방법
  • 오메가 표기법 : 최상의 수행 시간을 표기하는 방법 Ω(N)
  • 세타 표기법 : 평균의 수행 시간을 표기하는 방법 Θ(N)
  • 빅오 표기법 : 최악의 수행 시간을 표기하는 방법 O(N)
  • 최악의 경우가 계산하기 편하면서도, 평균의 수행 시간을 예측하기 쉽기 때문에 주로 사용된다.

3) 공간 복잡도 ( Space Complexity )

프로그램의 실행에 얼마나 많은 공간(메모리)가 필요한지 나타내는 척도

= 코드의 공간적 효율성과 관련된 복잡도


★ 9일차 소감

3주차의 강의를 계속 반복해서 듣고 있다. 아직 이해가 잘 되지 않아 아직까지는 내용을 정리하기 어렵다.

하지만 1~2주차의 내용은 완벽하게 이해하고 있어 정규 수업을 이해하는 데 문제가 생기진 않았다.

하지만 3주차 강의를 조금 더 집중해서 공부한 뒤 TIL에 올리면서 내용 정리해야할 것 같다.

그동안 알고리즘 문제 풀이를 따로 업로드 하려고 했으나 제대로 실천하지 못했다.

앞으로는 아침에 약 1시간정도 알고리즘 문제 풀이 시간을 갖고 풀이 과정을 업로드 하고자 한다.

코딩 컨벤션의 경우 각 표기방법마다의 쓰임이 다른지 처음 알았다. 알기 쉽게, 보기 좋게만 작성하면 된다고 생각하였는데 해당하는 쓰임이 명사인지, 동사인지까지 구분하여 작성하는 것을 보고 확실히 저렇게 표기를 하면 협업할 때 알아보기가 굉장히 수월하겠다라는 생각을 하였다. 굉장히 효율적인 것 같다. 앞으로 있을 과제나 프로젝트에서 이를 잘 숙지하고 활용해야겠다.