Cpp Coding Standard - SWTube/Darkest-Cave GitHub Wiki
ν΄λμ€λ κΈ°λ³Έμ μΌλ‘ λ
μμ λ§μμΌλ‘ μμ±ν΄μΌνλ€. λλΆλΆμ λ
μλ€μ ν΄λμ€μ public
ν λΆλΆμ μ¬μ©ν κ²μ΄λ―λ‘ public
μ΄ λ¨Όμ λμ€κ³ λμ protected
, private
μμΌλ‘ λμμΌνλ€.
λͺ¨λ μμ€νμΌ(.h, .cpp λ±)μ λ°λμ 첫λ²μ§Έ μ€μ μ μκΆ νμλ₯Ό ν΄μΌνλ€:
/*!
* Copyright (c) 2021 SWTube. All rights reserved.
* Licensed under the GPL-3.0 License. See LICENSE file in the project root for license information.
*/
κΈ°λ³Έμ μΌλ‘ λ³μ, λ©μλ, ν΄λμ€λ€μ μ΄λ¦μ λͺ νν΄μΌνκ³ , ꡬ체μ μ΄λ©°, μ 맀ν΄μλ μλλ€. ν΄λμ€κ° λ리 μ°μ΄λ©΄ μ°μΌ μλ‘ λ μ’κ³ κ΅¬μ²΄μ μΈ μ΄λ¦μ μ¬μ©νλΌ. μ€μλ§μ κ±°λ₯΄λ κ²μ΄ μ’λ€.
-
ν΄λμ€μ ꡬ쑰체μ μ΄λ¦μ νμ€μΉΌ νκΈ°λ²μ λ°λ₯Έλ€
class PlayerManager; struct AnimationInfo;
-
μ§μ λ³μ κ·Έλ¦¬κ³ ν¨μμ λ§€κ° λ³μμ μ΄λ¦μ μΉ΄λ© νκΈ°λ²μ λ°λ₯Έλ€
void SomeMethod(const int someParameter) { int someNumber; int id; }
-
λ©μλ λλ ν¨μ μ΄λ¦μ λμ¬λ‘ μμνλ€.
-
public
λ©μλμ μ΄λ¦μ νμ€μΉΌ νκΈ°λ²μ λ°λ₯Έλ€public: void DoSomething();
-
κ·Έ μΈ λ€λ₯Έ λ©μλμ μ΄λ¦μ μΉ΄λ© νκΈ°λ²μ λ°λ₯Έλ€
private: void doSomething();
-
-
μ μ°¨(λ°νκ°μ΄ μλ ν¨μ)λ λ°λμ λͺ νν μλ―Έλ₯Ό κ°λ νλμ¬μ λͺ©μ μ΄λ₯Ό μ¬μ©νλ€. λ€λ§, ν΄λΉ ν¨μκ° ν΄λμ€μ λ©μλμ΄κΈ° λλ¬Έμ λ¬Έλ§₯μ νλμ¬μ λͺ©μ μ΄κ° λΆλͺ ν λλ μμΈλ‘ νλ€
-
λΆλ¦¬μΈνμ λ°ννλ ν¨μμ κ²½μ° μ§λ¬Έμ νλ νμμΌλ‘ μμ±νλ€
bool IsVisible(); bool ShouldClearBuffer();
-
ν¨μμ μ΄λ¦μ λ°λμ λ°ννλ κ²μ΄ μ΄λ€ μλ―Έλ₯Ό κ°λμ§λ₯Ό μ μ μλλ‘ μ§μ΄μΌνλ€
// 체ν¬ν΄μ trueλ©΄ λ λ»μΈλ°? bool CheckTea(FTea Tea); // μ~ trueλ©΄ μ°¨κ° freshνλ¨ λ»μ΄κ΅° bool IsTeaFresh(FTea Tea);
-
μμ λλ
#define
μΌλ‘ μ μλ μμμ μ΄λ¦μ λͺ¨λ λλ¬Έμλ‘ νλ λ°μ€λ‘ κ° λ¨μ΄λ₯Ό λΆλ¦¬νλ€constexpr int SOME_CONSTANT = 1;
-
λ€μμ€νμ΄μ€λ λͺ¨λ μλ¬Έμλ‘ μμ±νλ€
namespace abc{};
-
λΆμΈ(boolean)ν λ³μλ μμ
b
λ₯Ό λΆμΈλ€bool bFired; // μ§μ λ³μμ public λ©€λ² λ³μμ κ²½μ° bool mbFired; // ν΄λμ€μ private λ©€λ² λ³μμ κ²½μ°
-
μΈν°νμ΄μ€λ₯Ό μ μΈν λλ μμ
I
λ₯Ό λΆμΈλ€class ISomeInterface;
-
μ΄κ±°νμ μ μΈν λλ μμ
e
λ₯Ό λΆμΈλ€enum class eDirection { North, South };
-
ν΄λμ€ λ©€λ² λ³μ λͺ μ μμ
m
μ λΆμΈλ€class Employee { protected: int mDepartmentID; private: int mAge; };
-
goto
λ μ΄λΈ λͺ μ λͺ¨λ λλ¬Έμλ‘ νλ λ°μ€λ‘ κ° λ¨μ΄λ₯Ό λΆλ¦¬νλ€goto MY_LABEL; // ... MY_LABEL: std::cout << "Magic! << std::endl; return 0;
-
κ°μ λ°ννλ ν¨μμ μ΄λ¦μ 무μμ λ°ννλμ§ μ μ μκ² μ§λλ€
-
λ¨μν λ°λ³΅λ¬Έμ μ¬μ©λλ λ³μκ° μλ κ²½μ°μ
i
,e
κ°μ λ³μλͺ λμindex
,employee
μ²λΌ λ³μμ μ μ₯λλ λ°μ΄ν°λ₯Ό ν λμ μμλ³Ό μ μλ λ³μλͺ μ μ¬μ©νλ€. -
λ€μ μΆκ°μ μΈ λ¨μ΄κ° μ€μ§ μλ κ²½μ° μ€μλ§μ λͺ¨λ λλ¬Έμλ‘ νκΈ°νλ€
int OrderID; int HttpCode;
-
ꡬ쑰체λ μ€μ§
public
λ©€λ² λ³μλ§ κ°μ§ μ μλ€. ꡬ쑰체μ λ©€λ² λ³μλͺ μ νμ€μΉΌ νκΈ°λ²μ λ°λ₯΄λ©°, ꡬ쑰체 μμμλ ν¨μλ μ¬μ©νμ§ μλλ€ -
μ¬κ· ν¨μλ μ΄λ¦ λ€μ
Recursive
λ₯Ό λΆμΈλ€void FibonacciRecursive();
-
νμΌ μ΄λ¦μ λμλ¬ΈμκΉμ§ ν¬ν¨ν΄μ λ°λμ ν΄λμ€ μ΄λ¦κ³Ό μΌμΉν΄μΌ νλ€
class PlayerAnimation; PlayerAnimation.cpp PlayerAnimation.h
-
μ¬λ¬ νμΌμ΄ νλμ ν΄λμ€λ₯Ό μ΄λ£° λ, νμΌ μ΄λ¦μ ν΄λμ€ μ΄λ¦μΌλ‘ μμνκ³ , κ·Έ λ€μ λ°μ€κ³Ό μΈλΆ νλͺ© μ΄λ¦μ λΆμΈλ€
class RenderWorld; RenderWorld_load.cpp RenderWorld_demo.cpp RenderWorld_portals.cpp
-
Reverse OOP ν¨ν΄μ μ¬μ©ν λ, νλ«νΌ μ μ© ν΄λμ€λ μ νλͺ©κ³Ό λΉμ·ν λͺ λͺ κ·μΉμ μ¬μ©νλ€
class Renderer; Renderer.h // κ²μμμ νΈμΆλλ λͺ¨λ Renderer μΈν°νμ΄μ€ Renderer.cpp // λͺ¨λ νλ«νΌ μ© Renderer ꡬν μμ€ Renderer_gl.h // Rendererκ° νΈμΆνλ RendererGL μΈν°νμ΄μ€ Renderer_gl.cpp // RendererGL ꡬν μμ€
-
λΉνΈ νλκ·Έ μ΄κ±°νμ μ΄λ¦ λ€μ
Flags
λ₯Ό λΆμΈλ€enum class eVisibilityFlags { }
-
λ³μ κ°λ¦¬κΈ°(variable shadowing)μ νμ©λμ§ μλλ€. μΈλΆ λ³μκ° λμΌν μ΄λ¦μ μ¬μ© μ€μ΄λΌλ©΄ λ΄λΆ λ³μμλ λ€λ₯Έ μ΄λ¦μ μ¬μ©νλ€
class SomeClass { public: int32_t Count; public: void Func(const int32_t Count) { for (int32_t count = 0; count != 10; ++count) { // Use Count } } }
-
ν΄λμ€ λ©€λ² λ³μμ μ κ·Όν λλ νμ setterμ getterλ₯Ό μ¬μ©νλ€
-
νλ¦° λ°©μ:
class Employee { public: string Name; };
-
μ¬λ°λ₯Έ λ°©μ:
class Employee { public: const string& GetName() const; void SetName(const string& name); private: string mName; };
-
-
μΈλΆ ν€λ νμΌμ μΈν΄λ£¨λ ν λλ
#include <>
μ μ¬μ©, μ체μ μΌλ‘ λ§λ ν€λ νμΌμ μΈν΄λ£¨λ ν λλ#include ""
λ₯Ό μ¬μ©νλ€. -
μΈλΆ ν€λ νμΌμ λ¨Όμ μΈν΄λ£¨λν λ€, λ΄λΆ ν€λ νμΌμ μΈν΄λ£¨λλ₯Ό ν λ, κ°λ₯νλ€λ©΄ μνλ²³ μμλ₯Ό λ°λ₯Έλ€
-
λͺ¨λ ν€λ νμΌ μ²« λ²μ§Έ μ€μ
#pragma once
λ₯Ό κΈ°μ¬νλ€ -
μ§μ λ³μλ₯Ό μ μΈν λλ κ·Έ μ§μ λ³μλ₯Ό μ¬μ©νλ μ½λμ λμΌν μ€(μ€μ½ν)μ μ μΈνλ κ²μ μμΉμΌλ‘ νλ€
-
double
μ΄ λ°λμ νμν κ²½μ°κ° μλ μ΄μ λΆλ μμμ κ°μf
λ₯Ό λΆμ¬μ€λ€float f = 0.5f;
-
switch
case
λ¬Έμλ νμdefault
λ₯Ό λ£λλ€ -
switch
case
λ¬Έ λμbreak;
λ₯Ό λ£μ§ μκ³ κ·Έ λ°λ‘ μλcase
λ¬Έμ μ½λλ₯Ό μ€ννκ³ μΆμ κ²½μ°, 미리 μ μν΄λFALLTHROUGH
맀ν¬λ‘λ₯Ό μΆκ°νλ€. λ¨,case
λ¬Έ μμ μ½λκ° μλ κ²½μ°λ μμΈμ΄λ€. μ΄λ C++17 μ¬μμμ[[fallthrough]]
μ νΈλ¦¬λ·°νΈλ‘ λ체λ κ²μ΄λ€.-
C++17 μ΄μ
switch (number) { case 0: DoSomething(); FALLTHROUGH case 1: DoFallthrough(); break; case 2: case 3: DoNotFallthrough(); break; default: break; }
-
C++17 μ΄ν
switch (number) { case 0: DoSomething(); [[fallthrough]]; case 1: DoFallthrough(); break; case 2: case 3: DoNotFallthrough(); break; default: break; }
-
-
default
case
κ° μ λ μ€νλ μΌμ΄ μλ κ²½μ°,default
case
μμAssert(false);
λ μ½λλ₯Ό μΆκ°νλ€.Assert()
λ μ§μ ꡬννλ©΄ κ·Έ μμμ λ¦΄λ¦¬μ¦ λΉλ μ μ΅μ ν ννΈλ₯Ό μΆκ°ν μ μλ€switch (type) { case 1: ... break; default: Assert(false, "unknown type"); break; }
-
μμΉμ μΌλ‘ λͺ¨λ κ³³μ
const
λ₯Ό μ¬μ©νλ€. μ¬κΈ°μλ μ§μ λ³μμ ν¨μ λ§€κ° λ³μλ ν¬ν¨νλ€ -
κ°μ²΄λ₯Ό μμ νμ§ μλ λ©€λ² ν¨μμλ λͺ¨λ
const
λ₯Ό λΆμΈλ€int GetAge() const;
-
κ°(value) νμμ λ³μλ₯Ό
const
λ‘ λ°ννμ§ μλλ€. ν¬μΈν°λ μ°Έμ‘°(reference)λ₯Ό λ°νν κ²½μ°μλ§const
λ°νμ νλ€ -
ν΄λμ€ μμμ λ©€λ² λ³μμ λ©μλμ λ±μ₯ μμλ λ€μμ λ°λ₯Έλ€
-
friend
ν΄λμ€λ€ -
public
λ©μλλ€ -
protected
λ©μλλ€ -
private
λ©μλλ€ -
protected
λ³μλ€ -
private
λ³μλ€
-
-
λλΆλΆμ κ²½μ° ν¨μ μ€λ²λ‘λ©μ νΌνλ€
-
νλ¦° λ°©μ
const Anim* GetAnim(const int index) const; const Anim* GetAnim(const char* name) const;
-
μ¬λ°λ₯Έ λ°©μ
const Anim* GetAnimByIndex(const int index) const; const Anim* GetAnimByName(const char* name) const;
-
-
const
λ°νμ μν ν¨μ μ€λ²λ‘λ©μ νμ©νλ€Anim* GetAnimByIndex(const int index); const Anim* GetAnimByIndex(const int index) const;
-
const_cast
λ₯Ό μ§μ μ μΌλ‘ μ¬μ©νμ§ μλλ€. λμconst
μΈ κ°μ μΈ¨ μμ κ°λ₯ν ννλ‘ λ³νν΄μ λ°ννλ ν¨μλ₯Ό λ§λ λ€ -
ν΄λμ€λ κ°κ° λ 립λ μμ€ νμΌμ μμ΄μΌ νλ€. λ¨, μμ ν΄λμ€ λͺ κ°λ₯Ό ν νμΌμ κ°μ΄ λ£μ΄ λλ κ²μ΄ μμμ μΌ κ²½μ° μμΈλ₯Ό νμ©νλ€
-
νμ€ C
assert
λμ μ μμ λ§μAssert
λ²μ μ ꡬννλ€ -
νΉμ μ‘°κ±΄μ΄ λ°λμ μΆ©μ‘±λμ΄μΌ νλ€κ³ κ°μ (assertion)νκ³ μ§ μ½λ λͺ¨λ κ³³μ
assert
λ₯Ό μ¬μ©νλ€.Assert
λ 볡ꡬ λΆκ°λ₯ν 쑰건μ΄λ€.Assert
λ λ¦΄λ¦¬μ¦ λΉλμμ[__assume](https://docs.microsoft.com/en-us/cpp/intrinsics/assume?view=msvc-160)
ν€μλλ‘ λ체νμ¬ μ»΄νμΌλ¬μ μ΅μ ν ννΈλ₯Ό μ€ μ μλ€ -
λͺ¨λ λ©λͺ¨λ¦¬ ν λΉμ μ§μ ꡬνν
New
,Delete
ν€μλλ₯Ό ν΅ν΄ νΈμΆνλ€ -
memeset
,memcpy
,memmove
μ κ°μ λ©λͺ¨λ¦¬ μ°μ° μμ μ°λ¦¬ κ³ μ μMemSet
,MemCpy
,MemMove
ν€μλλ₯Ό ν΅ν΄ νΈμΆν΄μΌ νλ€ -
μ΄λ€ μ΄μ λ‘λ 맀κ°λ³μλ‘
nullptr
κ° λμ΄μ¬ μ μλ κ²½μ°κ° μλλΌλ©΄ ν¬μΈν° λμ μ°Έμ‘°μ(&
)λ₯Ό μ¬μ©νλ κ²μ μμΉμΌλ‘ νλ€ (μμΈλ λ€μ νλͺ©μ μ°Έκ³ ) -
ν¨μμμ 맀κ°λ³μλ₯Ό ν΅ν΄ κ°μ λ°νν λ(
out
맀κ°λ³μ)λ ν¬μΈν°λ₯Ό μ¬μ©νλ©°, 맀κ°λ³μ μ΄λ¦ μμout
μ λΆμΈλ€-
ν¨μ
void GetScreenDimension(uint32_t* const outWidth, uint32_t* const outHeight) { }
-
νΈμΆ
uint32_t width; uint32_t height; GetScreenDimension(&width, &height);
-
-
μ νλͺ©μ
out
맀κ°λ³μλ λ°λμnull
μ΄ μλμ΄μΌ νλ€ (ν¨μ λ΄λΆμμif
λ¬Έ λμassert
λ₯Ό μ¬μ©ν κ²)void GetScreenDimension(uint32_t* const outWidth, uint32_t* const outHeight) { Assert(outWidth); Assert(outHeight); }
-
맀κ°λ³μκ° ν΄λμ€ λ΄λΆμμ μ μ₯λ λλ ν¬μΈν°λ₯Ό μ¬μ©νλ€
void AddMesh(Mesh* const mesh) { mMeshCollection.push_back(mesh); }
-
맀κ°λ³μκ°
void
ν¬μΈν°μΌ νλ κ²½μ°λ ν¬μΈν°λ₯Ό μ¬μ©νλ€void Update(void* const something) { }
-
νΉμ ν¬κΈ°(μλ₯Ό λ€μ΄ λ°μ΄ν° λ©€λ²μ μ§λ ¬νλ₯Ό μν ν¬κΈ°)κ° νμνμ§ μμ ν μ΄κ±°νμ ν¬κΈ° μ§μ μλ₯Ό μΆκ°νμ§ μλλ€
enum class eDirection : uint8_t { North, South }
-
λν΄νΈ λ§€κ° λ³μ λμ ν¨μ μ€λ²λ‘λ©μ μ νΈνλ€
-
λν΄νΈ λ§€κ° λ³μλ₯Ό μ¬μ©νλ κ²½μ°,
nullptr
λfalse
,0
κ°μ΄ λΉνΈ ν¨ν΄μ΄ 0μΈ κ°μ μ¬μ©νλ€ -
κ°λ₯ν κ³ μ λ ν¬κΈ°(size)μ 컨ν μ΄λλ₯Ό μ¬μ©νλ€
-
λμ 컨ν μ΄λλ₯Ό μ¬μ©ν΄μΌ νλ€λ©΄ κ°λ₯ν ν 미리 `reserve()``λ₯Ό νΈμΆνλ€.
-
#define
μΌλ‘ μ μλ μμλ νμ κ΄νΈλ‘ κ°μΈμ€λ€#define NUM_CLASSES (1)
-
μμλ
#define
보λ€const
μμ λ³μλ‘ μ μΈνλ€ -
ν΄λμ€λ₯Ό μνΈ μ°Έμ‘°ν λλ
#include
λ³΄λ€ μ λ°©μ μΈ(forward declaration)μ μ΅λν μ΄μ©νλ€ -
λͺ¨λ μ»΄νμΌλ¬ κ²½κ³ λ λ°λμ κ³ μΉλ€
-
ν μ€μ λ³μ νλλ§ μ μΈνλ€
-
νλ¦° λ°©μ
int counter = 0, index = 0;
-
μ¬λ°λ₯Έ λ°©μ
int counter = 0; int index = 0;
-
μ΄λμΌ κ° λ³μμ λν΄ μ£Όμμ λ¨κ²¨ μ΄ λ³μκ° μ΄λ€ μλ―ΈμΈμ§λ₯Ό μλ €μ€ μ μκΈ° λλ¬Έμ΄λ€
-
-
μ§μ κ°μ²΄λ₯Ό λ°νν λ NRVOμ μ΄μ μ νμ©νλ€. μ΄λ ν¨μ λ΄μ νλμ returnλ¬Έ λ§ μ΄λ€λ κ²μ μλ―Ένλ©°, μ΄κ²μ κ°μΌλ‘ κ°μ²΄λ₯Ό λ°νν λλ§ μ μ©λλ€.
-
struct
λclass
μμ μ΄κΈ°ν ν κ° λ³κ²½μ λ§μΌλ €κ³const
λ©€λ² λ³μλ₯Ό μ°μ§ μλλ€. μ°Έμ‘°(&
) λ©€λ²λ³μμ κ²½μ°λ λ§μ°¬κ°μ§ -
λ©€λ² λ³μλ₯Ό μ΄κΈ°νν λλ μ΄κΈ°ν 리μ€νΈλ₯Ό μ¬μ©νλ κ²μ κΈ°λ³ΈμΌλ‘ νλ€
-
μ»΄νμΌ λμ€ assertionμ΄ νμνλ€λ©΄
static_assert
λ₯Ό μ¬μ©νλ€ -
override
μfinal
ν€μλλ₯Ό λ°λμ μ¬μ©νλ€ -
νμ
enum class
λ₯Ό μ¬μ©νλ€enum class eDirection { North, South }
-
κ°λ₯ν
Assert
λμstatic_assert
λ₯Ό μ¬μ©νλ€. -
ν¬μΈν°μ
NULL
λμnullptr
λ₯Ό μ¬μ©ν©λλ€. -
κ°μ²΄μ μλͺ μ΄ ν΄λμ€ λ΄μμλ§ μ²λ¦¬λλ κ²½μ°
unique_ptr
λ₯Ό μ¬μ©νλ€. (μ¦, κ°μ²΄ μμ±μ μμ±μμμ, κ°μ²΄ νκ΄΄λ μλ©Έμμμ) -
μ μ© κ°λ₯ν κ³³μ΄λΌλ©΄ λ²μκΈ°λ°
for
λ¬Έμ μ¬μ©νλ€. -
λ°λ³΅μλ
new
ν€μλκ° κ°μ μ€μ μμ΄μ, μ΄λ€ κ°μ²΄κ° λ§λ€μ΄μ§λ μ§ λͺ ννκ² λλ¬λλ κ²½μ°κ° μλλΌλ©΄auto
ν€μλλ₯Ό μ¬μ©νμ§ μλλ€. -
std::move
λ₯Ό μ¬μ©νμ¬ μλμΌλ‘ λ°ν κ°μ μ΅μ ννμ§ μλλ€. μ΄λ΄ κ²½μ°, μλ NRVO μ΅μ νκ° μ μ©λμ§ μλλ€. -
μ΄λ μμ±μ(move constructor)μ μ΄λ λμ μ°μ°μ(move assignment operator)λ₯Ό μ¬μ©ν΄λ λλ€.
-
λ¨μ μμ λ³μμλ
const
λμconstexpr
μ μ¬μ©νλ€.μ μ© μ :
const int DEFAULT_BUFFER_SIZE = 65536;
μ μ© ν:
constexpr int DEFAULT_BUFFER_SIZE = 65536;
-
λλ€ ν¨μμ κ²½μ°
sort
λ±μ ν¨μμ 맀κ°λ³μλ‘ μ λ¬νλ λ±μ΄ μλλΌλ©΄ μ§μνλ κ²μ΄ μ’μΌλ©°, μ¬μ©νλλΌλ κΈΈμ΄κ° κ³Όλνκ² κΈΈμ΄μλ μλλ€
-
include
μ μ²λ¦¬λ¬Έ λΈλ‘κ³Ό μ½λ λ³Έλ¬Έ μ¬μ΄μ λ°λμ λΉ μ€μ΄ μμ΄μΌ νλ€ -
ν(tab)μ λΉμ£ΌμΌ μ€νλμ€ κΈ°λ³Έκ°μ μ¬μ©νλ©°, λΉμ£ΌμΌ μ€νλμ€λ₯Ό μ¬μ©νμ§ μμ μ λμ΄μ°κΈ° 4μΉΈμ νμΌλ‘ μ¬μ©νλ€.
-
μ€κ΄νΈ(
{
)λ₯Ό μ΄ λλ μΈμ λ μλ‘μ΄ μ€μ μ°λ€. -
μ€κ΄νΈ μ(
{ }
)μ μ½λκ° ν μ€λ§ μλλΌλ λ°λμ μ€κ΄νΈλ₯Ό μ¬μ©νλ€.if (bSomething) { return; }
-
if
-else
λΈλ‘μ μ¬μ©ν κ²½μ°else
λif
μ μ€κ΄νΈ λ€μ μ€μμλΆν° μμ±νλ€if (bHaveUnrealLicense) { InsertYourGameHere(); } else { CallMarkRein(); }
-
ν¬μΈν°λ μ°Έμ‘° κΈ°νΈλ μλ£νμ λΆμΈλ€.
int& number; int* number;
-
μ΄κΈ°ν 리μ€νΈλ₯Ό μ΄μ©ν΄ λ©€λ² λ³μλ₯Ό μ΄κΈ°νν λλ μλμ κ°μ ν¬λ§·μ λ°λΌ ν μ€μ λ³μ νλμ© μ΄κΈ°ννλ€.
- νλ¦° λ°©μ:
MyClass::MyClass(const int var1, const int var2) :mVar1(var1), mVar2(var2), mVar3(0) {
- μ¬λ°λ₯Έ λ°©μ:
MyClass::MyClass(const int var1, const int var2) : mVar1(var1) , mVar2(var2) , mVar3(0) {
- Visual C++: νλ‘μ νΈ μ€μ μ λ³κ²½νλ €λ©΄ νμ μμ± μνΈ(property sheets)μμ λ³κ²½ νλ€.
- νλ‘μ νΈ μ€μ μμ μ»΄νμΌ κ²½κ³ λ₯Ό λΉνμ±ν νμ§ μλλ€. κ·Έ λμ , μ½λμμ
#pragma
λ₯Ό μ¬μ©νλ€.
<stdint>
μ μ μλ C++11 μ΄ν μΆκ°λ νλ€μ μ¬μ©νλ€
-
bool
: λΆλ¦¬μΈν (bool
μ ν¬κΈ°λ₯Ό μ λλ‘ μΆμ ν΄μλ μλλ€). - TODO(μΊλ¦ν° κ΄λ ¨ μΆκ° νμ)
-
uint8_t
: 무λΆνΈ λ°μ΄νΈ (1 λ°μ΄νΈ). -
int8_t
: μ λΆνΈ λ°μ΄νΈ (1 λ°μ΄νΈ). -
uint16_t
: 무λΆνΈ "λ¨μ μshort" (2 λ°μ΄νΈ). -
int16_t
: μ λΆνΈ "λ¨μ μshort" (2 λ°μ΄νΈ). -
uint23_t
: 무λΆνΈ μ μ (4 λ°μ΄νΈ). -
int32_t
: μ λΆνΈ μ μ (4 λ°μ΄νΈ). -
uint64_t
: 무λΆνΈ "4λ°° λ¨μ΄quad word" (8 λ°μ΄νΈ). (Microsoftμ Window.hμWORD
λΌλ 16λΉνΈ 무λΆνΈ μ μμ 4λ°° ν¬κΈ°λ₯Ό κ°μμ μλ―Έ) -
int64_t
: μ λΆνΈ "4λ°° λ¨μ΄quad words" (8 λ°μ΄νΈ). -
float
: λ¨μ λ°λ κ³ μ μμμ (4 λ°μ΄νΈ). -
double
: 2λ°°μ λ°λ κ³ μ μμμ (8 λ°μ΄νΈ).
-
μ μ΄μ μ½λ μμ²΄κ° documentκ° λ μ μκ² μμ±νλΌ
// Bad: t = s + l - b; // Good: TotalLeaves = SmallLeaves + LargeLeaves - SmallAndLargeLeaves;
-
μλ―Έμλ μ£Όμμ μμ±νμ
// Bad: // increment Leaves ++Leaves; // Good: // we know there is another tea leaf ++Leaves;
-
μ½λλ₯Ό μ λλ‘ λͺ» μ§ κ±°μ μ£Όμμ λ£μ΄μ£Όμ§ λ§λΌ. μ°¨λΌλ¦¬ λ€μ μ½λλ₯Ό μ§λΌ.
// Bad: // total number of leaves is sum of // small and large leaves less the // number of leaves that are both t = s + l - b; // Good: TotalLeaves = SmallLeaves + LargeLeaves - SmallAndLargeLeaves;
-
μ½λμ λ΄μ©μ΄ μλ°λμ΄μλ μλλ€
// Bad: // never increment Leaves! ++Leaves; // Good: // we know there is another tea leaf ++Leaves;