고치고 싶은 코딩 습관
글쓴이: geekforum / 작성시간: 토, 2002/05/25 - 1:38오후
개발자 여러분들....혹시 코딩하실 때 이렇게는 하지 말아야지...하는 경우 있지 않습니까? 코드가 지저분해지거나 뭔가 깔끔해 보이지 않는 것은 대체로 코드 작성자가 실력이 없어서이겠지만 잘못된 코딩 습관과 몸에 박힌 관습이 원인이 되는 경우도 많다고 생각합니다. 다른사람이 짠 코드도 마찬가지고요. 척 봐서 마음에 드는 코드도 있지만 대부분은 아마 마음에 들지 않는 코드들이 더 많을 것으로 생각합니다. 왜 저렇게 짰을까, 저렇게 안하면 참 좋으련만.... 하는 생각 한두번쯤은 다 해보셨을 테죠.
개인 취향이겠지만, 자기 코드를 보건 남의 코드를 보건 이렇게는 안했으면 좋겠다 하는 습관이나 방식에 대해서 이야기해 봤으면 좋겠습니다. 서로 비교도 해 보고요.
Forums:
'Code Complete' 란 책을 보세요.프로그래밍 스타일에 관한
'Code Complete' 란 책을 보세요.
프로그래밍 스타일에 관한 탁월한 책입니다.
주로 강조하는 사항은 Performance보다는 가독
성을 높이는 코딩습관을 강조하고 있습니다.
현재 번역판은 안타깝게도 없네요.
흠...번역판 - 프로그래밍 완전 정복제가 그 책을 보면서 떠
흠...
번역판 - 프로그래밍 완전 정복
제가 그 책을 보면서 떠 오른 단어가 있죠.
소스미학
쿠크다스였습니다.
Anonymous wrote...
> 'Code Complete' 란 책을 보세요.
> 프로그래밍 스타일에 관한 탁월한 책입니다.
>
> 주로 강조하는 사항은 Performance보다는 가독
> 성을 높이는 코딩습관을 강조하고 있습니다.
>
> 현재 번역판은 안타깝게도 없네요.
디버깅한다고...콘솔창에 하나씩 찍고 나서 디버깅이 끝나면... 코드정리
디버깅한다고...콘솔창에 하나씩 찍고 나서 디버깅이 끝나면... 코드정리를 해야하는데...대부분 그냥..지나치니..코드가 지저분해지더군요ㅠㅜ 그래서 저도 보기가 싫고 다른이는더 보기가 싫고.
그런것 같습니다.
... 학생이라 그런가요?? 주석 달때 통신체로 단다는... -
... 학생이라 그런가요??
주석 달때 통신체로 단다는... -_-;;
움.. 저는 코딩 습관에 큰문제는 없다고 생각되는데요그냥 제가 생
움.. 저는 코딩 습관에 큰문제는 없다고 생각되는데요
그냥 제가 생각 하기에..ㅡ.ㅡa
문제라면 일단 다 짜고나면 매우 허접하다는걸 느껴요
전 아직 학생인데요 각자 하나씩 아무거나 짜오라고 했었는데 제가
주소록짠다그래서 책에서 찾아보고 그걸 배낄 심산으로-_-;;
고대로 쳤는데 제길..ㅡ.ㅡa 메모리에 관련된에러가 나서
결국은 때려치고.. 처음부터 다시 짰는데요..
제가 보고한책이 "이재규씨가 지은 C로 배우는 알고리즘"
인데 아직초보지만 거기 나온코드는 움.. 일단 수준차이가 느껴저요..
에혀.. 제껀 딱 보면 매우 허접해 보입니다..
잘 보면 구조체나 포인터의기능을 십분 활용도 못하고
있는거같기두 한데..-_-;;
에혀 전 코딩보다 좋은 알고리즘이 금방금방 떠올랐음
좋겠네엽~~!! 슝슝~~
-_-;; 저번주에한
꼭 고치고 싶은 버릇은...머리로 프로그램을 작성하는게 아니라
꼭 고치고 싶은 버릇은...
머리로 프로그램을 작성하는게 아니라
손으로 코딩을 하는 버릇 하나랑....
여러 언어를 왔다 갔다 하면서 코드를 작성하면, 문법이 헛갈려서 컴파일을 자주 하다보니...
컴파일 자주하는게 버릇들어서... 프로그램의 집중도가 떨어지는 버릇 이랑...
프로그램을 하다가 심심해 하는 버릇이네요...
코딩 스타일이나.. 뭐 그런것은... 이제 많이 익숙해 져서, 이제 고치고 싶은 버릇이 아니라,
자연스러운 개성이 된지 오래라서.... 별로...
믈론 co-work을 할때면.. 주로 스타일을 같은 하는 사람 편한쪽으로 맞추어 진행 합니다.
스타일 논쟁은 정말 하기 싫어서요... 좀 귀찮아도... 머리로 프로그램을 작성하면, 스타일 조금 불편한 정도야... 해결 가능 하더군요...
--
늘...
옛날 컴파일이 굉장히 시간이 걸리던 때는 그러지 않았는데 요즘 한 50줄
옛날 컴파일이 굉장히 시간이 걸리던 때는 그러지 않았는데 요즘 한 50줄쯤 짜고 한번씩 컴파일을 하게 됩니다. 빠르게 결과를 보고 싶은 조바심때문이겠지만.... 그러다 보니 처음에 생각해 두었던 프로그램 구조는 어느사이에 뭉그러져 있고 지엽적인 문제에 너무 골몰하여 변수하나 아끼고 CPU사이클 하나 덜 사용하는 문제에 프로그램을 이리저리 뜯어고치고 있는 자신을 발견하게 됩니다. 이게 다 embeded에서 망친 코딩스타일인 것 같군요. 지금은 안 그래도 되고 그러지 말아야 할 (즉 개발기간이 중요한) 프로젝트를 하고 있지만 과거의 프로젝트때문에 망쳐진 버릇은 좀처럼 고치기 힘들군요.
저도 그런 경우가 많지만, PC에서는 웬만해서는 고치지 않습니다.고치
저도 그런 경우가 많지만, PC에서는 웬만해서는 고치지 않습니다.
고치고 싶은 마음이 들때만다 이렇게 저 자신에게 말을 하죠.
"컴파일러를 믿어라"
간단한 예로, 제가 ARM프로세서로 작업할 때 회사에서 a = -1는 ARM프로세서에서 비효율적으므로 a = 0; a -= 1; 로 코딩하면 더 효울적인것으로 알았습니다. 근데 나중에 알고보니 원래의 a = -1;가 더 효율적이더군요. 컴파일러가 a = -1;를 a = ~0;로 바꾸어서 컴파일하더군요.
참고로 책에 나올정도의 어설픈 최적화 이론은 long long ago PDP-11적에나
필요했던 이론 같습니다. PDP-11은 메모리가 64K도 안되는 아주
초창기 모델이었죠.
변수이름 정하기......
변수이름 정하기......
저도 그래요..공감이 아주아주 많이 가네요..ㅋㅋㅋ
저도 그래요..공감이 아주아주 많이 가네요..ㅋㅋㅋ
예전에는 주석을 되게 꼼꼼하게 할려고 각 라인마다 주석을 달곤 했는데 이
예전에는 주석을 되게 꼼꼼하게 할려고 각 라인마다 주석을 달곤 했는데 이거 정말 피곤하데요.
요즘들어서는 주석도 간략하게 필요한 부분에만 정리를 해서 넣는게 좋다는 생각이 듭니다.
그래서 요즘에는 javadoc 스타일(/**)로 클래스 주석과 메소드 주석만 달아주고 메소드 내부에서 개별라인에대한 주석은 안 답니다.
잡다하게 달아놓은 주석은 오히려 가독성을 해치기 때문에 요즘스타일은 과다한 주석은 안 좋은 코딩습관으로 흘러가더군요.
제가 하는 프로그래밍이란 게... 수치해석쪽 아니면 하드웨어제어쪽이니(G
제가 하는 프로그래밍이란 게... 수치해석쪽 아니면 하드웨어제어쪽이니(GPIB 라든가,
I/O 보드라든가...) 조금은 다르지만... 바꾸고 싶은거라면 ...
1. 주석 꼭 달기..
- 예전엔 주석 안달았는데, 요즘엔 그나마 나아졌습니다. 요즘엔 아예 한 함수를 통째로 /* */ 로 묶어서 한번 더 달아주고 (ctrl-c, v 의 능력이죠... ) 거기에 설명을 주절주절 씁니다.
2. 변수명 미리 정하기
- 큰 변수명이야 미리 정해두고 쓰는데... 임시변수들(루프를 돌린다든가.. 잠깐 메모리의 일부를 돌린다든가.. )은 모두 i1, i2, i3.. a, b,c. ... 이거 여태 못 고치고 있어요.
3. 모듈화... 시키기
- 한번은 짜놓고 보니 몽땅 main(){} 안에 박혀 있더군요. 근 2천라인 되는 놈이 지금 그것땜에 후배 놈이 고치느라 죽을 고생을 하면서 뒤에서 째려보는군요. 어쩌겄냐... 함수명도 a() 이런 것을.. 니 팔자다...
4. 프로그래밍에서 손 떼기...
- 손 땠습니다. 만세.. 라고 외치고 싶은데.. 아무래도 또 하게 될지도...
>3. 모듈화... 시키기 > 한번은 짜놓고 보니 몽땅 main(){
>3. 모듈화... 시키기
> 한번은 짜놓고 보니 몽땅 main(){} 안에 박혀 있더군요. 근 2천라인 되는
> 놈이 지금 그것땜에 후배 놈이 고치느라 죽을 고생을 하면서 뒤에서 째려
>보는군요. 어쩌겄냐... 함수명도 a() 이런 것을.. 니 팔자다...
함수 하나에 몰아 넣는 것이 함수 100개로 나누어 놓는 것 보다는... 차라리 낫습니다. 제가 보기에는 오히려 잘 하신것 같은데요.
제가 대규모 프로젝트를 하면서 느낀바 중 하나는
<한번만 쓰는 함수라면 그냥 함수안에 바로 집어 넣는게 낫다는 겁니다>
플밍 많이 해 본 것은 아니지만.... 변수 이름을.....예
플밍 많이 해 본 것은 아니지만....
변수 이름을.....
예컨대 "세금내역"이라는 변수를 만들어야 하면
tprmasoduf
"성별"이라는 변수를 만들어야 하면
tjfauf
한영키 전환 안하고 그냥 쳐서 만들기.... -_-+
나중에 보면 정말 헷갈리죠. ^_^;;;;
결국은 고쳤습니다만.....
texnayok으로 -_-;;;;;;
악!!!!!!!!!이게 왜 여기에 붙지? -_-;;;;;;(레
악!!!!!!!!!
이게 왜 여기에 붙지? -_-;;;;;;
(레느님 글 보고 캬캬캬.... 하다가 3분 후 똑같은 꼴이 되어 버렸다....--;;;)
참고로 FreeBSD의 style(7) 매뉴얼 페이지에는 FreeBSD
참고로 FreeBSD의 style(7) 매뉴얼 페이지에는 FreeBSD 소스의
코딩 스타일이 담겨 있습니다.
살펴보시면 좋은 내용이 많이 있습니다.
http://www.freebsd.org/cgi/man.cgi?query=style&apropos=0&sektion=0&manpath=FreeBSD+5.0-current&format=html
개인적으로 C 소스에 // 주석은 아무리 컴파일러가 해
준다고 해도(실제로는 cpp가 하죠!) 쓰기를 권장하기는
않습니다.
그리고 아마 소스 보시면 알겠지만 헝가리안 스타일 같은거
안써도 수백만 라인의 소스가 잘 정리되어 있더군요.
협업으로 프로그래밍하는데 성공된 표본이므로 참고하시면
좋을 것 같습니다. 아 *BSD마다 약간씩 다르므로 주의하시길..
--
익스펙토 페트로눔
많은 도움이 되었습니다. 좋은 곳에 링크 걸어 주셔서 감사합니다.
많은 도움이 되었습니다.
좋은 곳에 링크 걸어 주셔서 감사합니다.
말도 안되는 억지군요. 대학생일때는 저런 들여쓰기를 생각조차 못합니다.
말도 안되는 억지군요. 대학생일때는 저런 들여쓰기를 생각조차 못합니다. 거의 대부분 들여쓰기를 제대로 못하는 경우도 많죠.
들여쓰기의 목적은 코드가 한눈에 들어오게 만드는 것입니다. 기존의 보수적인 스타일을 변형해서라도 눈에 잘 들어온다면 그것이 더욱 뛰어난 들여쓰기가 되는 것입니다. (비록 개인차는 존재합니다만)
저도 회사생활 2년 째에 접어드는데 제 글에 답변 달아주신 분들의 아이디어를 아주 놀랍게 생각합니다. 남에게서 본받을 건 본받아야지요. :)
--
Seo, Hee-Seung.
http://anitype.net/
--
http://renn.sapzilla.org/
님아 요즘 전문대 학생도요.간단한 들여쓰기는 주석달기 전도는 다해
님아 요즘 전문대 학생도요.
간단한 들여쓰기는 주석달기 전도는 다해요.
어느정도는요
끄악... 나도 실수를 할 수가 있구나. ㅜ.ㅜ이 글 저기 밑에 제
끄악... 나도 실수를 할 수가 있구나. ㅜ.ㅜ
이 글 저기 밑에 제 글에 답변글 달린 것 중 무슨 비판하시는 분 글의 답변글입니다. 죄송~
--
Seo, Hee-Seung.
http://anitype.net/
--
http://renn.sapzilla.org/
돌려보다 버그가 있으면 그부분을 주석 처리하고 새로운 코드를 삽입하는데.
돌려보다 버그가 있으면 그부분을 주석 처리하고 새로운 코드를 삽입하는데...
그러다 보면 주석이된 코드들이 쌓여갑니다..
뭐 주석이니까 별 문제는 없지만...
나중에 되돌리고 싶을때....
원하는 코드를 찾느라 애먹는 경우가 허다하죠... ㅠ.ㅠ
초짜라 그런가봅니다...
변수명이랑 함수명 주기도 짜증나던데...
최대한 의미전달을 할 수 있도록 주기는 하는데...
여전히 나중에 보면 이게 뭐하는 변수/함수였더라?...
하게 되더라구여...
그리구 나중에 비슷한 이름이 또 나오면
기존에 사용한 이름을 소스 몽땅 뒤져서 바꾸고....
이런 삽질을 한답니다... -_-;;;
VSS같은 소스 관리 시스템을 이용하시기를 권해드립니다.VSS에 익숙
VSS같은 소스 관리 시스템을 이용하시기를 권해드립니다.
VSS에 익숙해지면 개인 작업도 이것 없이 하고 싶지 않을 정도로 매력적입니다.
컴이 두대라면 더 좋겠죠.
서버에 VSS 설피하고, 개발용 컴에는 VSS에서 다운받아서 고치고, 수정한 부분만 업 로드하고.
Anonymous wrote...> 돌려보다 버그가 있으면 그부분을
Anonymous wrote...
> 돌려보다 버그가 있으면 그부분을 주석 처리하고 새로운 코드를 삽입하는데...
> 그러다 보면 주석이된 코드들이 쌓여갑니다..
> 뭐 주석이니까 별 문제는 없지만...
> 나중에 되돌리고 싶을때....
> 원하는 코드를 찾느라 애먹는 경우가 허다하죠... ㅠ.ㅠ
> 초짜라 그런가봅니다...
이게 버젼 컨트롤 프로그램을 쓰면 고칠 수 장점 중 하나라고 생각합니다.
전에 CVS나 SourceSafe를 안 쓸때는 나중에 혹시나 쓰이게 될까봐 주석으로 처리되는 코드들이 쌓여갔지만 버젼 컨트롤 프로그램을 쓰면서 예전 상태 코드들을 Review할 수 있게 되었기 때문에 지금은 주석으로 처리하지 않고 과감하게 삭제해 버리고 있죠 ^^
다른건 다 그렇다 치고..int a1;이런식으로.. 변수명
다른건 다 그렇다 치고..
int a1;
이런식으로.. 변수명 생각없이 지어버리는건
좀 고치고 싶다는 -_-;;
주석을 달아두긴 하지만..
어느날 갑자기 보면
"이게 무슨 변수드라.." 하게 된다는 -_-;
왜 로그인이 안되징... 에라, 나는 겁쟁이다. -.-저는 어떤
왜 로그인이 안되징... 에라, 나는 겁쟁이다. -.-
저는 어떤 최소 단위안의 temporary변수들(클래스는 제외)은 별의미없는 이름들(a1,a2,...)을 일부러 씁니다. 주로 짜는 프로그램들의 특성상 한 단위(scope)가 300줄을 잘 넘어가지 않기 때문이기도 하지만, 오히려 이런식으로 짜면 프로그램상 중요한 변수들과 확연히 구분이 되어 편할때도 많습니다. 한때 temporary변수들도 각각 의미있는 이름을 주고 그앞이나 뒤에 temporary임을 표시하는 방법을 쓴적도 있지만(예: tTargetStringLength), 작은 scope안에서만 쓰이는 변수를 위해 머리쓰는것도 그렇고, 가독성도 오히려 떨어진다고 생각이 되어서요.
C는 온갖 종류의 pointer&memory문제가 항상 초보의 발목을 잡더군요. 대표적인것이 이쪽 모듈(함수?)내에서 malloc으로 잡은후에 같은 레벨의 모듈(함수)내에서 free해주지 않고, 다른 곳에서 해야하는 경우. 처음엔 머리속으로 이건 여기서 malloc했고 저기서 free하고.. 이걸 기억하지만, 프로그램이 커지면서 점점더 힘들어지고 깜빡 까먹기가 쉽더라구요. C인 경우에는 변수이름에 이러한 scope단위를 명시하는것도 좋은거 같습니다(pointer).
요즈음 C++을 주로 쓰게 되어 이런 문제에서 많이 해방되었지만, 옛날 C적의 포인터가지고 놀던(==헤매던) 재미가 삼삼한듯...
Zed
이론이론... 쓰다가 삑사리 났군요..저는 대소문자를 사용해서 레인지
이론이론... 쓰다가 삑사리 났군요..
저는 대소문자를 사용해서 레인지 문제를 해결합니다.
1. 변수
전부 소문자는 지역변수
예: idx, count
첫글자가 대문자는 모듈내 전역변수 (해당 모듈 안에서만 쓰임)
예: List, MainFrm
첫글자가 g이고 두번째 글자가 대문자는 모듈 외부로 extern되는 전역변수
예: gItemCount, gHistoryList
구조체의 멤버 또는 클래스의 public 프로퍼티는 모듈내 전역변수로 생각해서
첫글자를 대문자로 쓴다.
클래스의 private 프로퍼티앞에는 소문자 f를 붙인다. (볼랜드 스타일 변형,
볼랜드는 대문자 F를 씀)
예: fName, fCount
2. 함수
첫글자가 소문자는 모듈내에서만 사용하는 함수
첫글자가 대문자는 모듈외에서 참조되는 함수
클래스의 private 메소드는 첫글자가 소문자
예: setName
클래스의 public 메소드는 첫글자가 대문자
예: SetName
전...별로 고치고싶은 습관은 아니지만..뭔가를 먹으면서하면 잘짜
전...별로 고치고싶은 습관은 아니지만..
뭔가를 먹으면서하면 잘짜진다는..;;
(기름기있는 과자먹으면서짜면 키보드 지저분해지죠..^ ^*;;)
참, 저두
main()
{
}
이렇게 짜는 스타일..
꼭 첫함수부터 네칸씩 띄우고써야...잘읽는다는..ㅡ_ㅡ;;
아, 그리구 노트북으론 못짭니다..키보드가 여엉..
짜다보면 오타 막나구그래서 집중이 안되죠..
그리구, 온갖잔머리로 소스 줄여놓기..
최대한 줄여놓지않으면 결과는 잘 나와도 뭔가가
찝찝하다는...ㅡ_ㅡ..
저는 코드짤 때 대체로 주변에 냉수(음료수 말고.. 생수)를 잔뜩 놓고
저는 코드짤 때 대체로 주변에 냉수(음료수 말고.. 생수)를 잔뜩 놓고 짜게 되더군요...
몸에 받는 열 냉각용으로-_-
한시간 반에 거의 1리터씩 먹는 듯 합니다....
화장실은 자주 다녀오고.... 화장실 갔다올 때마다 잠시 머리에서 스팀을 덜 받을 수도 있고..
안 돌아가는 부분을 컴퓨터에서 잠깐 멀어져서 생각을 할 수 있고..^^
indenting은 java 스타일과 linux kernel style을 교묘(??)하게 섞어서..-_-
indenting은 여는 중괄호는 new line부터하고, 함수마다 선언부에 주석 달아놓고....
java로 할때도 약간의 헝가리안 비슷하게-_- 쓰게 되더군요...
제가 선언해 놓은 변수이름을 잘 기억을 못하다보니...
instance 변수들은 m_ 를 붙여놓고, static 변수들은 s_ 를 붙여놓고..
(주로 IDE의 자동완성기능을 이용하다보니, m_ 까지만 입력해 놓고 골라서 짜는 경우가 많더군요... 그래서 이런 걸 붙여놓는 게 편하더군요)
어차피 변수들은 private이니 밖에 보이는 interface는 동일하고요...
c에서는 약자들보다는 변수이름이 길더라도 그대로 쓰고... (어차피 자동완성기능 덕택에 빠르게 씀)
고치고 싶은 습관이라면... 너무 IDE의존적인 코딩을 한다는 점?
C에서는 요즘 AcroEdit를 써서 짜는데요... (아니면 vi)
이런 툴들을 쓰면 indenting을 잘 못하겠더군요...
전적으로 찬성합니다..커피, 과자, 하다못해 껌이라도 입에 물고
전적으로 찬성합니다..
커피, 과자, 하다못해 껌이라도 입에 물고 있어야하죠..ㅅ.ㅅ
예전엔 음악을 들으면서 했는데 확실히 효율이 떨어져서 음악을 껐더니..
요즘은 먹는 거라는 새로운 습관이 들어버렸네요..
먹는 거에 단점은 계속 먹다보면 언젠가는 졸리게 되죠..ㅎㅎ
그럼 잠깬다고 퀘이크류의 게임한판하고 나면..
괜히 스트레스만 더 받아가지고 산만해지기만 하죠..
MC^2 라도 구입해야할 듯..
오.. 퀘이크.. 재밌죵저도 맨날 회사에서 꼴찌만 해서 스트레스
오.. 퀘이크.. 재밌죵
저도 맨날 회사에서 꼴찌만 해서 스트레스 더 받는다는...
while (1) { ... if (break_cond
while (1) {
...
if (break_condition) break;
...
}
정말 고치고 싶은 코드 스타일 이지만, 생각이 이런식으로 진행되다보니 힘들군요. 조금만 실수하면 아주 막강하게 시스템에 문제를 발생시키는 코드가 아닐지...
switch (...) {
case aaa:
....
case bbb:
....
break;
...
}
switch-case도 피하는 것이 좋을 듯 합니다. 편하긴 하지만, break 하나의 가출로 엄청난 효과를 창출해 냅니다. 특히 코더 자신은 빠진 break를 거의 찾지 못하죠. ;;;;; (제 경우죠;;)
--
Seo, Hee-Seung.
http://anitype.net/
--
http://renn.sapzilla.org/
음...저는 저 스타일을 싫어하죠.차라리 if를 사용하죠. ㅡ.ㅡ
음...
저는 저 스타일을 싫어하죠.
차라리 if를 사용하죠. ㅡ.ㅡ;
물론, 보기 싫고 읽어지지 않는다고 하지만...
case 문에 간혹 if문이 나오기 때문에 결국은 같은 게 아닐까요?
break를 case 열에 맞추면 좋음.switch (SomeCo
break를 case 열에 맞추면 좋음.
switch (SomeCondition)
{
case 0 :
// dfsgsdfg
// dfdfasdfdf
break;
case 1 :
// dfsgsdfg
// dfdfasdfdf
break;
}
그리고 마약 case를 공유할 일이 있으면
switch (SomeCondition)
{
case 0 : case 1 : case 2 : case 3 :
// dfsgsdfg
// dfdfasdfdf
break;
case 9 :
// dfsgsdfg
// dfdfasdfdf
break;
}
이렇게 한줄에 쓰는게 좋음.
그런데 비구조적으로 Overlap되는 경우는 switch 문으로 분리하거나 if를 사용하는 것이 좋겠다는 생각. 예를들어 아래 경우는
switch (SomeCondition)
{
case 0 : case 1:
// dfsgsdfg
// dfdfasdfdf
case 2 : case 3 :
// ghjsdfg
// hjksdfdf
break;
case 9 :
// dfsgsdfg
// dfdfasdfdf
break;
}
이것은 이렇게 바꾸는게 좋음.
물론 불 필요한 if 문을 하나 더 사용하니 비효울적이다라는 어처구니 없는 생각을 할 사람도 있지만 이 if 문이 전체 성능에 미치는 영향은 극히 미미함.
switch (SomeCondition)
{
case 0 : case 1: case 2 : case 3 :
if (Condition(0 or 1))
{
// dfsgsdfg
// dfdfasdfdf
}
// ghjsdfg
// hjksdfdf
break;
case 9 :
// dfsgsdfg
// dfdfasdfdf
break;
}
헉,,, break를 case 레이블에 맞추다니 왜 들여쓰기를 하는지
헉,,, break를 case 레이블에 맞추다니 왜 들여쓰기를 하는지
기본적인 이해가 안되신 것 같아요. 그리고 레이블을 한줄에 여러
개 쓰는 것도 그렇고 if문을 그런 용도로 쓰시는 걸로 봐서
대학생이시죠? 학교 다닐 땐 다 그렇게 짜요. 그렇게 해선 100줄
넘는 프로그램은 못짜죠.
아래 볼랜드 스타일을 제일 좋아하신다는 글이 있는데요,저도 그렇습니다
아래 볼랜드 스타일을 제일 좋아하신다는 글이 있는데요,
저도 그렇습니다.
볼랜드 스타일도
break를 case 레이블에 맞추는 형태입니다.
확실히 이렇게 하는 편이 혼동을 줄일 수 있는 편리한 방법입니다.
> 대학생이시죠? 학교 다닐 땐 다 그렇게 짜요. 그렇게 해선 100줄
> 대학생이시죠? 학교 다닐 땐 다 그렇게 짜요. 그렇게 해선 100줄
>
> 넘는 프로그램은 못짜죠.
음.. 저도 이부분에 대해서는 이의를 제기합니다.
저도 지금 대학생이며, 1학년때에도 100줄은 기본으로 작성했는걸요? --a (간단한 숙제도 장난질하다보면 수백라인 되던데요)
음..
물론 주변에 줄 맞추기를 못하는 학생들이 많이 보였지만 그것 때문에 프로그램을 길게(?) 작성하지 못하는 것은 아니라고 봅니다만.
- 별것 아니지만 저런식의 표현이 그다지 기분좋게 들리지 않는다는 걸 말씀드릴려는 것입니다.
음... 전 C code를 93년 부터 짜오고 있습니다.뭐... 많이
음... 전 C code를 93년 부터 짜오고 있습니다.
뭐... 많이 긴 프로그램 10만줄 이상 코딩은... 그리 많이 해보지는 않았지만,
비교적 많이 프로그램을 작성했다고 생각 합니다.
저역시
switch (expr){
case const-expr :
stmtlist;
break;
case const-expr :
stmtlist;
break;
.
.
}
이런 식으로 작성 합니다...
아직까지 이 코딩 스타일을 써서 못짜본 프로그램은 없습니다.
믈론 아직 까지 대학생은 아님니다.
다른 사람들의 글에대한 충고나 관심은 좋치만..
"대학생이시죠? 학교 다닐 땐 다 그렇게 짜요. 그렇게 해선 100줄
넘는 프로그램은 못짜죠" 와 같은 제가 보기에는 별 근거 없는 충고는
별로 좋아 보이지 않습니다.
참고로 전... 초,중,고등 학교때도 때도 100줄 넘는 프로그램은 작성 했습니다.
대학생이 그런 방법으로 코딩하면... 100줄 넘는 코딩을 못한다는것은 별로 근거가 없어 보여서....
그럼 이만...
--
늘...
그렇게 하면 안되는 이유는 case와 break는 같은 인덴트 레벨에 있
그렇게 하면 안되는 이유는 case와 break는 같은 인덴트 레벨에 있는 게 아니니까요.
각 케이스 끝에 뉴라인을 붙여주면 금방 확인이 될 것을 같은 레벨이 아닌 break와 case를 열을 맞추어 주려고 하는 것은 상상력의 빈곤입니다. 그냥 뉴라인 하나만 덧붙여 주면 돼요.
음...indentation이 표시가 않되는 군요... " "로
음...
indentation이 표시가 않되는 군요... " "로 했었는데...
암튼...
switch(){
case c:
stmtlist;
break;
}
이런 식을 의미 햇다는...
--
늘...
처음에는 저런 컨벤션을 지켜나가거나 또는 효율적인 컨벤션을스스로 생각
처음에는 저런 컨벤션을 지켜나가거나 또는 효율적인 컨벤션을
스스로 생각하고 적용해내는게 효율이 좋지 않을 수도 있습니다.
그러나 잘 훈련된 컨벤션은 나중엔 효율성을 극도로 향상시킵니다.
그리고 코딩속도에는 전혀 영향을 주지 않습니다. 왜냐면
더이상 머리로 생각하는게 아니라 그냥 무의식중에 사용하는
것이기 때문입니다. 저 자신은 아직 C코드 만줄 정도가 한계이지만
제옆에는 몇만줄이나 심지어 15만줄짜리 경력을 가지신 분들도 있습니다.
어떤 분들도 컨벤션이야말로 프로그래머 최고의 미덕이라고
말씀하십니다.
case와 break의 열을 맞추는 것도 의외로 괜찮은 컨벤션일지도
모른다고 생각합니다. 그러나 개인적으로 썩 보기에 좋지는 않군요.
좀 다닥다닥 붙어있고 읽기 힘듭니다.
잘하는 건지는 모르겠습니다만, break는 내부코드에 그대로 맞추고대
잘하는 건지는 모르겠습니다만, break는 내부코드에 그대로 맞추고
대신, break없는 부분에 /* next */를 붙여서 break가 없음을 명시해줍니다.
C컴파일러가 빠져나갈건지 계속할건지가 명시되지 않으면 컴파일 에러(또는 경고)를 해 주었으면 좋지 않을까 생각합니다. 지금이야 문법이 확정되서 어쩔수 없지만.
switch(var)
{ case A : /* next */
case B : /* next */
case C : ...code...;
break;
case D : ...code...;
break;
}
공동작업 하면서 나름대로 고민도 많이 했었죠. 어떻게 하면 남들이 읽기 쉬운 코드를 만들 수 있을까? 그런데 결국 2만 라인쯤 짜니까 부분부분은 비교적 깨끗한테 ... 어쩔수 없이 전역 상태값을 가지니까 결국 망가지더군요. 결국 변수 처리가 문제더군요.
자원해제나...적절한 알고리즘의 도입....;;귀찮아서 대
자원해제나...
적절한 알고리즘의 도입....;;
귀찮아서 대충 때려넣을 때가 많지만...;;
귀찮아 하는걸 제일 고치고 싶군요 -_-;
그것이야 말로 가장 중요한 문제입니다.첨엔 고민고민하면서 잘 짜려
그것이야 말로 가장 중요한 문제입니다.
첨엔 고민고민하면서 잘 짜려고 하다가
프로그램 사이즈가 늘어나고
점점 두뇌기억용량을 벗어나기 시작할때면...
그냥 때려넣게 됩니다.
하지만 그냥 때려넣는 것도 좋은 거라고 생각합니다.
ㅎㅎㅎㅎㅎ
for 문이나 while 혹은단순 템프러리 변수 써야할 때 무작정
for 문이나 while 혹은
단순 템프러리 변수 써야할 때 무작정
int i;
부터 하고 보는 것 --;
전적으로 동감해요~~~
전적으로 동감해요~~~
변수 이름 짓기 등에서, 저는 GNU Coding Standards를 따
변수 이름 짓기 등에서, 저는 GNU Coding Standards를 따를려고 하는 편입니다. 전적으로 따르는 것은 아니지만, 저 나름대로의 기준이 있는게 아니라면 GNU style에 맞추려고 하지요. 아래의 링크를 참고하세요.
http://www.gnu.org/prep/standards_toc.html
저도 GNU Coding Standards를 읽어봤는데 좋은 말들이 많지
저도 GNU Coding Standards를 읽어봤는데 좋은 말들이 많지만
아주 정형화된 코딩스타일이나 네이밍방법을 제시하는 것은
아니더군요.
개인적으론 좀더 엄격하고 딱딱한 룰을 스스로 정해서 지켜야
한다고 생각합니다.
글구 GNU스타일은 뭣보다도 '소문자'만 쓰는게 좀 눈에
거슬리더군요. 아무래도 영어라는 문자는 대소문자를 적당히
섞어쓰는게 아름다운 것 같습니다. 그렇다고 MS의 헝가리안
표기법은 좀 너무하고 개인적으로 볼랜드 스타일이 제일
마음에 듭니다. 무엇보다도 코드가 아름다워요.
막가파 식으로 하면 되긴 되덥디다 ㅡㅡ;화면은 똑같은데 내부적으로
막가파 식으로 하면 되긴 되덥디다 ㅡㅡ;
화면은 똑같은데 내부적으로 돌아가는게 허접해서 그렇지...
이번부터 설계에 좀 집착하는 편이예요...
9:1로 되게하기 위해 최대한 컴퓨터 앞에 서는걸 자제하려고 하구요...
전 개인적으로 밤에 코딩하는 습관과 술마시고 코딩하는 습관을 고치고 싶습
전 개인적으로 밤에 코딩하는 습관과 술마시고 코딩하는 습관을 고치고 싶습니다. 하긴 밤에 코딩을 주로하다보니 술도 마셔가면서 하는거 같더라구요.. --;; 몸상하고 질 떨어지는 코드가 나오는거 같습니다.
명명법에 대해서 개인 견해를 말해봅니다.전 Hungarian pr
명명법에 대해서 개인 견해를 말해봅니다.
전 Hungarian prefix 배척합니다.
이것은 Type 체크라는 개념이 전혀 없는 C언어에서는 필요할지 몰라도, 철저히 Type 체크를 해주는 C++이나 Object Pascal,Java,C#등에서는 존재 가치가 없습니다.
아직까지도 Original C 스타일로 코딩하는 사람이 있다면 "왜 그러고 사는지" 묻고 싶군요.
줄임말도 선호하지 않습니다.
strcpy같은 것보다는 StringCopy처럼 단어를 그대로 간직한 것을 좋아합니다.
언더라인(_)은 잘안씁니다.
string_copy보다는 StringCopy가 훨씬 좋습니다.
단어의 첫글자를 항상 대문자로 사용하므로써, 단어가 더 잘 기억되지요.
단어가 많이 있는 경우에는 _를 사용하는 것이 더 나아 보입니다.
(1) I_much_prefer_working_to_being_idle.
(2) IMuchPreferWorkingToBeingIdle.
1번이 읽기 편하네요. 그러나 대개 이렇게 긴 변수명을 사용하지는 않지요.
헝가리안 표기법은 단순히 변수의 타입만을 알리는 것이 목적이 아니라, 그
헝가리안 표기법은 단순히 변수의 타입만을 알리는 것이 목적이 아니라, 그 변수가 어떤 '용도'로 쓰이는지를 알려주기 위한 것이 진짜 목적입니다.
여담이지만.. C++이라고 타입 체킹을 사람이 하나요? -_-?코
여담이지만.. C++이라고 타입 체킹을 사람이 하나요? -_-?
코딩 스타일이 존재하는 이유는 기계가 알아보기 편하기
때문이 아니라 사람이 척 봤을 때 쉽게 알아보기 위함이죠.
Hungarian Prefix를 단지 가독성을 위해 사용하는 사람에게도
Hungarian Prefix를 단지 가독성을 위해 사용하는 사람에게도 금지를 권합니다.
단지 소스를 소스 그 자체의 글자로만 파악하고자 한다면 더 할말은 없음.
그러나 요즘 컴파일러들은 Type이 역간이라도 다르면 Warning을 띄워주고 문제가 있을법 한 것이 있으면 Linking도 안시켜줍니다.
기본 변수의 Type에서 사용한다면 사용할 필요성이 전혀 없으며 Object Type이라면 차라리 FullName을 사용할 것을 권합니다.
즉 Window라는 클래스가 있고 선언을 할때는 WindowsMyX1 이런 식으로 클래스명을 접두에 붙이는 겁니다.
아무튼 C++에서는 Hungarian Prefix를 써서는 안됩니다.
그리고 C를 사용할 수 밖에없는 상황이라면 C 사용하면 됩니다.
어떤 운영 체제에서 작업을 하는지 모르지만 왠만하면 C++이 있는걸로 아는데..
지나가다 들린건데 hungarian notation이라고 해야 좋을것
지나가다 들린건데
hungarian notation이라고 해야 좋을것 같습니다.
hungarian notation중에 변수나 함수의 prefix를 정하는 규칙이 포함되어 있는거죠
아시는 내용이겠지만 헝가리안 표기법은 예전 Dos시절에 Charles Simonyi이라는 MS Chief Architect로 일하던 사람이 처음 소개한건데 이사람이 헝가리사람이라서 hungarian notation이라고 붙였답니다.
그후 MS에서 만든 대부분의 소스는 모두 이 표기법을 따르고 있다나 모라나.. 쯔압
그리고 C를 사용할 수 밖에없는 상황이라면 C 사용하면 됩니다. 어떤
그리고 C를 사용할 수 밖에없는 상황이라면 C 사용하면 됩니다.
어떤 운영 체제에서 작업을 하는지 모르지만 왠만하면 C++이 있는걸로 아는데..
>> 크윽...
>> 저같으면 이런말은 함부로 쓰지 않겠읍니다.
>> 물론 개인적인 생각이시겠지만...
가독성이 얼마나 중요한 것인지 모르십니까..가독성이란...변수의 형
가독성이 얼마나 중요한 것인지 모르십니까..
가독성이란...변수의 형 뿐만 아니라..
어느 부류의 변수인가..어느 부류의 상수인가 라는
면에서도 아주 중요한 것입니다.
WM_MOUSE 와
LB_SELECT 이런 건 보기만 해도 알잖습니까?
더욱이 UI와 내부에서 서로 다른 무수한 상수를 쓸 경우..
UI_XXX 와 INTERNAL_XXX등등은 아주 유용합니다.
대개 프로그램소스가 수메가가 넘어갈 경우
이런 표기법을 안쓰고 한다는건 거의 불가능한 것이나 마찬가집니다.
왜냐면 필요한 정의들만 해도 수천개이기때문이죠.
상수는 그렇게 합니다.그러나 모든 변수에도 그렇게 한다는게 문제지요.
상수는 그렇게 합니다.
그러나 모든 변수에도 그렇게 한다는게 문제지요.
아직까지도 Original C 스타일로 코딩하는 사람이 있다면 "왜 그러
아직까지도 Original C 스타일로 코딩하는 사람이 있다면 "왜 그러고 사는지" 묻고 싶군요.
또다시 언어 전쟁을 붙이시려는 거 같은데요..^^;;
이런 말에 변명해야할 만큼 C가 초라하다고는 절대 생각하지 않습니다.
전 아직도 //코멘트 안쓰고 모두 /* */로 코딩하는데요..
//를 사용하지 않고 /* */를 사용한다고 C 스타일이라니 어처구니
//를 사용하지 않고 /* */를 사용한다고 C 스타일이라니 어처구니가 없습니다.
//를 사용하건 안하건 이건 언어적 스타일이 아니라 사용자의 습관 문제입니다.
요즘 나오는 다른 언어들도 둘 모두를 지원합니다.
어떻든 둘러치건 매치건 둘 모두 주석입니다.
둘러치는게 좋으면 둘러치고, 매치거나 엎어치는게 좋으면 이렇게 하는거죠.
해당 구문(Statement) 옆에 간력하게 주석문 붙일때는 매치는(//)것이 좋겠고,
작성자,날자 등등을 기록할때 즉 몇줄에 걸쳐서 주석문 쓸때는 둘러치는(/* */) 것이 좋겠죠.
C 언어 그 자체는 초라할게 없습니다.얼마나 자유 분방합니까!!i
C 언어 그 자체는 초라할게 없습니다.
얼마나 자유 분방합니까!!
int* 로 모든걸 요리할 수 있으니까요!
그러나 그것이 왜 문제가 되었는지는 비단 스크로스트럽에게 물어 보지 않아도 알만한 사람은 다 압니다.
물론 커널이나 디아비스 드라이버 다루는 경우는 예외입니다.
커널 다루시는 분에게는 Original C 스타일이 더 낫습니다.
우리나라에 커널 다루는 사람이 있나요?
우리나라에 커널 다루는 사람이 있나요?
적지 않게 있죠....작게는 저로부터..(제가 쓰는 Intel E
적지 않게 있죠....
작게는 저로부터..(제가 쓰는 Intel EtherExpress 10+ 라는 카드는 커널 소소의 eepro.c 에서 irq 할당부분을 무조건 irq 10 으로 바꾸지 않으면 ... 작동을 하지 않습니다. ISA 라 ... 그렇다고 486 에 간단한 메일 서번데... NIC 를 바꾸기도 그렇구... .. 이런 걸 가지고 커널 다룬다는 건 뭐하지만, 커널 소스 뜯어 고치는 건 맞죠 ?)
임베디드 쪽에 있는 분들은 적지 않게 커널쪽에 손대는 걸로 압니다.
헝가리안 표기법이 유용한 경우는타입체킹보다는..열거체 상수에 특히
헝가리안 표기법이 유용한 경우는
타입체킹보다는..
열거체 상수에 특히 유용합니다.
오리지널 C가 쓰이는 분야는 많습니다.
임베디드시스템분야는 거의 모두 그렇지요..
열거체 상수에 사용하는 것은 굳이 Hungarian Prefix라 부를
열거체 상수에 사용하는 것은 굳이 Hungarian Prefix라 부를 필요는 없고 그냥 Prefix이지요.
enum TokenVariables {varInteger,varWord,varLongInt,varLongWord};
enum TokenReservedWord {rwFor,rwSwich,rwWhile,rwDo,rwReturn};
뭐 이런식으로 사용하는데 이런건 당연히 이렇게 사용하는 겁니다.
이것은 C든 C++이든 Pascal이든 Java든 어떤 언어이건간에 상수들을 동질성을 부여 하기위해 사용되는 명명법입니다.
비슷한 논리로 따지자면 Hungarian Prefix도 모든 변수들에게 동질적인 특성을 명시하는 것으로 볼 수 있겠는데, "모든" 변수에 굳이 그럴 필요가 있겠는가 라는 것입니다.
모든 Int형 변수에 i가 하나씩 붙어 있는 모습을 보면 짜증날 것 같습니다.
아직 모든 Int형 변수에 i를 붙인 코드를 못봐서 어떤 반응이 나올지는 저도 모름.
저도 C 언어를 사용할 수 밖에 없는 상황에서는 울며 겨자먹기로 Hungarian Prefix를 따르고자 합니다. 이질적 Type이 Casting이 되어버림으로 인해 발생하는 심각한 문제들을 감지하고 해결하는 방법중 이것도 한가지 방법이니까요.
그러나 그 외에는 완전 배척합니다.
전 헝가리안 표기법을 꽤 잘 지킵니다. :) 기본형에는 거의 붙이고, 한
전 헝가리안 표기법을 꽤 잘 지킵니다. :) 기본형에는 거의 붙이고, 한때는 직접 만든 구조체에도 약자를 붙인 적도 있었지만 지금은 좀 덜 씁니다. 조금은 귀찮게 느껴지고, 글자 몇자로 수많은 타입을 잘 구분하는 것도 생각보다 힘들더군요.
사실 처음 C를 배울 때부터 C++ 컴파일러를 써서 그런지 C 컴파일러가 타입 체크를 안한다는 말은 오늘 처음 알았습니다만, 최소한 그런 문제는 없는 것은 장점이 될 수 있겠군요. 버그 잡는 것을 무조건 컴파일러에 맡기는 것은 무척 나쁜 것으로 알고 있기도 합니다만. (생각보다 그게 잘 안되기는 하지만요.)
그런데 그게 좋은가는... 글쎄요. 이것도 그냥 '습관'이라고나 할까요. 제대로 프로그래밍을 시작한 것이 패졸드가 쓴 프로그래밍 윈도를 보면서이다 보니 자연스럽게 익힌 것이기는 합니다만. (사실 그 책에서도 100% 지키지는 않습니다만) 지금 와서 헝가리안 표기법을 안 쓰고 짜기는 좀 어색한 느낌이 들지만, 꼭 배워야 할지는 뭐라 하기 어렵군요. 그냥 개인의 선택이라고나 할까요? 반드시 받아들여야만 할 이유도 없고, 반드시 버려야만 할 이유도 없다고 생각합니다.
다만 한가지 좋은게 있기는 한데, 습관이 되다 보면 변환이 안 되는 타입을 엉뚱한 곳에 넣는 것 말고도, 되긴 되는데 손실이 있어서 명시적으로 캐스팅을 해야 할 경우도 아주 자연스럽게 캐스팅을 쓰게 된다는 것입니다. 어디다 써야 할지 한 눈에 딱 보이거든요. 물론 캐스팅을 쓰고 안쓰고는 경고 하나 있고 없고의 차이밖에 없기는 하지만요.
저는 정수에 i 붙이지 않습니다.안보이기 때문이죠. (제 눈에 안보인
저는 정수에 i 붙이지 않습니다.
안보이기 때문이죠. (제 눈에 안보인다는 말입니다.)
n을 붙이죠. 그것도... 일부에만...
자주 쓰이는 변수... 그러고 보니 거의 '카운터'군요.
카운터가 아닌 것만 붙입니다. ㅡ.ㅡ;
전체를 붙이면... 흠...
지금 생각한 것인데... 끔직하군요.
저도 많이 봤습니다. 변수앞에 m_iXXX 이렇게 붙여놓은거 읽느라고
저도 많이 봤습니다.
변수앞에 m_iXXX 이렇게 붙여놓은거 읽느라고 골때렸었죠.
익숙치않아서 그런지 너무 읽기가 힘들더군요.
글구 열거형상수 앞에 타입명의 이니셜을 2글자정도로 줄여서
소문자로 붙이는 스타일은 제가 알기론 볼랜드에서 시작한걸로
압니다만.. 그전에는 열거형상수도 #define 매크로상수처럼
생각해서 대문자로 다 적는게 더 일반적 아니었나요?
익숙치 않아서 그런거예요..^^저도 첨에 그랬는데...제가
익숙치 않아서 그런거예요..^^
저도 첨에 그랬는데...
제가 그렇게 써서 그런지..
읽기가 편하군요..
그리고.. m_ 은..
이런경우에 편리합니다.
void CClass::SetName(const char *szName)
{
strcpy(m_szName,szName);
}
^^;;
> 모든 Int형 변수에 i가 하나씩 붙어 있는 모습을 보면 짜증날 것
> 모든 Int형 변수에 i가 하나씩 붙어 있는 모습을 보면 짜증날 것 같습니다.
> 아직 모든 Int형 변수에 i를 붙인 코드를 못봐서 어떤 반응이 나올지는 저도 모름.
전 봤습니다. 짜증납니다.
남의 코딩 볼때;;if() {}이거 진짜 보기 힘들어요전
남의 코딩 볼때;;
if() {
}
이거 진짜 보기 힘들어요
전 이게 좋음;;
if( )
{
}
제 코딩습관중.
-.-;;
그리고 들여쓰기랑
일관성 없는 주석;;
제멋대로인 변수명, 함수명 ( 헝가리안 명명법 썼다가 UML형태로 썼다가 제 멋대로;; )
;;
음.. 저만 그런가 보군요 :) 전 전자의 경우를 더 좋아하는데
음.. 저만 그런가 보군요 :)
전 전자의 경우를 더 좋아하는데 말입니다. 냐암~
먼저 코멘트 달아놓기는 하셨는데.. indent를 써 보세요 :)
제 경우에 전자를 더 좋아하는 이유는 후자의 경우에는 함수는 저렇게 묶지만 컨디션의 경우에는 전자로 묶는 습관이 너무 오래 들어버려서..라고 밖엔 할 말이.. ^^ 히~
습관이라는게 가장 무섭기도하며.. 편하기도 한듯.
남의 코드를 볼 때 정 불편하시면 indent를 써 보세요.하지만
남의 코드를 볼 때 정 불편하시면 indent를 써 보세요.
하지만 indent의 default가
if (cond) {
}
인 것도 이유가 있겠죠?
개인적으로는 괄호를 같은 줄에 쓰는 것을 조금 더 선호합니다만,
이미 있는 코드에 덧붙일 때에는 원래의 convention을 따릅니다.
뭐 convention이야, 어떻게 정하느냐 보다는(convention이 너무
이상하지만 않다면..) 잘 지키는 것이 더 중요하겠죠.
저두 if() {}이런문장은 보기가 힘들더군요 ㅡ.ㅡa단,
저두
if() {
}
이런문장은 보기가 힘들더군요 ㅡ.ㅡa
단,
if() {
{
}
이거보단 한 라인이 줄어든다는 장점은 있지만....
저는 저 앞엣것을 썼는데... 고치는 중이죠.뒤엣것이 소스가
저는 저 앞엣것을 썼는데...
고치는 중이죠.
뒤엣것이 소스가 길어지니까 보기가 좋더군요.
전 뒤에 나온 방법이 소스를 볼때 한눈에 들어오더군요.첫번째는 소스가
전 뒤에 나온 방법이 소스를 볼때 한눈에 들어오더군요.
첫번째는 소스가 길다보면, 많이 헷깔리네요^^;
저만 그런건지...머리도 좋지 않으면서..한 파일한 객체한
저만 그런건지...
머리도 좋지 않으면서..
한 파일
한 객체
한 함수
한 문장
한 변수
안에서 너무나 많은 걸 하려고 합니다.
프로그램의 기본은 작고 가볍게 만드느 겁니다.
그렇게 해야 관리도 편하고 효율도 높습니다.
항상 프로그램 완성 해 놓고...
다 짜 논 프로그램 조각 조각 내는...
그런 두번 일을 다시 않길 빌며...
음...아직까지 커다란 프로그램 짜본적이 없는허접 프로그래머라서 가능
음...아직까지 커다란 프로그램 짜본적이 없는
허접 프로그래머라서 가능하겠지만...
전 계획을 하면 무조건 위에서 아래로
짜는데여...
상위 함수짜면서 하위 함수 아직 없는데도
있다고 가정하고 짜버리져...ㅡㅡa
얘는 입력이 뭐고 리턴값이 뭐다...이렇게...
그리고는 구현도 안 한 함수로 코딩을...
문제는 미리 정해놓은 값을 가진 가짜 하위
함수라도 만들어서 테스트 하면서 짜면
문제가 없을텐데...
귀찮아서 테스트를 잘 안 하다보니...
나중에 컴팔하면 에러가 와장창 쏟아진다는...
중간 중간 테스트하는 습관은 꼭 필요하다고...^^;
C++로 코딩시에 아무데서나 임시로 변수 선언해서 쓰는 버릇..-_-;
C++로 코딩시에 아무데서나 임시로 변수 선언해서 쓰는 버릇..-_-;
C에서는 그게 컴파일러에서 막아지는데, C++에서는 그게 아니라..
코딩할 때는 편하긴 하지만..나중에 가면 버그 잡는데 애로사항이 꽃피지요..-_-;
잘만 쓰면 오히려 나쁘지 않은거 같습니다.필요할때만 선언해 주면
잘만 쓰면 오히려 나쁘지 않은거 같습니다.
필요할때만 선언해 주면 소스코드 눈으로 볼때 시야가 좁아져서 편하더군요.
옛날에 파스칼할때는 위에 다 선언해놓구 헷갈려서
결론은 신경만 써주면 변수가 선언될 때가 변수가 사용될 때라서 코드를 알아보기 쉬워지겠지요.
(more) effective c++ 에 보면 객체를 사용하기 직전에 만
(more) effective c++ 에 보면 객체를 사용하기 직전에 만들것을
권장하고 있습니다. 예외처리와 관계된 문제인데 한번 읽어보세요.
설득력있는 책이거든요. 그 책 읽으면서 c++는 예술적인(무척이나
함정이 많고 조심해야하는) 언어라는 것을 뼈져리게 느꼈죠.
어떤 일에나 장단점이 있게 마련이지요.
띄워쓰기 잘하기..스페이스키 누르기 싫어서 쭉 붙여서 쓰는 습관.
띄워쓰기 잘하기..
스페이스키 누르기 싫어서 쭉 붙여서 쓰는 습관.
가독성을 높이기 위해서 적당한 띄워쓰기가 필요합니다..^^
GNU/FSF
GNU/GPL
:)
전 설계가 없어요.. 허허.. 전 대략적인 그림이머릿속에서 그려지면
전 설계가 없어요.. 허허.. 전 대략적인 그림이
머릿속에서 그려지면 바로 코딩해요..
코딩 초반에 이 방법은 아니다 생각되면
그때까지 짠거 다 지워 버립니다.. 허허
나중에 다시 코드들을 뜯어 고치면서 깔끔하게
만들어 놓는 수고를 하죠-.-;
굉장한 악습관을 갖고 있죠..^^
저도 무작정짜는 스타일인데요.. 우선 설계부터 해놓고 짜면 쉽게짤수
저도 무작정짜는 스타일인데요.. 우선 설계부터 해놓고 짜면 쉽게
짤수 있다는걸 알면서도 그렇게 안되네요.. 버릇인지라
저도 이거 고치고 싶네요. Anonymous wrote...
자기만의 코딩 스타일을 가지는 것도 중요하다고 생각되네요. 물론, 어떠한
자기만의 코딩 스타일을 가지는 것도 중요하다고 생각되네요. 물론, 어떠한 기본적인..예의(?)정도는 지켜주면서 말이죠 :)
저 같은 경우 고치고 싶은 습관은,
너무 순서없이 막 생각나는대로 우선 짜본후에
그뒤에 다시 편집(?)과정을 거친다는거..
또한 주석이 없다는거...
최적화를 생각치 않는다는거...
너무 남의 소스에 의존하는 경향이 있다는거..
정말 고치고 싶은 습관들이죠 :|
무조건 코딩하는 습관떠오르는 대로 코딩하는 습관이다보니소스가 개판
무조건 코딩하는 습관
떠오르는 대로 코딩하는 습관이다보니
소스가 개판이 됩니다..
동감.되는지 안되는지 코드 테스트한다고 작성한 후에그냥 써먹습
동감.
되는지 안되는지 코드 테스트한다고 작성한 후에
그냥 써먹습니다.
뭐 시간되면 소스 정리한다고 함수로 만들고 이리 빼고 저리빼고
정리하지만 아직 정립이 안된 코딩 스타일~
항상 두번일을 해서 문제입니다~ 쩝;;
수우님 만세~ :) 저도 어느정도 그런 현상을 갖고 있어요
수우님 만세~
:)
저도 어느정도 그런 현상을 갖고 있어요 -.ㅡ
음.. 뭐랄까? 어떠한 문제를 해결하려고 마음 먹으면 그 문제를 분석부터 하고 난뒤에 그것들을 어떠한 방향으로 풀어갈지까지는 결정하지만..
함수들이라던가는.. -.- 수우님처럼 임시로 만들어보고 그대로 써 버린다거나.. --a 에휴.. T_T
흠... 순서도 안 그리면...변수 선언 말고는 아무 것도 못하는 거
흠... 순서도 안 그리면...
변수 선언 말고는 아무 것도 못하는 거...
구구단 짜는 것도 순서도 그려야 한다는... 머릿속에는 완전한 버전이 들어있는데... 자판에 손만 가면 사라진다는...
ㅡ.ㅡa
저두 항상.. 변수명을 멀로 해얄지 고민을 한담니다..ㅋㅋ어찌나 우스
저두 항상.. 변수명을 멀로 해얄지 고민을 한담니다..ㅋㅋ
어찌나 우스운 일인지...ㅡㅡ;;
정말 간단한 플그램을 짜면서두 C책 연습문제에 나오는 것들...^^;; 변수명을 고민하게 되죠.. 먼가 첨 봐도 확.. 이런거.. 첨엔 그냥 a,b...하게 되는데.. 쪼금씩 알아가면서 그게 으레 그렇게 되더라구요.. 주석은.. 죽어도 안달죠... 맨날 혼나면서두 주석다는건 좀처럼 안고쳐 지네요..^^;;
할때마다 새로 하는거.. ㅡ"ㅡa기존의 함수나 클래스 등을 그냥 가져
할때마다 새로 하는거.. ㅡ"ㅡa
기존의 함수나 클래스 등을 그냥 가져다 쓰는 일이 거의 없습니다. 이거 병인데.. 할때마다 더 간단하고 유연한 방법이 없을까~ 하다가 결국 새거 만들어 놓고.. 담에 또..그러고.. 또 그러고.. ㅜ.ㅡ
이거 누가 점 고쳐줘엽~
페이지