Offcanvas

애플리케이션 / 오픈소스 / 자기계발

개발자가 애용하는 나쁜 프로그래밍 습관 9가지

2015.11.03 Peter Wayner  |  InfoWorld


프로그래밍 습관 3 : 지나치게 많은 코드를 한 줄에 구겨 넣음
상사가 팀에 '고약한' 이메일을 발송한 적이 있다. 이메일에서 요구한 스타일에 관한 엄격한 규칙에 맞춰 코드를 다시 써야 했다. 가장 '극적인' 요구는 한 줄에 Action, Step, Clause를 모두 삽입해야 한다는 요구였다. 기능 호출과 도트 신택스를 묶을 수 없다. 분기 명령문의 Boolean에 2개 이상의 Clause를 집어 넣을 수 없다. 변수는 별도의 줄에서 규정해야 한다. 복잡한 연산에는 괄호를 사용할 수 없다. Fragment는 별도의 줄을 이용해야 했다.

상사가 이를 요구한 이유가 있었다. 더 쉽게 디버깅을 처리할 수 있기 때문이다. 디버거는 코드의 Action을 단계별로 확인할 수 있다. 꼭 한 줄일 필요는 없다. 더 쉽게 확인해 나갈 수 있었다.

그러나 코드가 길어졌다. 내 키보드의 Return 키는 계속해서 줄을 삽입하는 바람에 닳아 헤어졌다. 상사는 자신의 팀이 생성해 낸 많은 코드 줄에 자부심을 가졌다.

때론 한 줄에서 수 많은 변수를 지정하는 것이 훨씬 간편하다. 때론 Boolean Clause를 함께 집어 넣는 것이 훨씬 간편하다. 스크롤 없이 더 논리적으로 파악할 수 있다. 또 훨씬 쉬우면서 빠르게 이해할 수 있다. 또 간결하다.

프로그래밍 습관 4 : Type을 지정하지 않음
Type 언어를 좋아하는 사람들에게는 이유가 있다. 각 변수의 데이터 Type을 명확히 지정하면 더 좋은 코드, 버그가 없는 코드를 개발할 수 있다. Type을 지정하면 컴파일러가 코드 실행 전에 오류를 찾는데 도움이 된다. 다소 귀찮을지 모르지만 효과가 있다. 버그를 없애는 프로그래밍 방식이다.

그러나 시대가 바뀌었다. 최신 컴파일러 가운데 상당수는 코드에서 Type을 추론할 수 있다. 변수가 스트링 또는 int인지 코드 곳곳을 조사할 수 있다. 추론한 Type에 문제가 있을 경우, 이를 오류로 표시할 수 있다. 다시 말해, 변수의 Type을 지정할 필요가 없어졌다.

아주 간단한 Type 지정 가운데 일부는 컴파일러에 맡겨 시간을 절약할 수 있다. 코드가 훨씬 정갈해진다. 그리고 읽는 사람은 루프의 변수명 i가 integer를 의미한다는 사실을 추론할 수 있다.

프로그래밍 습관 5 : Yo-yo 코드
프로그래머들은 'Yo-yo' 코드라고 부른다. 먼저 값을 스트링으로 저장한다. 그리고 Integer로 파싱한다. 이어 스트링으로 다시 변환한다. 정말 비효율적이다. 쓸모 없는 작업 때문에 CPU 속도가 저하된다. 코드를 신속하게 쓸 수 있는 프로그래머라면 이런 변환을 최소화할 수 있는 아키텍처를 계획한다. 이런 계획 덕분에 코드가 더 빨리 실행된다.

그러나 믿거나 말거나, 때론 Yo-yo 코드가 합리적인 상황도 있다. 때론 사유 소프트웨어에 수 많은 '지능'이 담겨있는 라이브러리가 필요하다. 때론 보스가 소프트웨어 라이선스에 일곱 자리 수표를 끊을 수 있다. 라이브러리의 데이터가 스트링이어야 할 경우, 최근 Integer로 변환한 경우까지 포함해 스트링 라이브러리를 구현해야 한다.

물론 변환을 최소화 하기 위해 코드를 다시 쓸 수 있지만, 이를 위한 시간이 필요하다. 때론 코드 속도가 분, 시간, 일 단위로 지연돼도 무방하다. 코드 재작성에 더 많은 시간이 필요하기 때문이다. 때론 이와 같은 '기술적 부채'가 더 경제적인 상황도 있다.

때론 라이브러리가 사유 코드가 아닌, 오래 전 직접 작성한 코드일 수 있다. 때론 라이브러리의 코드 모두를 다시 작성하는 것 보다, 데이터를 1회 이상 변환하는 것이 더 빠를 수 있다. 이런 이유로 Yo-yo 코드를 이용한다.

프로그래밍 습관 6 : 자신만의 데이터 구조 구현
데이터 구조가 완성된 이후에는 데이터 저장용 코드를 개발해서는 안 된다는 기본적인 원칙이 있다. 누군가 우리가 필요로 하는 데이터 구조를 개발하고, 몇 년 동안 코드를 검증, 재검증했다고 가정하자. 이 데이터 구조는 개발 언어에 번들로 제공되고, 아마도 무료일 것이다. 버그 생길 수 있는 것은 개발자가 작성한 코드뿐이다.

때론 데이터 구조 라이브러리가 느릴 수 있다. 때론 우리 코드에는 맞지 않는 기준으로 데이터 구조를 강요한다. 때론 라이브러리 때문에 데이터를 바꿔야 데이터 구조를 이용할 수 있다. 때론 라이브러리에 쓰레드 잠금 같이 우리 코드에는 필요 없는 보호 기능이 들어 있을 수 있다.

이 경우, 자신만의 데이터 구조를 개발해야 한다. 때론 훨씬 빨라진다. 때론 코드가 더욱 깨끗해진다. 데이터 재포캣을 위해 추가 코드를 포함시킬 필요가 없기 때문이다.

CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

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

Copyright © 2024 International Data Group. All rights reserved.