개발자

“몰래 하는 맛” 비밀스럽게 즐기는 10가지 나쁜 프로그래밍 습관

Peter Wayner | InfoWorld 2019.12.09


공백의 배치보다 더 중요한 문제에 대해 생각해야 할 때도 있다. 데이터베이스의 과부하에 대해 걱정하거나 널 포인터로 인해 코드가 멈출 가능성을 걱정한다. 깐깐하고 오만한 표준 위원회가 공백이나 탭의 배치에 관한 몇 페이지에 달하는 규칙을 만들었다 해도, 사실 코드의 거의 모든 요소가 공백보다 더 중요하다.

좋은 점은 정립된 린팅 규칙을 준수하도록 코드의 형식을 자동으로 바꿔주는 여러 유용한 툴이 있다는 것이다. 인간은 공백 따위를 생각하느라 시간을 낭비할 필요가 없다. 그렇게 중요하다면 툴을 실행해서 알아서 정리하도록 하면 된다.

나쁜 프로그래밍 습관 4 : goto 사용

goto 사용 금지의 기원은 많은 구조적 프로그램 툴이 존재하기 이전 시대까지 거슬러 올라간다. 프로그래머는 루프를 만들거나 다른 루틴으로 건너뛰려면 GOTO를 쓰고 그 위에 줄 번호를 입력했다. 몇 년 뒤에는 프로그래머가 줄 번호 대신 문자열 라벨을 쓸 수 있게 되었는데, 당시에는 이게 화제의 신기능이었다.

그 결과를 “스파게티 코드”라고 하는 사람도 있었다. 나중에 그 코드를 읽고 실행 경로를 추적한다는 것은 불가능했다. 무한하게 꼬인 실타래였다. 에츠허르 데이크스트라는 “Goto 문의 해로움”이라는 논문에서 이 명령의 사용 금지를 주장하기도 했다.

그러나 문제는 절대적 분기가 아니다. 문제는 그 결과로 나타나는 꼬임이다. 잘 사용한 break 또는 return은 그 위치에서 코드가 무엇을 하고 있는지 아주 명확하게 보여주는 경우가 많다. case 문에 goto를 추가하는 방법이 정식으로 구조화된 연속적인 if-then-else 블록보다 더 이해하기 쉬운 경우도 있다.

반대 사례도 있다. 대표적인 경우가 애플 SSL 스택의 “goto fail” 보안 결함이다. 그러나 case 문과 루프의 골치 아픈 문제를 주의해서 피하기만 한다면 읽는 사람이 흐름을 쉽게 이해할 수 있는 적절한 점프를 삽입할 수 있다. goto를 싫어하는 사람을 제외한 모두에게 더 깔끔하고 보기도 좋은 break 또는 return을 집어넣을 수 있다.
 

나쁜 프로그래밍 습관 5 : 형식 선언 안 하기

형식 언어 애호가의 말에는 일리가 있다. 각 변수의 데이터 형식을 명확하게 선언하면 상대적으로 버그가 적고 더 좋은 코드를 쓸 수 있다. 잠깐 시간을 내서 형식을 선언하면 코드가 실행되기 전에 컴파일러가 오류를 잡아 알려준다. 귀찮을 수 있지만 도움은 된다. 버그를 막아주는 2중 안전 장치 방식의 프로그래밍이다.

시대가 변했다. 최근 컴파일러의 상당수는 코드를 보고 형식을 추론할 정도로 똑똑하다. 컴파일러는 변수가 string인지 int인지 또는 다른 어떤 형식인지 확신할 수 있을 때까지 코드의 앞뒤를 오가며 살핀다. 추론된 형식이 일치되지 않으면 오류 플래그를 표시한다. 더 이상 일일이 변수의 형식을 지정할 필요가 없다.

즉, 이제 가장 단순한 선언을 생략해서 얼마간의 비트를 보다 쉽게 절약할 수 있다. 코드가 조금 더 깔끔해지고, 코드를 보는 사람은 일반적으로 for 루프의 변수 i가 정수임을 충분히 짐작할 수 있다.
 

나쁜 프로그래밍 습관 6 : 요요 코드

프로그래머들은 “요요 코드”라는 말을 자주 한다. 먼저 문자열로 값이 저장된다. 그 다음 정수로 파싱된다. 그 다음 다시 문자열로 변환된다. 매우 비효율적이다. 이런 무의미한 부하로 인해 CPU가 땀을 흘리는 것이 느껴질 정도다. 빠른 코드를 쓰는 똑똑한 프로그래머는 변환을 최소화하도록 아키텍처를 설계한다. 이들의 코드가 더 빠르게 실행되는 이유는 사전 계획에 있다.

그러나 믿기 어렵겠지만 요요 코드가 타당할 때도 있다. 종종 폐쇄 블랙박스 안에서 수많은 작업을 수행하는 아주 좋은 라이브러리를 사용할 때가 있는데, 회사에서 선심을 써서 기꺼이 그 블랙박스 안의 모든 기발한 기능을 활용할 수 있는 라이선스를 구매하는 경우가 있다. 이 라이브러리가 문자열로 된 데이터를 원한다면 최근 데이터를 정수로 변환했다 해도 문자열로 줘야 한다.

Sponsored

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.