일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 엑스퍼트2주년
- QTcpServer
- lua setup
- lua for windows
- lua install
- 수도권주택공급
- 청량리역한양수자인192
- 티몬삼겹살데이
- C API
- 국토교통부
- 엑스퍼트생일축하해
- object
- #부동산전자거래 #부동산전자계약 #부동산계약 #부동산전자계약방법 #부동산전자계약하는법 #부동산계약방법 #부동산중개수수료 #부동산중개수수료아끼기 #부동산복비아끼기
- TCP/IP
- #신혼부부 #결혼준비 #신혼부부희망타운신혼부부특별공급
- 월세
- lua interpreter
- 등록임대주택
- Lua
- file open
- 찾다죽는줄
- QT TCP
- 프리미어 영상저장
- FILE TRANSFER
- file write
- 중소규모택지
- C++ API
- meta table
- file read
- 프리미어 영상변환
- Today
- Total
Value Creator의 IT(프로그래밍 / 전자제품)
#23 Qt 코딩 스타일 본문
들여쓰기
들여쓰기는 4칸의 공백(space)을 둔다.
탭이 아닌 공백이다. (에디터에 탭을 공백으로 바꾸는 옵션이 있다면 켜 놓도록 하자)
변수 선언
변수는 한 라인에 한개 씩 선언한다.
짧거나 의미 없는 이름은 피하자. (예 : "a", "rbarr", "nughdeget")
한글자 변수명은 카운터나 임시변수에서 목적이 분명할 때 사용 할 수 있다.
변수 선언은 미리 선언하지 않고 필요한 곳에서 선언 한다.
[잘못된 예]
int a, b;
char *c, *d;
[올바른 예]
int width;
int height;
char *nameOfThis;
char *nameOfThat;
변수명과 함수명은 소문자로 시작한다. 연속 단어의 경우 첫 글자는 대문자로 한다.
약어는 사용하지 않는다.
[잘못된 예]
short Cntr;
char ITEM_DELIM = '\t';
[올바른 예]
short counter;
char itemDelimiter = '\t';
클래스는 대문자로 시작한다. 공용 클래스(Public classes)의 경우 대문자 'Q'로 시작하며 공용 함수는 소문자 'q'로 시작한다.
Qt 소스를 작성하는 개발자만 해당. :)
class QRgb;
qRgb()
약어의 경우 전부 대문자로 사용하는 것이 아니라 camel-case 규칙에 따라 첫 글자만 대문자를 사용한다.
잘못된 예 : QXMLStreamReader
올바른 예 : QXmlStreamReader
공백 (Whitespace)
Statements 그룹 사이에는 빈 줄 하나를 넣는다.
항상 한 줄의 빈 줄을 사용한다. (두줄 이상 금지)
키워드와 중괄호 사이에는 공백 하나를 둔다.
[잘못된 예]
if(foo){
}
[올바른 예]
if (foo) {
}
포인터와 참조는 타입과 '*' 또는 '&' 사이에 공백을 하나 둔다. 다만 '*' 또는 '&'과 변수 사이에는 공백없이 붙여 쓴다.
char *x;
const QString &str;
const char * const y = "hello";
단항 연산자는 앞뒤에 공백을 둔다.
a = b + c;
형변환 연산자 뒤에는 공백이 없다.
가능하다면 C스타일의 형변환은 피한다.
[잘못된 예]
char* blockOfMemory = (char*) malloc(data.size());
[올바른 예]
char *blockOfMemory = reinterpret_cast(malloc(data.size()));
한 줄에 여러 statements를 두지 말자
제어문의 Body는 새로운 줄로 시작한다.
[잘못된 예]
if (foo) bar();
[올바른 예]
if (foo)
bar();
중괄호(Braces)
if ~ else 와 같이 중괄호가 연결되어 사용 되는 경우 아래와 같은 규칙으로 사용한다.
[잘못된 예]
if (codec)
{
}
else
{
}
[올바른 예]
if (codec) {
} else {
}
예외 : 함수나 클래스 선언의 경우 중괄호를 라인의 처음에서 시작한다.
static void foo(int g)
{
qDebug() << "foo : %i", g);
}
class Moo
{
};
명령문이 두줄 이상일 때에만 중괄호를 사용하자
[잘못된 예]
if (address.isEmpty()) {
return false;
}
for (int i=0; i<10; ++i) {
qDebug("%i", i);
}
[올바른 예]
if (address.isEmpty())
return false;
for (int i=0; i<10; ++i)
qDebug("%i", i);
예외 : 조건문이 여러줄에 걸쳐 있을 경우 명령문이 한줄이어도 중괄호 사용 가능
if (address.isEmpty()) || !isValid()
|| !coded) {
return false;
}
예외 : if ~ else 문중 한쪽만 명령어가 여러개 인 경우 if, else절 모두 중괄호를 사용한다.
[잘못된 예]
if (address.isEmpty())
return false;
else {
qDebug("%s", qPrintable(address));
++iter;
}
[올바른 예]
if (address.isEmpty()) {
return false;
} else {
qDebug("%s", qPrintable(address));
++iter;
}
[잘못된 예]
if (a)
if (b)
...
else
...
[올바른 예]
if (a) {
if (b)
...
else
...
}
명령어 줄이 비었을 때 중괄호 사용
[잘못된 예]
while (a);
[올바른 예]
while (a) {}
괄호
표현식을 그룹화 할 때 괄호를 사용한다.
[잘못된 예]
if (a && b || c)
a + b & c
[올바른 예]
if ((a && b) || c)
(a + b) & c
Switch 문
case 라벨은 switch 와 같은 열에 위치한다.
case 의 끝에는 break 문(또는 return)이 있어야 하며 그렇지 않을 경우(break가 없는) case 문이 바로 나오지 않는 다면 주석을 달아 break가 없음을 알린다.
switch (myEnum) {
case Value1:
doSomething();
break;
case Value2:
case Value3:
doSomethingElse();
// fall through
default:
defaultHandling();
break;
}
Jump 문(break, continue, return, 그리고 goto)
jump 문 뒤에는 'else'를 사용하지 않음
[잘못된 예]
if (thisOrThat)
return;
else
somethingElse();
[올바른 예]
if (thisOrThat)
return;
somethingElse();
예외 : 코드가 대칭적으로 되어 있는 경우 가독성을 위해 else를 사용할 수 있다.
Line Break
한 줄에 100칸 이상 사용하지 말자.
단항 연산자가 여러 줄에 걸쳐 있을 경우 맨 앞에 사용 하자. 일부 창 크기가 작은 에디터에서 가려져 실수로 빠뜨릴 수가 있다.
[잘못된 예]
if (longExpression +
otherLongExpresstion +
otherOtherLongExpression {
}
[올바른 예]
if (longExpression
+ otherLongExpresstion
+ otherOtherLongExpression {
}
'1. 프로그래밍 > 3) QT' 카테고리의 다른 글
QT Serial 통신 우분투에서 권한 문제 해결(permission denied) (0) | 2019.12.19 |
---|---|
#24 [QT] 시리얼 통신 (Serial Communication Programming) (0) | 2019.07.26 |
#22 QT의 시그널과 슬롯(Signal, Slot), Connect 함수 사용법 (2) | 2019.06.26 |
#21 QT GUI Widget 정렬하기, 줄 맞추기 (0) | 2019.06.25 |
#20 QT TCP File 전송 프로그램 - 제작자 daijunyi123 (0) | 2019.06.20 |