- Π‘ΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΡΠΈΠ»Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π°
- ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
- ΠΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ
- ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ
- Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
- ΠΠ±ΡΠΈΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π°
ΠΠ΄Π΅ΡΡ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° ΡΠ·ΡΠΊΠ΅ C/C++, ΠΏΡΠΈΠ½ΡΡΡΠ΅ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΡ Π½Π΅ΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ Π²ΠΎΠ΄Π½ΡΡ /ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠΎΠ², ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΡ Π² Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠΈΠΈ Π½Π΅ΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠΎΠ² ΠΈ ΠΈΡ ΡΠΈΡΡΠ΅ΠΌ ΠΠ°Π»ΡΠ½Π΅Π²ΠΎΡΡΠΎΡΠ½ΠΎΠ³ΠΎ Π€Π΅Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π£Π½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΠ° (ΠΠΠ€Π£).
ΠΠ»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΠ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π½ΠΈΠΆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠΉ.
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊ Π²ΠΎΠΏΡΠΎΡ, ΠΎΡΠ²Π΅Ρ Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π·Π΄Π΅ΡΡ Π½Π΅ ΠΎΠΏΠΈΡΠ°Π½, ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΡΠΉΡΠ΅ΡΡ Π·Π΄ΡΠ°Π²ΡΠΌ ΡΠΌΡΡΠ»ΠΎΠΌ, ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π½ΡΠ°Π·ΠΈΠ΅ΠΉ ΠΈ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈΠ΅ΠΌ Π»ΡΠ΄Π΅ΠΉ, ΡΠΈΡΠ°ΡΡΠΈΡ Π²Π°Ρ ΠΊΠΎΠ΄.
-
CamelCase -- ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ Π±ΡΠΊΠ²Ρ. ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠ»ΠΎΠ²ΠΎ Π² ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ°ΠΊΠΆΠ΅ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ Π±ΡΠΊΠ²Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: MyName.
-
camelCase -- ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΏΡΠΎΠΏΠΈΡΠ½ΠΎΠΉ Π±ΡΠΊΠ²Ρ. ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠ»ΠΎΠ²ΠΎ Π² ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ Π±ΡΠΊΠ²Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: myName.
-
under_score -- ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΏΡΠΎΠΏΠΈΡΠ½ΠΎΠΉ Π±ΡΠΊΠ²Ρ. ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠ»ΠΎΠ²ΠΎ ΠΎΡΠ΄Π΅Π»Π΅Π½ΠΎ ΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ (Β«_Β») ΠΈ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΏΡΠΎΠΏΠΈΡΠ½ΠΎΠΉ Π±ΡΠΊΠ²Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: my_name.
-
ALL_CAPITALS -- Π²ΡΠ΅ Π±ΡΠΊΠ²Ρ Π² ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ²Π»ΡΡΡΡΡ Π·Π°Π³Π»Π°Π²Π½ΡΠΌΠΈ. ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠ»ΠΎΠ²ΠΎ ΠΎΡΠ΄Π΅Π»Π΅Π½ΠΎ ΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ (Β«_Β»). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: MY_NAME.
- ΠΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ ΡΠ°ΠΉΠ»Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² ΡΡΠΈΠ»Π΅ under_score.
- Π€Π°ΠΉΠ»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² ΡΡΠΈΠ»Π΅ CamelCase (ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ROS Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠΌ ΠΊΠ»Π°ΡΡΡ) ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ .msg. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
MyMessage.msg
- Π€Π°ΠΉΠ»Ρ Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ .cpp. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
my_source_file.cpp
- ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ .h. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
my_header_file.h
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ»Π°ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π°. ΠΠ΅ ΡΡΠΎΠΈΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ Ρ Π½Π°Π·Π²Π°Π½ΠΈΡΠΌΠΈ source.cpp, new_file.h ΠΈΠ»ΠΈ awesome_util.h. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°ΠΉΠ» Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ main, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ Π»ΠΈΠ±ΠΎ main.cpp, Π»ΠΈΠ±ΠΎ module_name.cpp.
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² ΡΡΠΈΠ»Π΅ under_score.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π°, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΠΈΠ΅ ΡΡΡΠ½ΠΎΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π² ΡΠ΅Π±Π΅ Ρ ΡΠ°Π½ΠΈΡ ΡΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ ΠΈ ΡΡΠ΅ΡΡΠΈΠΊΠΈ Π² ΡΠΈΠΊΠ»Π°Ρ .
int message_id;
int object_count;
int contour_num;
- ΠΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΈ ΡΡΡΠ»ΠΊΠΈ ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΡΡΠΈΡΠ°Π½Π½ΡΠ΅ ΠΈΠ· ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
const MyClass* object_ptr;
const MyClass& instance = other_instance;
int window_height = cfg.read("window_height");
ΠΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ Π² ΡΡΠΈΠ»Π΅ ALL_CAPITALS. ΠΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
const int FRAME_OFFSET = 100;
const double size_ratio = cfg.read("size_ratio");
ΠΠ°Π±Π»ΠΈΠΊ ΠΏΠΎΠ»Ρ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ. ΠΡΠ°ΠΉΠ²Π΅Ρ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΠΊΡΠ΅Π΄ ΠΏΠΎΠ»Ρ ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ Π² ΡΡΠΈΠ»Π΅ under_score_ -- Ρ Π·Π°Π²Π΅ΡΡΠ°ΡΡΠΈΠΌ Π½ΠΈΠΆΠ½ΠΈΠΌ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΎΠΌ.
class TableInfo
{
public:
int selected_row;
/*...*/
private:
string table_name_;
string tablename_;
static Pool<TableInfo>* pool_;
};
ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠ°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΠ΅.
ΠΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ (class, struct, typedef, enum ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ²) ΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² ΡΡΠΈΠ»Π΅ CamelCase. ΠΠ±Π±ΡΠ΅Π²ΠΈΠ°ΡΡΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΌ Π±ΡΠΊΠ²Π°ΠΌΠΈ, ΠΊΡΠΎΠΌΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠΉ. ΠΡΠΈΠΌΠ΅Ρ ΠΈΠ· Google Style Guide:
// classes and structs
class UrlTable { /*...*/ };
class UrlTableTester { /*...*/ };
struct UrlTableProperties { /*...*/ };
// typedefs
typedef hash_map<UrlTableProperties *, string> PropertiesMap;
// enums
enum UrlTableErrors { /*...*/ };
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΊΠ»Π°ΡΡΠ°ΠΌ ΠΈΠΌΠ΅Π½Π°, ΠΎΡΡΠ°ΠΆΠ°ΡΡΠΈΠ΅ ΡΡΡΠ½ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ. ΠΠΌΡ ΠΊΠ»Π°ΡΡΠ° -- ΠΈΠΌΡ ΡΡΡΠ΅ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅.
Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ Π² ΡΡΠΈΠ»Π΅ under_score. ΠΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³Π»Π°Π³ΠΎΠ»Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
void get_name(int id) { /*...*/ }
class Runner
{
void run();
};
ΠΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ ΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² ΡΡΠΈΠ»Π΅ under_score.
using namespace my_namespace;
ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² ΡΡΠΈΠ»Π΅ CamelCase.
ΠΠΎΠ»Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² ΡΡΠΈΠ»Π΅ ALL_CAPITALS Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ ΠΈΠΌΠ΅Π½ (ΠΊΠΎΠ½ΡΡΠ°Π½Ρ Π² Π½Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ Π½Π΅ ΡΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ). ΠΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΠΌΡΡ ΡΠΈΠΏΠΎΠ² Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
enum Color
{
GREEN,
RED,
YELLOW,
};
enum VisionConstants {
FRAMES = 100,
POOL_SIZE = 2,
};
ΠΠΎΡΠΈΡ
ΠΎΠ½ΡΠΊΡ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΠΌ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ enum class
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΠΌΡΡ
ΡΠΈΠΏΠΎΠ², ΡΡΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ ΠΈΠΌΠ΅Π½. Π’Π°ΠΊΠΆΠ΅ ΠΎΡΠΏΠ°Π΄Π°Π΅Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΡΠΈΠ»Π΅ ALL_CAPITALS. ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ enum class
ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ»Π΅ΠΉ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ° (Π½Π΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ)Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΠΈΡΠ°ΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ»Ρ Π² ΡΡΠΈΠ»Π΅ CamelCase.
enum class Color
{
Red,
Green,
Blue,
};
Color line_color = Color::Red;
ΠΠ°ΠΊΡΠΎΡΡ ΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² ΡΡΠΈΠ»Π΅ ALL_CAPITALS.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±Π΅Π· Π½ΠΈΡ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
#ifdef SURFACE_VEHICLE
/* Π»ΡΡΡΠ΅ ΡΠ°ΠΊ Π½Π΅ Π΄Π΅Π»Π°ΡΡ */
#endif
- ΠΠ»ΠΈΠ½Π° ΡΡΡΠΎΠΊΠΈ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 120 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². (ΠΡΠΎΠ²Π΅ΡΡΡΡ Π½ΠΈΠΊΡΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ, ΡΠ΄Π°ΡΡ Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ Ρ ΡΠ°ΠΌΡΠΌ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΌ ΡΠΊΡΠ°Π½ΠΎΠΌ Π½ΠΎΡΡΠ±ΡΠΊΠ° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅.)
- ΠΠΌΠ΅ΡΡΠΎ ΡΠ°Π±ΡΠ»ΡΡΠΈΠΉ Π΄Π»Ρ ΠΎΡΡΡΡΠΏΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π΅Π»Ρ. ΠΡΡΡΡΠΏ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 4 ΠΏΡΠΎΠ±Π΅Π»Π°.
- ΠΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ΅ utf-8.
- ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΡΠ°Π²ΠΈΠΌ ΠΎΡΡΡΡΠΏ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ±Π΅Π» ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΊΡΡΠ²Π°ΡΡΠ΅ΠΉΡΡ ΠΊΡΡΠ³Π»ΠΎΠΉ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠ΅ΠΉΡΡ
- ΠΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΠΈΡΠ°ΡΡ "ΠΎΠ΄Π½ΠΎΡΡΡΠΎΡΠ½ΡΠ΅" ΡΡΠ½ΠΊΡΠΈΠΈ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΎΠ΄Π½Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΈ ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ Π² ΠΎΠ³ΠΎΠ²ΠΎΡΠ΅Π½Π½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΠΎΠΊΠΈ.
- ΠΠΎΡΠ»Π΅ ΡΠΏΠΈΡΠΊΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡ ΡΡΡΠΎΠΊΠΈ (Π° Π½Π΅ ΡΠΈΠ³ΡΡΠ½Π°Ρ ΡΠΊΠΎΠ±ΠΊΠ°)
int short_func() { return something; }
ReturnType ClassName::function_name(Type par_name1, Type par_name2)
{
do_something();
/*...*/
}
- ΠΡΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅ Π²Π»Π΅Π·Π°Π΅Ρ Π² ΠΎΠ³ΠΎΠ²ΠΎΡΠ΅Π½Π½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΠΎΠΊΠΈ, Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π»ΡΠ±ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°.
- ΠΠ΅ΡΠ΅Π½Π΅ΡΠ΅Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΎΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π΄Π²ΡΠΌΡ ΠΎΡΡΡΡΠΏΠ°ΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΎΡΠ΄Π΅Π»ΠΈΡΡ Π΅Π³ΠΎ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎ ΠΎΡ ΠΊΠΎΠ΄Π° ΡΡΠ½ΠΊΡΠΈΠΈ.
- ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ.
ReturnType ClassName::function_name(Type par_name1, Type par_name2,
Type par_name3, Type par_name4)
{
do_something();
/*...*/
}
ReturnType ClassName::function_name(
Type par_name1,
Type par_name2,
Type par_name3,
Type par_name4)
{
do_something();
/*...*/
}
do_something(
arg1, arg2, arg3);
do_something(arg1,
arg2, arg3);
do_something(arg1,
arg2,
arg3);
ΠΡΠΎΡΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°:
- ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΡΠ°Π²ΠΈΠΌ ΠΎΡΡΡΡΠΏ ΠΌΠ΅ΠΆΠ΄Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΎΡΠΊΡΡΠ²Π°ΡΡΠ΅ΠΉΡΡ ΠΊΡΡΠ³Π»ΠΎΠΉ ΡΠΊΠΎΠ±ΠΊΠΎΠΉ
- ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌ ΠΎΡΠΊΡΡΠ²Π°ΡΡΡΡΡΡ ΠΊΡΡΠ³Π»ΡΡ ΡΠΊΠΎΠ±ΠΊΡ ΠΏΠΎΡΠ»Π΅ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ
- Π ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°Ρ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΠΉ ΠΈ ΡΠΈΠΊΠ»ΠΎΠ² ΠΎΡΠΊΡΡΠ²Π°ΡΡΡΡΡΡ ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΡ ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ.
- Π€ΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΡΡΠ°Π²ΠΈΠΌ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²Π½ΡΡΡΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ.
- ΠΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ else if Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π±Π΅Π· ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ ΠΏΠΎΡΠ»Π΅ else.
if (condition) {
...
} else if (...) {
...
} else {
...
}
for (int i = 0; i < 10000; ++i) {
printf("I love you\n");
}
- case Π²Π½ΡΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° switch Π½Π΅ ΠΎΡΠ΄Π΅Π»ΡΡΡΡΡ ΠΎΡΡΡΡΠΏΠΎΠΌ
- ΠΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π½Π΅ ΡΡΠ°Π²ΠΈΡΡ ΡΠΊΠΎΠ±ΠΊΠΈ Π²Π½ΡΡΡΠΈ case, Π΅ΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ
- Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΡΡΠ΄ ΠΈΠ΄ΡΡΠΈΡ ΠΊΠ΅ΠΉΠ·ΠΎΠ² Π±Π΅Π· Π±ΡΠ΅ΠΉΠΊΠΎΠ² -- ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ
- default ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»Π΅Π½
switch(var) {
case 0: case 1: case 2: {
do();
break;
}
case 4: {
do_something_else();
break;
}
default: {
/*...*/
}
}
- Π‘ΡΠ°Π²ΠΈΠΌ ΠΏΡΠΎΠ±Π΅Π»Ρ Π²ΠΎΠΊΡΡΠ³ Π±ΠΈΠ½Π°ΡΠ½ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², ΠΊΡΠΎΠΌΠ΅
.
ΠΈ->
. Π ΡΠ»ΡΡΠ°Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°,
ΠΏΡΠΎΠ±Π΅Π» ΡΡΠ°Π²ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ Π½Π΅Π³ΠΎ. - Π‘ΡΠ°Π²ΠΈΠΌ ΠΏΡΠΎΠ±Π΅Π»Ρ Π² ΡΠ΅ΡΠ½Π°ΡΠ½ΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅
? :
. - Π½Π΅ ΡΡΠ°Π²ΠΈΠΌ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ½Π°ΡΠ½ΡΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ ΠΈ Π΅Π³ΠΎ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠΌ.
x = *p;
p = &x;
x = r.y;
x = r->y
y = x + z--;
y = x == 0 ? 1 : 0;
- ΠΡΠΊΡΡΠ²Π°ΡΡΠ°ΡΡΡ ΡΠΈΠ³ΡΡΠ½Π°Ρ ΡΠΊΠΎΠ±ΠΊΠ° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π½Π΅ΠΉΠΌΡΠΏΠ΅ΠΉΡΠ°
- ΠΡΡΡΡΠΏ Π²Π½ΡΡΡΠΈ Π½Π΅ΠΉΠΌΡΠΏΠ΅ΠΉΡΠ° Π½Π΅ Π΄Π΅Π»Π°Π΅ΡΡΡ
- Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π½Π΅ΠΉΠΌΡΠΏΠ΅ΠΉΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΊΡΡΠ²Π°Π΅ΠΌ Π² ΡΡΡΠΎΠΊΠ΅ Ρ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠ΅ΠΉΡΡ ΡΠΈΠ³ΡΡΠ½ΠΎΠΉ ΡΠΊΠΎΠ±ΠΊΠΎΠΉ
- ΠΠ΅ΠΉΠΌΡΠΏΠ΅ΠΉΡΡ Π½Π΅ ΠΎΡΠ΄Π΅Π»ΡΡΡΡΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π° ΠΏΡΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ, Π·Π°ΡΠΎ ΠΎΡΠ΄Π΅Π»ΡΡΡΡΡ Π΅ΠΉ ΠΎΡ Π²ΡΠ΅Π³ΠΎ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ.
namespace foo {
namespace bar {
namespace {
void foo() {
...
}
} // namespace
/*...code...*/
} // namespace bar
} // namespace foo
- ΠΠ΅ΡΠ΅Π½ΠΎΡ ΡΡΡΠΎΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΡΠΊΡΡΠ²Π°ΡΡΠ΅ΠΉΡΡ ΡΠΈΠ³ΡΡΠ½ΠΎΠΉ ΡΠΊΠΎΠ±ΠΊΠΎΠΉ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»Π΅Π½
- ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° Ρ ΠΏΠ°Π±Π»ΠΈΠΊ ΠΏΠΎΠ»Π΅ΠΉ
- ΠΠ»Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΠ»Π΅ΠΉ ΠΊΠ»Π°ΡΡΠ° ΠΎΡΡΡΡΠΏ Π½Π΅ Π΄Π΅Π»Π°Π΅ΡΡΡ.
class MyClass
{
public:
MyClass(): var_(0)
{
...
}
void foo() { ... }
protected:
void protected_method()
{
...
}
private:
int var_;
}
- ΠΠΈΡΠ΅ΠΌ ΡΠ»ΠΎΠ²ΠΎ
const
Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ Π΅Π³ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ. (Π Π΅ΡΡ ΠΎΠ± ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡ ΠΈ ΡΡΡΠ»ΠΊΠ°Ρ )
ΠΠΌΠ΅ΡΡΠΎ ΠΈΠ½ΠΊΠ»ΡΠ΄ Π³Π°ΡΠ΄ΠΎΠ² Π² Ρ
Π΅Π΄Π΅ΡΠ°Ρ
ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ #pragma once.
ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»Π΅Π½ Π½Π°Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄ΠΎΠ² Π²ΠΎΠ·Π²ΡΠ°ΡΠ°. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΡΠΎΡΠ΅Π½ΠΎ Π²Π΅Π·Π΄Π΅, ΠΊΡΠΎΠΌΠ΅ ΠΊΠΎΠ΄Π° Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΡΡΡΡΠΎΠΉΡΡΠ².
ΠΠΎΡΡΠΎΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΈΡΠ°ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΊΠΎΠ΄. Π ΠΈΠΌΠ΅Π½Π½ΠΎ:
- ΠΠΈΠΊΠ°ΠΊΠΈΡ "Π³ΠΎΠ»ΡΡ " ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ shared_ptr, unique_ptr ΠΈΠ»ΠΈ weak_ptr
- ΠΡΠ±ΠΎΠΉ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΠΉ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΌ
- ΠΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ (Π² Π΄ΡΡ
Π΅
finalize_smth()
) Π½ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ Π»ΠΈΠ±ΠΎ Π² SCOPE_EXIT, Π»ΠΈΠ±ΠΎ Π² Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° ΡΡΠ΅ΠΊΠ΅. - ΠΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π±ΡΠΎΡΠ°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°Ρ ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ°Ρ
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΡΡΠΊΡΡΡΡ Π² ΡΠΎΠΌ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π²ΡΠ΅ ΠΈΡ ΠΏΠΎΠ»Ρ Π±ΡΠ΄ΡΡ ΠΏΠ°Π±Π»ΠΈΠΊ ΠΈ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄ΡΡ "ΠΎΠ΄Π½ΠΎΡΡΡΠΎΡΠ½ΡΠΌΠΈ". ΠΠ½Π°ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡ.
- Π₯Π΅Π΄Π΅Ρ ΡΠ°ΠΉΠ» Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ
#pragma once
- ΠΠ°Π»Π΅Π΅ ΠΈΠ΄ΡΡ ΠΈΠ½ΠΊΠ»ΡΠ΄Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π²Π½Π΅ΡΠ½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΎΠ±Π΅ΡΠ½ΡΡΡΠ΅ Π² ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ.
- ΠΠ°Π»Π΅Π΅ ΠΈΠ΄ΡΡ ΠΈΠ½ΠΊΠ»ΡΠ΄Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΎΠ±Π΅ΡΠ½ΡΡΡΠ΅ Π² Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ
- ΠΠ°Π»Π΅Π΅ ΠΈΠ΄ΡΡ Π½Π΅ΠΉΠΌΡΠΏΠ΅ΠΉΡΡ ΠΈ ΠΊΠ»Π°ΡΡΡ
ΠΠ°ΠΏΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ using
Π² Ρ
Π΅Π΄Π΅ΡΠ°Ρ
!, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π°Π²ΠΎΠ΄ΠΈΡΡ Π² Π½ΠΈΡ
Π°Π»ΠΈΠ°ΡΡ Π΄Π»Ρ Π½Π΅ΠΉΠΌΡΠΏΠ΅ΠΉΡΠΎΠ².
// myclass.h
#pragma once
#include <iostream>
#include <vector>
#include <opencv/core.h>
#include <opencv/highgui.h>
#include <config_reader/yaml_reader.h>
#include "my_other_class.h"
#include "my_local_utils.h"
/*...class declaration... */
- Π .cpp ΡΠ°ΠΉΠ»Π΅ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ
using
, ΡΠ°ΠΊ ΠΈ Π°Π»ΠΈΠ°ΡΡ Π½Π΅ΠΉΠΌΡΠΏΠ΅ΠΉΡΠΎΠ².
// myclass.cpp
#include <vector>
#include "my_class.h"
using std::vector;
using namespace cv;
namespace msg = ros::geom_msgs;
- ΠΠΌΠ΅ΡΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ Π½Π΅ΠΉΠΌΡΠΏΠ΅ΠΉΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ:
static void foo() { ...}
static int global_var;
ΠΠΈΡΠ΅ΠΌ ΡΡΠΎ:
namespace {
void foo() { ...}
int global_var;
} // namespace
- Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΊΠ»Π°ΡΡΠ° Π²ΡΠ½ΠΎΡΠΈΠΌ ΠΈΠ· Ρ Π΅Π΄Π΅ΡΠ°. ΠΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ inline ΡΡΠ½ΠΊΡΠΈΠΈ.
- inline ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΡΡΠ°Π·Ρ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ°.
- ΠΡΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ Π΅Π³ΠΎ ΠΏΠΎΠ»Π΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ
const
Π² Π΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ - ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ»ΠΎΠ²ΠΎ
mutable
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ
explicit
ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠ΅ΠΌΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΈΠΌΠ΅ΡΡΠΈΠΌΠΈ ΡΠΎΠ²Π½ΠΎ 1 Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π±Π΅Π· Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
// myclass.h
...
class MyClass
{
public:
MyClass();
explicit MyClass(int a, int b = 0);
explicit MyClass(string name);
const Data& get_data() const;
inline void func()
{
/*...*/
}
};