{ 왜 일까? 컴파일 타임이 무척 길어 지기 때문이다. 물론 쿼드코어에 옥타코어 더나아가 256개의 코어를 가진 컴퓨터라면 별 상관 없겠지만, 우리같은 서민은 그런 돈 없다. 머리를 써서 시간이라도 벌어야 코딩 한 줄이라도 더 할 수 있고 사장님께 더 많은 돈을 벌어야 한다면, 위의 문구를 반드시 기억해야 한다고 나는 생각한다..(물론 코딩보단 생각을 ... ) 자! 개념을 정리하면 정의 의존성이란? 한 객체를 정의 하고자 할 땐, 그 객체의 크기를 알아야 한다. 그래야지만 C++ 컴파일러가 객체의 크기로 메모리를 얼마나 할당할지 컴파일 타임에 결정 하기 때문이다. 그래서 한 객체를 정의 하고자 할때, 다른 객체가 있다면 그 객체의 크기를 알 수 있는 헤더를 제공해 주어야 한다. 순환 의존성이란? A를 ..
책 정리/C++ Coding Standards : C++ 코딩의 정석 검색 결과
{ 왜 일까? 일단 컴파일 단위란 개념과 초기화 의존성이란 개념을 알아야 한다. 컴파일 단위란? 컴파일러가 코드를 컴파일 할 때. 현재 파일만 보는 상태이다. 이런 상태에서 그 파일만 컴파일 하는데, 이렇게 파일 단위로 컴파일하는 것을 컴파일 단위 라 불르고 A 파일과 B 파일이 컴파일 되는 것을 "컴파일 단위 사이" 에 놓여 있다고 할 수 있다. 개념은 이건데, 컴파일러 마다 컴파일 단위가 다르기 때문에, 파일 단위가 컴파일 단위라고 확정 지을 수도 없는 노릇이다. 컴파일러 매뉴얼을 한번도 읽어 본적이 없어서 MSVC가 무엇을 컴파일 단위로 보는지도 모르겠다. ; ) 초기화 의존성이란? A가 초기화 되어야만, B를 정상적으로 초기화 할 수 있을 때, 우리는 B는 A의 초기화에 의존적이다.. 라고 말할 ..
{ 왜 그럴까? 역시 가독성을 무척 떨어 뜨리기 때문이다. 여기서 한가지 생각해 볼만한게 있는데, 수많은 책들이 성능보단 가독성이 나쁘면 왜 좋지 못한 코드라고 할까? 내가 경험한 바, 성능을 아무리 좋게 한다고, 성능 위주 코드를 짠다 해도, 차이가 없기 때문이다. 이 이야기는 다음의 이야기를 증명해 주기도 한다. "성능의 향상은 코드에 있는것이 아니고, 프로그램의 "알고리즘"에 있다" 그렇기 때문에, 우선 코드를 잘 보이도록 짠 뒤에, 알고리즘을 개선 하는 방향으로 가는것이 진정한 성능 향상이라 할 수 있다. 그래서 가독성을 해치는 "너무 긴 함수와 많은 중첩구조는 피하라" 라고 하는 것이다. 코드를 가독하는 사람의 입장에서 함수가 너무 길면, 그 내용을 모두 기억한 채로 위에서 아래로 코드를 훓어야..
{ 왜 초기화 해서 사용하는가? 에 대해서 나는 생각했을 때 두가지 이유가 떠올랐다. 하나, 버그의 퇴치, 하나, 가독성의 향상 이다. 17 항목에서 마법의 숫자가 가독성을 무척이나 떨어뜰 일 수 있다는 것을, 18항목에서 로컬 변수가 전역 변수보다 가독성이 높고 버그의 퇴치가 유용하다는 것을 이야기 한 것 으로 기억한다. 가독성의 원리부터 보자면, 눈에 보이면 좋은거다. ; ) 그 변수가 필요할 때, 어떤 값으로 초기화 보인다면, 무엇이 더 필요하랴. 가독성 완빵이다! 버그의 퇴치로 보자면, 컴파일러 마다 다르겠지만, 전역 변수가 아닌 변수들은 항상 쓰래기 값이 들어간다. MSVC 6.0 MSVC 2003 MSVC 2005 MSVC 2008, gcc 등(.. 그러고 보니 MSVC만 줄창 써왔네, 여담으..
{ 당연한 이야기겠지만, 가독성을 매우 높여주기 때문이다. C++ 하고 관계(?)는 없지만, 루아에선 변수가 런타임에 평가되기 때문에, 변수의 위치에 따라서 변수가 문자열이 될 수도, 테이블이 될 수도 있다. 결국 이 변수가 무엇인지 파악하기 위해선 위에 부터 아래까지 코드를 훓어 봐야만 한다. 그래서 루아에선 되도록 로컬 변수로 빼어서 사용 하려고 한다.(물론 이것은 나의 경우이다.) 루아가 C++과 관계는 없었지만 "가독성"은 사람의 이해를 한층 높여주는 것이기에 C++ 역시 마찬가지로 가독성을 높여야만 한다. (이런 측면에서 나는 루아로 코드를 짠다. 진현성 전임님의 말씀으로 "파이썬"도 무척이나 떙긴다. ; ) 리팩토링 책을 읽다 보았던 글귀가 생각 난다. "나는 매우 게으른 프로그래머이다. 나는..
최근댓글