코드리뷰
"""
1. csv 파일 저장하기
2. csv 파일 읽어오기
3. 현재 내용 콘솔 출력
4. 연락처 설계
회원정보:
이름/휴대폰번호/집주소/등록일/
"""
- 파이썬 함수이름은 소문자! "snake_case"로!
- CSV 파일의 포맷: 보통은 ','로 구분 짓는 형태
- with open
- contest manager
- hard coding
- 파일 입출력에서 제일 중요한 것은 encoding!
- 함수는 범용성이 중요
- 함수와 함수 간은 서로 don't care하도록 작성해야 함
1. Contests Manager
- 대표적으로 파일을 열때 씀
- 파일을 열면 항상 마지막에 close를 해야 함
- 요즘 os들은 프로세스가 종료되면 왠만하면 리소스를 반환하도록 함
- 부득이하게 리소스를 반환하지 못하는 경우가 간혹 발생하는데, 이때 with를 씀!
- "with"를 contensts manager protocol이라고 함
- with open
with open(CSV_PATH, 'w', newline='') as f:
pass
# open에 의한 리턴값을 as 이하인 "f"가 같는다라는 의미!
# 즉, "f"는 open 이하!
# "f"의 유효범위는 마치 로컬변수처럼! with가 끝날때 까지만!
# with 이하의 실행문이 다 실행되면 자동으로 "close"를 호출함
- with open 문 진입(enter)할 때 contests manager 호출
- with open 문이 끝날(exit) 때 미리 지정된 특정한 작업을 실행 (파일의 경우는 'close')
- contests manager 왜 등장?!
- 함수는 함수의 이름에 따른 최소한의 기능만 처리할 것!
- 파일에 대한 예외처리는 데코레이터를 통해서!
- 파일저장 함수는 파일 저장만! (예외처리는 x)
- 파일읽기 함순은 파일 읽기만!
- 데이터의 포맷체크는 is_validate() 라는 함수를 별도로 만들어서 체크!
2. NO! Hard Coding!
- 특정한 값을 코드 안에 쓴는 것을 지양해야함!
- 인자값으로 받을 것!
3. 함수와 Unit
- 함수를 'unit'이라고 하기도 함
- 함수 하나에는 하나의 기능만!
- TDD에서 unit은 테스트 단위
- 함수는 15줄을 넘어가면 안됨!
- 함수는 '함수이름'에서 의미하는 최소한의 기능만을 구현해야함!
4. 변수명/함수명 Naming Rule
5. 코딩작성 Don't 3대장:
- Hard Coding X
- 글로벌 변수 사용 X
- 글로벌 함수는 되도록 지양
- 만약에 써야한다면 코드의 맨 첫줄에 위치
- 글로벌 변수를 쓰면 안되는 이유들:
- 글로벌 변수는 프로그램 시작부터 프로그램이 종료될 때까지 해제가 안됨! 계속 메모리에 상주!
- OOP의 개념에서 글로벌 변수는 파편화되어 있음 (파편화<->응집)
- 재귀함수 사용 X
오늘의 학습
1.파이썬은 main 함수가 별도로 없음
- c언어, java 등은 main 함수에 entry 포인트가 있으나,
- 파이썬은 그냥 실행하는 파일 자체에 entry 포인트가 있음
- 즉, 파이썬은 entry 포인트에 대한 정의가 별도로 없음
2. '코드를 잘짜는 가'를 판단하는 기준
- 그 기준에는 여러가지가 있지만
- 코드를 얼마나 testable하게 짜는 가가 중요!
- Unit Test는 하나의 function에서 하나의 기능만 테스트를 함!
- function 안에 하나를 초과하는 기능이 있으면 테스트하기 어려움
3. 리스트
4. for문
5. enumerate
- 파이썬 3.0부터 enumerate 사용을 권고
- '_'는 해당 변수를 안쓰겠다는 의미
6. 파이썬 swap
7. Packing/Un-packing
numbers = [i for i in range(10)]
# print(numbers)
# print(*numbers)
# print(numbers[0], )
path = [i for i in range(10)]
start, *b, end = path
print(start, *b, end)
느낀 점