3년 전에 만든 코드를 봤습니다.
2011.04.17 17:56
그때 짜 두었던 모듈에서 버그가 발견되어 디버그를 하려고 소스코드를 열어봤습니다.
...
....
.....
이게 제가 짠 소스라니.
믿을 수 없을 정도로 복잡하고 기괴하더군요. 그냥 괴상합니다.
특히 배열에 접근하는 인덱스를 구하는 방법은 거의 엽기더군요.
객체의 어떤 boolean 값의 역수와 입력된 객체의 특정 순서의 포인터 변수가 null인지 판단하는 boolean연산을 두 개의 operand로 하는 and 연산(&&)의 boolean 결과(0 or 1)를 int로 타입캐스팅하여, for구문의 i에서 뺀 수를 인덱스로 접근하더군요. ㅡㅡ
제가 예전에 기묘한 방식으로 코딩하긴 했는데 boolean을 int로 캐스팅하여 arithmeric 연산을 할 정도로 괴상한 방식을 썼었는지는 몰랐습니다.
그 이후 2년정도 프로그래밍 쉬고 요즘 다시 하고 있는데, 오히려 한참 만들 때 보다 더 깔끔하게 작성되더군요.
예전과는 달리 프로그래밍 관련 이론서적을 많이 보고 설계도 하고 실제 코드 작성을 해서 그런지.. 제가 보기엔 깔끔한 코드가 나오는 것 같습니다.
아무튼 이 괴상한 모듈을 디버그할 수 없어서 다시 만들었습니다.
기존의 미친 코드는 430라인이었는데, 새로 짜니 173라인으로 끝나는군요...
코멘트 16
-
클라우드나인
04.17 18:11
으흐흑 ㅠㅠ 외계어랍니다.. -
클라우드나인
04.17 18:11
본문에 쓰인 미친 코드는 대략 이런 형태입니다. (모바일이라 본문 글 수정이 안되네요.)
For(int i = this->numberOfElements; i > 0; i --) {
For(int j = i; j < target->numberOfElements; j ++) {
This->elements[i - ((!this->isExist) && current)].value = target->elements[j].value;
}
}
그런데 이렇게 만들면 회사에서 짤릴까요 안짤릴까요? -
일단 되기만하면 짤리지는않을듯한데요...
C언어 배워야지하고...아직도 안배우고있어요....ㅠㅠㅠ
방학때 과외라도 찾아야겠어요 ㅠ
-
클라우드나인
04.17 22:18
학원을 다니신다면 비트컴퓨터가 잘 가르친다고 하더군요~
저도 취미삼아 가르치고 있으니, 이번 방학때 같이 공부하시는건 어떠세요?
(당연히 무료예요. 그냥 소모임 형식입니다.)
-
꼬소
04.18 00:13
이렇게 자면 팀장에게 욕 먹습니다.
코드 가독성은 자기 자신에게도 중요하지만, 후임 담당자에게 중요하기 때문에 이해하기 어렵고 복잡한 코드는 가능한한 피하는게 좋습니다.
어쩔 수 없이 복잡한 방식으로 구현하여야 한다면, 리팩토링 하는것이 맞습니다.
-
클라우드나인
04.18 01:10
이렇게 만들면.. 욕 바가지로 얻어먹고 짤리거나.. 딴 부서 가라고 할 것 같습니다.... ㅠㅠ
저땐 어찌 저런 생각을 한건지 저도 참 신기해요..;;;;
-
hakdh
04.17 18:25
오히려 회사에서 도저히 짜를 수 없겠네요!!
뭔지 아는 사람이 없을테니...
-
클라우드나인
04.17 22:19
가끔 수업중에 그런 말을 하는 교수님이 계십니다..
high readability는 쉽게 잘 짤리는 길이라고... ㄷㄷㄷ
-
430라인에서 173라인...
장족의 발전이네요
레벨업 축하드립니다.
-
클라우드나인
04.17 22:20
감사합니다.. ^^
-
카이사르
04.17 20:52
그래도 , 미흡한점을. 느낀다는게 다행이죠 몇년전 자료를 보고 느끼는게. 없다면 문제겠죠 ^^
-
클라우드나인
04.17 22:27
프로그램을 많이 만들어서 늘어나는 실력이 있고, 한편으로는 관련 서적을 읽어서 실력이 늘어나는 부분도 있는 것 같습니다.
2년동안 쉬고 최근에 프로그래밍에 다시 손을 잡은지 얼마 안 됐는데, 오히려 OOP에 대한 이해도는 훨씬 높아진 것 같습니다.
예전에 만들었던 프로그램을 보면 imperative paradigm과 object-oriented paradigm이 난잡하게 섞인 느낌이라 영 보기가 어렵더군요.
군데군데 코드의 기교만 잔뜩 -_-;;
점점 깔끔하고 담백한 코드를 쓰고 싶어지더군요.
그러기 위해서는 Java가 좋은 것 같은데, 내부 구현이나 성능을 따져보면 또 C++가 맘에 들다가도.. C++의 문법적 integrity가 좀 떨어지는거 보면 java가 또 좋아보이기는 현상이 요즘 반복되고 있습니다..
java에 pointer가 있고, garbage collecting에만 의존하지 않고 manually delete할 수 있었으면 좋겠다는 생각이 드네요.
이런걸 만족시키려면 objective-c가 잘 맞을지도 모른다는 생각이 문득 듭니다.
java는 pointer를 없애기 위해 내부적으로 수 많은 포인터를 썼는데.. 그래서 오히려 pointer를 사용하는 것 보다 덜 명시적이 되어버려서 이래저래 신경쓸게 생각보다 많더군요. privacy leaks도 신경써야 하고..
OOP, 이식성, 성능 따지면 역시 C++가 현재로선 가장 만족스럽습니다.
-
후후후 원래 프로그래밍이 그렇죠. 제가 중학교 2학년때 짠 코드보면 정말 왜 그랬을까라는 생각이 들정도로 어이가 없습니다. 물론 여러가지 기교를 써서 해놨지만 결국은 소스코드를 잔뜩 잡아먹어서 용량만 늘어나고 나중에 디버깅 할때 복잡하기만 했습니다. 현재요?? 안합니다. ^^; 할시간 있으면 남한테 부탁하던지 만들어진거 씁니다..
-
왕초보
04.18 06:30
타입캐스팅 ^^ OS업글만 되어도 엉뚱하게 동작할 수도 있겠네요. 일단 제품에만 들어가면 회사에서 절대 못 자르겠는데요.
-
우어 ㅠㅠ.. 프로그래밍 하시는 분을 보면 참 부러워요;;;
번호 | 제목 | 작성자 | 작성일 | 조회 |
---|---|---|---|---|
공지 | [공지] 2025년 KPUG 호스팅 연장 완료 [9] | KPUG | 2025.08.06 | 140 |
공지 | [공지] 중간 업데이트/ 다시한번 참여에 감사 드립니다 [10] | KPUG | 2025.06.19 | 776 |
공지 | [안내의 글] 새로운 운영진 출범 안내드립니다. [15] | 맑은하늘 | 2018.03.30 | 32316 |
공지 | KPUG에 처음 오신 분들께 고(告)합니다 [100] | iris | 2011.12.14 | 443278 |
29793 |
몇년만에 자게에 글을 쓰는 중인지 모르겠습니다.
[1]
![]() | Electra | 08.14 | 14 |
29792 |
자세한건 만나서 이야기 하자.
[12]
![]() | 산신령 | 08.13 | 54 |
29791 | 안녕하세요. 오랜만입니다. [17] | highart | 08.09 | 121 |
29790 | 무지개 다리를 건너다. [6] | 인간 | 08.03 | 152 |
29789 | 밤새우는 중입니다. [15] | 왕초보 | 07.29 | 150 |
29788 |
가방..안 팔아요
[12]
![]() | 아람이아빠 | 07.19 | 221 |
29787 | MSN은 진정 보수 우파였던 것일까요 [6] | 엘레벨 | 07.19 | 180 |
29786 | 컨테이너와 산업디자인 [17] | 왕초보 | 07.16 | 179 |
29785 | 롱릴리프라고 아시나요? [15] | 해색주 | 07.07 | 245 |
29784 | 할 일도 없는데.. 대출광고 명함 신고나 매일 해야겠네요 [7] | 아람이아빠 | 07.07 | 196 |
29783 | 2025년 에어컨 개시했습니다. [6] | 해색주 | 06.30 | 211 |
29782 | 공업용 미싱 지름.. 편안한 주말 입니다. [14] | 아람이아빠 | 06.29 | 205 |
29781 | 날씨가 무척 습하네요. [10] | 해색주 | 06.28 | 183 |
29780 | 냉장고가 망가졌어요 ㅠㅜ [9] | 왕초보 | 06.25 | 219 |
29779 | 몽중인 - 중경삼림 1994 [11] | 해색주 | 06.24 | 217 |
29778 | 무선에 익숙해져 버렸습니다. [4] | 해색주 | 06.23 | 186 |
29777 |
댄디한 강아지..
[6]
![]() | 아람이아빠 | 06.21 | 165 |
29776 | 노트북 메모리가 박살났습니다. [6] | matsal | 06.05 | 285 |
무슨이야긴지 모르겠어요.