파견나왔는데..
어떤 차장놈의 작자가 샘플 코드 만들어 놓은 거 보고 있는데..
아놔 열받아서..
while (i<20) {
if (i++==10) { <= 이런식 !!
* i 값을 찍으면 11 임
i == 10 일때 같아져서 if 문 안을 실행하고
i 는 1증가
}
}
** 이런건 시험볼때나 쓰란 말이다. !!
프겔분들은 이런 코딩 하지 마시길..
또..
if ( ( i = 어떤함수) < 0 ) {
}
이건 또 뭐야?
종이 아깝나?
i = 어떤함수
if ( i < 0 ) {
}
얼마나 보기 좋아.
가독성 좀 있게 코딩 좀 해라 이 쉐키야~!!!!!....................................
.. 라고 말하고 싶다.. ㅠ.ㅠ
어떤 차장놈의 작자가 샘플 코드 만들어 놓은 거 보고 있는데..
아놔 열받아서..
while (i<20) {
if (i++==10) { <= 이런식 !!
* i 값을 찍으면 11 임
i == 10 일때 같아져서 if 문 안을 실행하고
i 는 1증가
}
}
** 이런건 시험볼때나 쓰란 말이다. !!
프겔분들은 이런 코딩 하지 마시길..
또..
if ( ( i = 어떤함수) < 0 ) {
}
이건 또 뭐야?
종이 아깝나?
i = 어떤함수
if ( i < 0 ) {
}
얼마나 보기 좋아.
가독성 좀 있게 코딩 좀 해라 이 쉐키야~!!!!!....................................
.. 라고 말하고 싶다.. ㅠ.ㅠ
코드를 종이에다 쓰면 컴퓨터가 인식하는 프로그램이 나왔나연?
이게 뭐 어쨌다고?
2번째는 많이 쓰인다. 그리고 그 논리라면 while(*dst++ = *src++){}; 이것도 병신 코드네
저번에 함수포인터도 그렇고 횽 정말 지금까지 코딩해온게 기적같아보여
많이 쓰는구나.. -_-; 하지만 난 안써야지.. 이상 ~!!
변수 이름 a b c 로 포인터 미친듯이 써가지고 짜서 보내주세요
ㅁㄴㅁa//ㄴㄴ 그건 진짜 뜻이 그런거잖슴. 위 코드는 그냥 증가시키며 비교하는데 마지막에 1증가시키고 나가서 나중에 오류잡기 힘들게 됨.
ALK // C만 하는게 아니고.. VB, JAVA, JSP, ASP, DataStage, 올랩, DB 등등에 사람 관리까지 직접해서 그래
코딩 표준 쌩까면서 코딩하는게 야무진게 아냐
우걱지사 // 비슷한 생각임.. 가독성 있고 쉬운 코드.. 난 개인적으로 사람 뽑을때 복잡하게 코딩하는 사람 보면.. 집에 가서 학원 강사나 하라고 하고 돌려보냄
아, 그 의미였군 -ㅅ-
if (i++==10) 이거 별 문제 없는데... 옛날에 펌웨어 짤때 4KB 가까이 되는 코드 이런식으로 최적화 해서 2KB 짜리 롬에 짜스트 하게 넣어줬는데.
개인적인 생각이지만........... 나중에 유지보수 할려면.. 쉬운 코드로 해주길 바람..... 저거 착각했다가.. 오전에.. 시스템 하나 날릴뻔함
9500 // 종이.. 이야기 한게.. 그 뜻임. ^^ 문제는.. 이건.. 코딩 길다고.. 문제될 거 하나 없는 환경이라서.. ㅠ.ㅠ
9500 // 최적화와 관계없음-_- 디컴파일 해보기 바람.
최적화하고 관계 없어.
거무달 // ...흠좀무
PC 야 자원이 널렸으니깐 상관없는데 4 bit 나 8 bit 짜리 클럭, 롬 후달리는 MCU 쓰면 저런코드가 종종 약이 되지... 단, 좀 복잡하다 싶으면 주석정도는 붙여주는 센스 필요!
9500 // 연산 자체가 줄어든게 아니라 크기는 큰차이 없을텐데요
근데 첫번째껀 for문도 비슷한 현상 생기지 않나? 그러고보니 저거 왜 for문 안쓴거지 -_)
저렇게 줄여쓴다고 머신 코드 자체가 줄지는 않아. 다른 데에서 이득을 본 거겠지
어차피 요즘 컴터들이 날라댕겨서 최적화보단 readability에 더 신경써야 된다고 생각함
9500 // 최적화되면 똑같은 어셈 코드 나올텐데
컴파일러가 if(i++==10) 하고 i++; if( i == 10 ) 을 어떻게 컴파일해서 어셈블리어로 만들어 주냐에 따라 다른거지 스펙이랑 상관이 없지 않나?
2번은 뭐 어때서 ..?
우걱지사//PC 야 명령어가 많으니 상관없지만, 8 bit RISC MCU 는 명령어가 40 여개정도 밖에 안되서 절약되는 경우도 있음.
그럴리가. 순서 차이인데
9500 // 결국 어쩔수 없는경우에나 쓰는건데 샘플코드나 평소 쓰는 코드까지 저렇게 해놓는건 문제죠 ㅡ.ㅡ
9500 // 마지막에 1연산 하게 되므로 코드 길이도 커지고 실행시간도 1사이클 늘어나는건 어쩔검미? 나도 해봤는데.
레지스터에 다시 Load 하는 경우가 생겨서 1 ~ 2 바이트 더 먹을 때도 있음. 물론 이건 컴파일러 차이도 있고, 옵티마이징 옵션 설정해도 바뀌기 때문에.. 변수가 좀 많은게 사실...
---- 자자.. 논란은 그만.. 제가 죄송함.. 이럴려고 쓴 글이 아닌데.. ㅠ.ㅠ ---
x86에서도 int i = 1; 이라고 했을때 어셈수준에서는 int i; i = 1; 연산 2회가 실행됨.
샘플 코드에 저래놓은건 좀 그렇다고 생각하는데, 차장이라는 사람이 나이좀 있고 펌웨어 짜던 사람이면 저런코드가 샘플로 등장할 수도 있다는거... 코딩 습관이 그렇게 들어서 그런거...
우걱지사// 내 의도는 저 코드가 용량이 절약되거나 속도가 절약된다는건 아니였고, 아닌 저런 형태로 한 줄에 열심히 때려넣은 가독성 낮은 코드를 말하는 것이였음.
---- 다들 한 고집들 하시는군. ㅠ.ㅠ ----
임베 한다고 저딴코드 쓰는것도 아니고..
예를 들자면 a = b = c = d = 0; 이런 코드라든지, if (++i == 10) 이런 코드를 말하는 것임.
가독성을 높혀야 컴파일러도 최적화를 잘해주지 말이빈다.
이득을 볼수 있겠는가 없겠는가를 판단하고 짜야되지 말이빈다. 라인수 줄이면 바이너리가 더 커지는 수가 생기지 말이빈다.
유리한 횽 말씀이 맞음. 컴파일러도 성능 차이가 있어서 컴파일러도 정확히 파악하고, 디어셈 해서 코드 보면서 해야 됨. 그리고 컴파일러가 후지면 가독성 좋게 해도 메롱한 코드 뽑아내기도 함.
IAR SAM8 컴파일러 옵티마이징 걸면 병맛.. 개인적으로 최악의 컴파일러로 치고 있음.
최적화 옵션 바꿨다고 돌던 프로그램이 안돈다
최초셋팅 건들이면 나중에 이뭥미 하게 됨