# 미연님이 올려주신 코드에요. 여기에 대해 피드백 드려볼게요.
# 정답보다도 가독성 좋은 코딩 스타일에 대해서
A = [1, 2, 3, 4, 5, 6, 73, 8, 10, 54]
odd = 0
even = 0
odds=[]
evens=[]
for i in A:
if i%2 == 0:
evens.append(i)##
elif i%2 == 1:
odds.append(i)
print(odd+even)
일단 보내주신 코드는 치명적인 문제가 있어요. 뭐냐면 문제의 요구조건을 만족시키지 않았다입니다.
분명 문제의 대표적인 요구사항을 정리하면 다음과 같아요:
- 홀수가 짝수보다 앞서게 하라
- 각 정수는 오름차순 정렬하라
이 중에서 두 번째 조건이 만족되지 않았어요. 이건 치명적입니다. 코드를 가독성 있게 짰냐, 안 짰냐보다 중요한 건 일단 문제는 정확하게 해결했느냐
에요. 가독성 등 좋은 코드의 다른 조건은 문제를 해결한 이후에 생각할 문제에요.
따라서 정렬의 조건을 만족한 새로운 코드를 만드셔야 합니다.
이제는 코드 자체에 대한 피드백을 드릴게요.
- 상수와 변수에 대한 구분
- 코드에서
상수
(constant)와변수
(variable)을 구분하는 것은 중요해요. 변수
는 의미 그대로 프로그램 실행 중에 계속적으로 값이 변할 수 있는 것을 의미해요. 가령 위 코드에서even
은 계속적으로 변하죠.상수
는 프로그램 실행 동안 값이 변하지 않을 것을 의미해요.- 이 둘을 구분하는 건 의미가 있어요. 파이썬에서는 변수는 소문자, 상수는 대문자로 처리하는데 정수 배열
A
는 변수로 취급해주셔도 좋겠어요
- 코드에서
- 변수명에 대한 이해
- 좋은 코드에서 중요한 기준 중 하나는 변수명을 어떻게 지을까에 대한 문제에요. 변수명은
가독성
에 매우 중대한 요소기 때문이에요. 기억해주세요. 결국 우리는 협업을 할 것이고, 따라서 내가 짠 코드는 동료, 제 3자가 읽을 것이라고 생각해주세요. 그들을 내 코드로 설득할 수 있어야 해요. - 변수명은 적절한 이름을 선택하는 것과 함께
길이
도 중요해요. 변수명의 길이에 따라 편의성과 가독성은 trade-off 관계에 있는데, 변수명이 길어질수록 일반적으로 가독성이 좋아져요. 반대로, 변수명이 짧아지면 가독성은 떨어지지만 코드 작성은 매우 쉬워져요. A
를 볼게요.A
는 길이가 1인데 그에 따라 작성하고 사용하기 매우 쉬워요. 다만 길이가 너무 짧아 제 3자는 저게 뭔지 도무지 알 수 없어요. 저건 배열(array)인가요? 제가 학교에서 받은 최고 성적인가요? 아니면 에펠탑에 대한 추상화 기호인가요?- 결론은 저 변수는 길이를 조금만 늘려주세요. 한
arr
정도만 해도 가독성이 훨씬 좋아집니다. 프로그래밍을 조금만 한 사람들은 저게 배열(array)라는 걸 단박에 알아차릴 수 있어요. - 언제나 변수명과 상수명을 신경 써주세요.
- 좋은 코드에서 중요한 기준 중 하나는 변수명을 어떻게 지을까에 대한 문제에요. 변수명은
- 띄어쓰기
+
,%
,=
와 같은 연산자 사이는 띄어주세요. 그게 가독성도 좋고, 좋은 코딩 컨벤션(convention)이에요. 일단 저렇게 붙여놓으면 답답한 느낌이 듭니다.나랏말삼이즁국과달라문자와서로사맣디아니할새이런절차로
vs나랏말삼이 즁국과 달라 문자와 서로 사맣디 아니할새 이런 절차로
제가 UX를 공부하는 사람한테 UX가 뭐냐고 물었더니 그 사람은 'UX는 사용자가 생각하게 하지 않는 것'이라고 말했어요. 그 사람 말이 맞다고 가정해볼게요. 언제나 우리가 생산하는 코드의 UX를 고려해주세요. 유저(동료 등 누가 될지는 몰라요)를 불편하게 하는 것은 없는지, 그들에게 지나친 사고를 요구하지는 않는지. 우리가 생산하는 코드는 결국 제품이고 상품이라는 것을 기억하고, 공부하시는 초반부터 좋은 코드
에 대해 고민하시고 짜면 매우 건강한 코드를 작성하실 수 있을거에요.
스터디에서 고려해주세요!!!!