코딩을 처음 배울 때는 우선 올바르게 돌아가게 하는 것이 목표이며 또한 목표여야 한다. 코드가 실제로 동작하는가?라는 단순한 기준으로 코드를 평가한다.
하지만 경험이 쌓이면서 소프트웨어 공학자는 코드 품질 측면에서 또 다른 계층들과 미묘한 차이를 익혀 나가기 시작한다. 같은 일을 해내더라도 두 코드 중 한 코드가 더 나을 수 있음을 배운다.
코드 품질은 다양한 척도로 평가할 수 있다. 한 가지 중요한 척도가 코드 유지 보수성이다. 코드 유지 보수성은 가독성, 조직, 코드 모듈성 같은 측면을 포함한다.
하지만 고품질 코드에는 또 다른 측면이 있는데 바로 코드 효율성이다. 예를 들어 같은 목표를 달성해도 두 코드 중 하나가 더 빠르게 실행될 수 있다.
2부터 100 사이의 짝수를 출력하는 다음 두 함수를 살펴보자.
def print_numbers_version_one():
number = 2
while number <= 100:
# number가 짝수면 출력한다.
if number % 2 == 0:
print(number)
number += 1
def print_numbers_version_two():
number = 2
while number <= 100:
print(number)
# 정의에 따라 다음 짝수로 2씩 증가시킨다.
number += 2
어느 함수가 더 빨리 실행되겠는가?
두 번째 버전이라고 답했다면 정답이다. 첫 번째 버전은 루프를 100번 돌고 끝나지만 두 번째 루프는 50번만 돈다. 따라서 첫 번째 버전이 두 번째 버전보다 두 배 더 많은 단계를 거친다.
이 책은 효율적인 코드 작성법을 다룬다. 더 뛰어난 소프트웨어 개발자로 거듭나려면 더 빠르게 실행되는 코드 작성 능력을 갖추어야 한다.
빠른 코드를 작성하는 첫 번째 단계는 자료 구조가 무엇인지, 다양한 자료 구조가 코드 속도에 어떤 영향을 미치는지 이해하는 것이다. 이제 본격적으로 시작하자.