pC.NET

Welcome to oscc.kr



 C언어 코드 작성시...
2010-06-13 16:08:10
Hit : 5443

작성자 : 피시키드
가끔 질문란을 보면
"C 코드중 어디가 잘못됬는지 가르쳐주세요."
라는 질문을 보곤합니다.  
뿐만아니라 , "이 코드 제대로 짠거야?"
"이 코드에서 특정기능을 추가하고싶은데 어떻게 해야하니?"
라는 질문자주 받곤 하는데요.

물론 이런질문은 '그냥 디버거 돌리세요' 또는 '잘 생각해보면 알텐데'
라는 말을 하고싶지만..
그래도 처음시작하는 분들이란 생각에 되도록이면 답변을 해드릴려고 합니다.

하지만!!
정말 도와드리고 싶어도 알아볼수 있어야 도와드릴것아닙니까.
도저히 알아볼수 없는 코드들. 마구 꼬여있는 코드들을 보면
아무리 도와주고 싶어도 코드해석하는데 반나절이 걸립니다.
그러면 답변하는 시간이 늦어지는게 당연하겠죠?

그래서 지금부터 다른 사람이 잘 알아 볼수있는 코딩스타일을 소개하려 합니다.
(그리고 자신이 나중에 코드를 봤을떄도 잘알아 볼수 있죠. )

1. 변수명은 되도록 명확하게.
변수명을 전부 int a, int b; 이런식으로 해놓으면 도저히 알아볼수 없습니다.
int sum; int Average; char Name[20];
이런식으로 변수명에서 그 변수가 무엇인지를 알아볼수 있게
쓰는것이 훨씬 보기 편합니다.
정 영어가 힘들다면 한글 발음나는 대로 쓰셔도 무방합니다.
포인터 앞에는 p를 정수 앞에는 n을 붙여주고
단어첫글자를 대문자로 쓰는것이 훨씬 보기 좋지만,
그것까지는 바라지 않습니다. 다만 적어도 단어이여만 알아보기 쉽겠죠?
(이런 식의 표기법에 관심있다면 코딩스타일, 헝가리안 표기법 등을 검색)

2. goto 문은 절대로 쓰지 않는다.
goto문은 라벨에 붙여놓은데로 점프해버리는데요.
이게 생각보다 사람 헛갈리게합니다.
짧은 코드 에서도 사람 헛갈리게 하는데 긴코드는 오죽하겠습니까.
왜 헷갈리냐. 코드가 한눈에 보일정도니 안헷갈리겠지라고 생각하신다면 오산.
수학 공부할때 증명은 p.100에 3째줄부터 라는 식이면
얼마나 짜증나고 알아보기 힘듭니까?
코드도 마찬가지, 같은이유로 break;와 contiune;
그리고 기나긴 루프도 알아보기 힘듭니다.

3. 되도록이면 루프문 if 문은 중첩시키지 않는다.
물론 중첩시킬수 밖에 없는 떄에는 중첩해야겠죠.
하지만 너무 많은 중첩은 역시나 사람 헛갈리게 만드는데 한몫합니다.
중첩이 너무 많다 싶으면 함수로 묶어서 빼주는 센스가 필요합니다.

4. 중복되는 행동은 ctrl +c, ctrl + v가 아니라 함수로.
가끔 중복되는 행동을 복사, 붙여넣기 하시는 분들이 있더군요.
그러면 같은 동작을 하는것을 두번 세번 분석해야 할때도 있습니다.
특히 중첩된 if문과 while에서 그렇더군요..
그래서 같은 행동인데 들어가는 변수가 다르다 라던가.
같은행동인데 그 행동을 해야할 대상이 다르다. 라던가.
하여간 같은 행동이면 되도록이면 함수를 쓰는것이 좋습니다.
이걸 대학교 컴공 4학년 까지도 안하시는 분이 있더군요..
의외로 잘모르고 지나가는 부분입니다.

5. 주석은 간결히 그리고 많지 않게.
주석은 괜히 있는게 아닙니다.
물론 코드로 모든것을 애기할수 있다면 좋겠지만
보통은 그러질 못하니깐 주석을 달게됩니다.
주석단다고 성능저하 따위 없습니다.
(컴파일러에서 주석은 취급안합니다)
그러니깐 여러분.. 제발 머리속에 있는 논리적 흐름을 주석으로 달아서
알아보기쉽게 합시다. 물론 시시콜콜 주석을 다는 건 이상하지만.
대충 이부분이 무슨역활을 한다를 짧은 코멘트로 달면됩니다.
고수와 하수의 차이가 바로 이 주석에서 나죠.
고수의 주석은 짧고 간결하면서도 많지 않습니다. 근데 시기적절하게 들어가 있죠.
하수의 주석은 길고 시시콜콜한것까지 다적어 놓습니다. 그런데도 알아먹기 힘들죠.
이런부분은 코드를 많이 짜다보면 느끼게 됩니다.

이런걸 통틀어서 코딩스타일이라고 하는데요.
원래는 "소프트웨어 공학"이라는 과목에서 배우는 거지만 이건 습관에 가까운거라
처음부터 몸에 배여있어야 합니다. 그래서 간략하게 정말 이것만은 하는 것을 몇자 적어봤습니다. 처음에는 이게 정말 힘들고 귀찮지만. 나중에 한 1만줄 10만줄 짜리 코드들 짜다보면 이런것을이 오히려 편해질것 입니다.

* 피시키드님에 의해서 게시물 이동되었습니다 (2024-04-26 18:47)

  피시키드
회원님의 소개글이 없습니다.
 6490
 83


소수점 자리수 제한 넘어서 나눗셈하기

Copyright (C) 1997-2025 All Rights Reserved.

Powered by
DNS server, DNS service 우분투 리눅스 웹서비스 AbuseIPDB Contributor Badge