전체보기
-
구글 C++ 스타일 가이드 - 이름 짓기프로그래밍/c++ 2014. 5. 2. 23:57
구글 C++ 스타일 가이드 - 이름 짓기(Google C++ Style Guide - Naming) 1. 일반적인 이름 규칙 함수, 변수, 파일 이름은 설명적이어야 하므로 가급적 축약하지 않는다. 타입과 변수는 명사, 함수는 명령 동사로 쓴다. - 이름 짓기 이름은 가급적 설명적이어야한다. 다음은 좋고 나쁜 예이다. //좋은 예 int num_errors; int num_completed_connections; //나쁜 예 int n; int nerr; int num_comp_conn; - 약어 프로젝트 외에서도 잘 알려진 약어가 아니라면 축약하지 사용하지 않는다. // 좋은 예 int num_dns_connections; // dns는 외부에 많이 알려진 약어이다. openDvdPlayer(); // ..
-
C# 표준 네이밍 규칙프로그래밍 2014. 5. 2. 22:16
이 네이밍 규칙은 닷넷 스파이더 팀에서 만든 [C# Coding Standards and Best Programming Practices]를 바탕으로 만들었습니다. 전반적으로 카멜(Camel) 표기법 파스칼(Pascal) 표기법으로 이루어짐. 헝가리안 표기법은 사용하지 않는다.(컴파일러의 발전으로 변수 타입 확인이 쉬워짐. 헝가리안 표기법은 이제 난잡하게 보이는 요인이 될 수 있음) 파스칼(Pascal) 표기법: 단어의 첫글자는 모두 대문자, 나머지는 소문자 (예: GetObject)카멜(Camel) 표기법: 첫 단어는 소문자, 나머지는 첫 문자를 대문자로 하는 표기법 (예: getObject) 일반 함수: 파스칼void GetCurrentTime( ... ) 클래스: 파스칼class Session 멤버..
-
[c++11] std::mutex프로그래밍/c++ 2014. 4. 27. 13:14
쓰레드(thread)를 사용하다보면 하나의 자원에 동시에 접근하는 경우가 있는데, 이를 방지하기 위해 사용하는 표준 라이브러리에서 제공하는 객체(C++11) 헤더 선언 std::mutex mutex; lock() 뮤텍스를 소유를 시도함. 뮤텍스를 소유할 때까지 쓰레드는 대기. unlock() 뮤텍스의 소유권을 놓음. 쓰레드 소유를 대기한(lock을 호출한) 쓰레드가 있다면 소유권은 다른 쓰레드에게 넘어간다. try_lock() bool을 반환. 기존의 lock은 소유권을 받을 때까지 대기에 들어갔다면, 이 함수는 호출 되는 순간 소유권을 얻어내지 못하면 false를 반환. 공유된 자원이 다른 쓰레드에서 사용중이라면(try_lock 반환값이 false라면), 다른 작업을 하는 식으로 사용이 가능. ++ 윈..
-
boost singleton_pool의 사용프로그래밍 2014. 4. 20. 01:02
boost의 메모리 풀 관련 라이브러리 중 하나인 boost::singleton_pool은 전역적인 메모리 풀로 스레드에 대해 안전(thread-safe)하다. 사용 시, 템플릿 인자로 태그(tag)의 역할을 할 더미 클래스와 pool이 할당하는 사이즈를 받는다.똑같은 용량을 할당하는 메모리 풀이라도, 태그가 다르면 공유하지 않는 메모리 풀을 사용한다. (태그의 이름을 변수 이름이라고 생각해도 괜찮다.) struct pool_tag{}; class test_class { public: test_class(){} test_class(int a, int b, int c){} test_class(int a, int b, int c, int d){} }; typedef boost::singleton_pool< ..
-
boost object_pool의 사용프로그래밍 2014. 4. 19. 23:41
boost 라이브러리의 메모리 풀(memory pool) 관련 클래스 중 하나인 object_pool은 메모리 풀의 역할도 하면서 동시에 클래스의 생성자/소멸자 호출이 가능하다. #include ... boost::object_pool pool; object_pool::malloc(...) 클래스 크기만큼의 메모리만 할당을 해준다.(생성자 호출 X) test_class* p = op.malloc(); object_pool::free(...) 클래스 크기만큼의 메모리를 해제한다.(소멸자 호출 X) op.free(p); object_pool::construct(...) 클래스 크기만큼의 메모리를 할당하며, 생성자를 호출한다. (생성자 호출 O) 주의할 점은 생성자의 인자로는 최대 3개까지만 받을 수 있으며,..