스터디원들과 CPP 공부를 하고 있다. CPP 로 프로그램을 작성하다보니, 반복적으로 사용하게 되는 코드들이 있었다.
오소독스 캐노니컬 폼 만들기 (hpp 파일 및 cpp 파일)
OCCF(Orthodox-canonical-class-form)
은 정통 정식 클래스 형식을 의미한다.
std::cout << ~ << std::endls
코드 스니펫은 루프 또는 조건문과 같은 반복 코드 패턴을 더 쉽게 입력할 수 있게 해주는 템플릿입니다.
반복되는 상황이 답답했던 팀원 중 썬글이 스니펫을 공부해왔다..!!! 대박... 배울점 많은 사람이다. 최근에 커리어스킬 책에서
"대다수 소프트웨어 개발 프로젝트는 수동 프로세스를 자동화하거나,
수동으로 하기 너무 어려운 무언가를 자동화할 새로운 방법을 만들어내는 것이 목표다."
라는 문구를 보고 자동화
에 대한 생각을 항상하려고 노력하는데, 썬글은 이미 되어있는 것 같다.
아무튼 스니펫을 적용해보자.
찾아보니, cpp.json 파일 위치는 아래와 같다. 터미널을 사용해서 스니펫 작업도 가능한 듯 싶다.
나는 다음과 같은 코드를 추가했다. 전체 코드는 아래와 같고, 디테일한 부분은 참고 자료를 참고하길 바란다!
{
"setHPP": {
"prefix": ">setHPP",
"body": [
"#ifndef ${1:${TM_FILENAME_BASE}}_HPP",
"# define ${1:${TM_FILENAME_BASE}}_HPP",
"",
"class ${1:${TM_FILENAME_BASE}}",
"{",
"\tprivate:",
"\tpublic:",
"\t\t${1:${TM_FILENAME_BASE}}(void);",
"\t\t${1:${TM_FILENAME_BASE}}(const ${TM_FILENAME_BASE}& src);",
"\t\tvirtual ~${1:${TM_FILENAME_BASE}}(void);",
"\t\t${1:${TM_FILENAME_BASE}}& operator=(${TM_FILENAME_BASE} const& rhs);",
"};",
"",
"#endif"
],
"description": "create cpp clas"
},
"setCPP": {
"prefix": ">setCPP",
"body": [
"#include \"${TM_FILENAME_BASE}.hpp\"",
"",
"${TM_FILENAME_BASE}::${TM_FILENAME_BASE}(void)",
"{ \n\tstd::cout << \"${TM_FILENAME_BASE} created. Default.\" << std::endl; \n}",
"",
"${TM_FILENAME_BASE}::${TM_FILENAME_BASE}(const ${TM_FILENAME_BASE} & src)",
"{ \n\tstd::cout << \"Copy constructor called. \" << std::endl; \n\t *this = src; \n}",
"",
"${TM_FILENAME_BASE}::~${TM_FILENAME_BASE}(void)",
"{ \n\tstd::cout << \"${TM_FILENAME_BASE} destroyed.\" << std::endl; \n}",
"",
"${TM_FILENAME_BASE} & ${TM_FILENAME_BASE}::operator=(const ${TM_FILENAME_BASE} & rhs)",
"{",
"\tif (this != &rhs)",
"\t{\n\t}",
"\treturn *this;",
"}"
],
"description": "basic cpp class"
},
"std::cout": {
"prefix": ">print_line",
"body": "std::cout << \"$1\" << std::endl;",
"description": "print line"
}
}
>
을 입력하면, 스니펫에 등록된 코드들이 나오고, 원하는 것을 선택해서 사용하자!