하드코딩이란? - 개판 코딩의 한 유형 -
-작성 언어: python
-사전 지식: 파이썬 코드를 읽을 줄 안다.
하드코딩이란?
"하드코딩이란, 프로그램 안에 값(데이터)을 직접 써 넣는 방식을 말한다. 쉽게 말해, 변경하기 어려운 방식으로 값을 고정하는 것이다."
비전공: 이게 뭔 개소리야?
학습자: 이게 뭔 개소리야?
갓반인: 씹덕들 지들만 아는 얘기 또 하고 다니네
일단 개판 코딩의 여러 유형 중 하나라고 이해하면 됩니다.
왜 이해해야 하냐고요? 인생의 반면교사를 떠올리면 됩니다.
'나는 절대 저렇게 살지 말아야지.'
코딩의 반면교사를 본다고 생각하면 되겠습니다.
예시로 이해하기
예를 들면 매일 컴퓨터에다 오늘의 요일을 띄우는 프로그램을 만든다 칩시다.
비효율적인 하드코딩 방식
import datetime
today = datetime.datetime.today().weekday() # 0(월) ~ 6(일)
if today == 0:
print("오늘은 월요일입니다.")
if today == 1:
print("오늘은 화요일입니다.")
if today == 2:
print("오늘은 수요일입니다.")
if today == 3:
print("오늘은 목요일입니다.")
if today == 4:
print("오늘은 금요일입니다.")
if today == 5:
print("오늘은 토요일입니다.")
if today == 6:
print("오늘은 일요일입니다.")
print("오늘은 월요일입니다.")
if today == 1:
print("오늘은 화요일입니다.")
if today == 2:
print("오늘은 수요일입니다.")
if today == 3:
print("오늘은 목요일입니다.")
if today == 4:
print("오늘은 금요일입니다.")
if today == 5:
print("오늘은 토요일입니다.")
if today == 6:
print("오늘은 일요일입니다.")
--------------------------------------------------------------------------
이딴 식으로 요일을 다 만드는 게 하드코딩입니다.
그 어떤 강사도 이런 식으로 만들면 된다고는 안 하죠.
지금 요일이니까 7개로 끝났지, 이런 방식으로 코드를 짜면 10줄, 20줄이 되는 게 순식간입니다.
그 어떤 강사도 이런 식으로 만들면 된다고는 안 하죠.
지금 요일이니까 7개로 끝났지, 이런 방식으로 코드를 짜면 10줄, 20줄이 되는 게 순식간입니다.
더 나은 방식 (시스템 날짜 활용)
--------------------------------------------------------------------------
import datetime
# 요일 리스트 (0: 월요일, 6: 일요일)
days = ["월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"]
# 현재 시스템 날짜의 요일 가져오기
today = datetime.datetime.today().weekday() # 0(월) ~ 6(일)
# 오늘 요일 출력
print(f"오늘은 {days[today]}입니다.")
--------------------------------------------------------------------------
이렇게 "오늘은 {무슨}요일입니다." 하고 만드는 게 소프트코딩입니다.
그런데 소프트코딩 들은 적은 거의 없는데...
걍 하드코딩 아닌 거라고 이해하면 되겠습니다.
걍 하드코딩 아닌 거라고 이해하면 되겠습니다.
유지보수의 쉽고 어려움
이런 식으로 print 띄우는 부분을 한 줄로 처리하면 나중에 고칠 때 편해집니다.
예를 들면 '~입니다'를 '~이에요.'로 바꾼다 칩시다.
예를 들면 '~입니다'를 '~이에요.'로 바꾼다 칩시다.
하드코딩 방식은 7줄 다 고쳐야 하겠지만 두번째 예시 같은 방식은 한 줄만 수정하면 됩니다.
일괄 수정이 있으니 괜찮다고요? 코드가 1000줄 되면 그런 생각 싹 사라집니다.
일괄 수정이 있으니 괜찮다고요? 코드가 1000줄 되면 그런 생각 싹 사라집니다.
결론: 하드코딩은 불편하다.
'나는 절대 저렇게 코딩하지 말아야지.'
이렇게 이해했으면 끝입니다.
댓글
댓글 쓰기