LoadingтАж

Objective-C рдлреЙрд░реНрдореЗрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ Objective-C рдХреЛрдб рдлреЙрд░реНрдореЗрдЯрд░

рдЕрднреА рднреА iOS рдпрд╛ macOS рдХреЗ рд▓рд┐рдП Objective-C рдХреЛрдбрдмреЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдпрд╣ рдлреЙрд░реНрдореЗрдЯрд░ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдмреИрдХрдПрдВрдб рдкрд░ clang-format рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рддрд╛ рд╣реИ рдФрд░ рд╕реБрд╕рдВрдЧрдд рдЗрдВрдбреЗрдВрдЯреЗрд╢рди, рд╕реНрдкреЗрд╕рд┐рдВрдЧ рдФрд░ рдмреНрд░реЗрд╕ рдХреЗ рд╕рд╛рде рдкреЙрд▓рд┐рд╢ .m / .mm рдЖрдЙрдЯрдкреБрдЯ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рд▓реАрдЧреЗрд╕реА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ, рдбрд┐рдлреНрд╕ рдХреЛ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдФрд░ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдЯреВрд▓рдЪреЗрди рдХреЛ рдЫреБрдП рдмрд┐рдирд╛ рдЯреАрдо-рд╡реНрдпрд╛рдкреА рд╢реИрд▓реА рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ред

рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ

  • Objective-C рдФрд░ Objective-C++ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЗрдВ (`.m`, `.mm`) рдПрдХ рдХреНрд▓рд┐рдХ рдореЗрдВ рдлрд╝реЙрд░реНрдореЗрдЯ рдХрд░реЗрдВ
  • LLVM рдХреЗ clang-format рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд, рдкреВрд░реНрд╡рд╛рдиреБрдореЗрдп рдФрд░ рдЙрджреНрдпреЛрдЧ-рдорд╛рдирдХ рдлрд╝реЙрд░реНрдореЗрдЯрд┐рдВрдЧ
  • рдСрдкрд░реЗрдЯрд░реЛрдВ, рдореЗрдердб рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдФрд░ рдореИрд╕реЗрдЬ рднреЗрдЬрдиреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╕реНрдкреЗрд╕ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдХрд░рддрд╛ рд╣реИ
  • рдЗрдВрдЯрд░рдлреЗрд╕, рдЗрдореНрдкреНрд▓реАрдореЗрдВрдЯреЗрд╢рди рдФрд░ рдХрдВрдЯреНрд░реЛрд▓-рдлреНрд▓реЛ рдХреЗ рд▓рд┐рдП рд╕реБрд╕рдВрдЧрдд рдмреНрд░реЗрд╕ рд╕реНрдЯрд╛рдЗрд▓ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ
  • рдЗрдореНрдкреЛрд░реНрдЯ рдХреЛ рд╕рд╛рдл рдФрд░ рд╕рдореВрд╣реАрдХреГрдд рд░рдЦрддрд╛ рд╣реИ, рд╣реЗрдбрд░ рдФрд░ рд╕реНрд░реЛрдд рдХреЛ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдмрдирд╛рддрд╛ рд╣реИ
  • рд▓реАрдЧреЗрд╕реА Objective-C рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕, рдорд┐рд╢реНрд░рд┐рдд Swift/ObjC рдРрдкреНрд╕ рдФрд░ рддреНрд╡рд░рд┐рдд рдкреНрд░реА-PR рд╕рдлрд╛рдИ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░реАрди
  • UI рдХреЛ рдЙрддреНрддрд░рджрд╛рдпреА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдордЖрдЙрдЯ рдФрд░ рд╕рд╛рдЗрдЬ рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░-рд╕рдорд░реНрдерд┐рдд рдирд┐рд╖реНрдкрд╛рджрди

ЁЯЫая╕П Objective-C рдХреЛрдб рдХреЛ рдХреИрд╕реЗ рдлрд╝реЙрд░реНрдореЗрдЯ рдХрд░реЗрдВ for objectivec-formatter

1

1. рдЕрдкрдирд╛ рдХреЛрдб рдкреЗрд╕реНрдЯ рдпрд╛ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ

рдЕрдкрдирд╛ Objective-C / Objective-C++ рд╕реНрд░реЛрдд рдПрдбрд┐рдЯрд░ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ рдпрд╛ `.m` / `.mm` рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбреНрд░реИрдЧ-рдПрдВрдб-рдбреНрд░реЙрдк рдХрд░реЗрдВред рдЖрдк рд╣реЗрдбрд░ рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рдХреЛ рднреА рддреНрд╡рд░рд┐рдд рд╕рдлрд╛рдИ рдХреЗ рд▓рд┐рдП рдкреЗрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

2

2. рдлрд╝реЙрд░реНрдореЗрдЯрд░ рдЪрд▓рд╛рдПрдВ

**рдлрд╝реЙрд░реНрдореЗрдЯ** рдмрдЯрди рджрдмрд╛рдПрдВред рдЖрдкрдХрд╛ рдХреЛрдб рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдПрдВрдбрдкреЙрдЗрдВрдЯ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ clang-format Objective-C рд╕реНрдЯрд╛рдЗрд▓ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдЪрд▓рддрд╛ рд╣реИред рдлрд╝реЙрд░реНрдореЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкрд░рд┐рдгрд╛рдо рд╕реЗрдХрдВрдбреЛрдВ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред

3

3. рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВ, рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдХрдорд┐рдЯ рдХрд░реЗрдВ

рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВ, рдлрд┐рд░ рдЗрд╕реЗ рд╡рд╛рдкрд╕ Xcode рдпрд╛ рдЕрдкрдиреЗ рдПрдбрд┐рдЯрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВред рд╕рд╛рдл рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрдорд┐рдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЖрдкрдХреЗ рдбрд┐рдлреНрд╕ рд╡реНрд╣рд╛рдЗрдЯрд╕реНрдкреЗрд╕ рдХреЗ рдмрдЬрд╛рдп рд▓реЙрдЬрд┐рдХ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд░рд╣реЗрдВред

рддрдХрдиреАрдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдПрдВ

рд╕рдорд░реНрдерд┐рдд рдЗрдирдкреБрдЯ

рд░реЛрдЬрдорд░реНрд░рд╛ рдХреЗ Objective-C / Objective-C++ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд┐рддред

рдкреНрд░рдХрд╛рд░рдЙрджрд╛рд╣рд░рдгрдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ
.m рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЗрдВрд╡реНрдпреВ рдХрдВрдЯреНрд░реЛрд▓рд░, рдореЙрдбрд▓, рдореИрдиреЗрдЬрд░рдЕрдкрд▓реЛрдб рдФрд░ рдкреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рддред
.mm Objective-C++ рдлрд╝рд╛рдЗрд▓реЗрдВC++ рдХреЛ Cocoa API рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛clang-format рдХреЗ Objective-C++ рд╕рдорд░реНрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝реЙрд░реНрдореЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рд╣реЗрдбрд░ рд╕реНрдирд┐рдкреЗрдЯреНрд╕@interface рдмреНрд▓реЙрдХ, рдкреНрд░реЛрдЯреЛрдХреЙрд▓, рд╢реНрд░реЗрдгрд┐рдпрд╛рдБрд╕рдлрд╛рдИ рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд░ рдХреЛрдб рд╕реАрдзреЗ рдПрдбрд┐рдЯрд░ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ (рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб `.m` / `.mm` рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ)ред

рдлрд╝реЙрд░реНрдореЗрдЯрд░ рдЗрдВрдЬрди

рдлрд╝реЙрд░реНрдореЗрдЯрд░ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдмреИрдХрдПрдВрдб рдкрд░ clang-format рдХреЛ рд╕реМрдВрдкрддрд╛ рд╣реИред

рдкрд╣рд▓реВрд╡рд┐рд╡рд░рдг
рдЗрдВрдЬрдиLLVM clang-format (Objective-C / Objective-C++)
рдирд┐рд╖реНрдкрд╛рджрди рдореЙрдбрд▓рдПрдХ рд╕рдорд░реНрдкрд┐рдд `/api/objectivec-formatter` рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░-рд╕рдорд░реНрдерд┐рдд
рдЯрд╛рдЗрдордЖрдЙрдЯрдкреНрд░рддрд┐ рдЕрдиреБрд░реЛрдз ~25 рд╕реЗрдХрдВрдб рд╕реБрд░рдХреНрд╖рд╛ рдЯрд╛рдЗрдордЖрдЙрдЯ
рдкреБрдирдГ рд╕реНрд╡рд░реВрдкрдг рдХреНрд╖реЗрддреНрд░рд╡реНрд╣рд╛рдЗрдЯрд╕реНрдкреЗрд╕, рдЗрдВрдбреЗрдВрдЯреЗрд╢рди, рдмреНрд░реЗрд╕рд┐рдЬрд╝, рдХреБрдЫ рдЖрдпрд╛рдд рд▓реЗрдЖрдЙрдЯ
рдЕрд░реНрдерд╢рд╛рд╕реНрддреНрд░рдХреЛрдб рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛рддрд╛тАФрдХреЗрд╡рд▓ рд▓реЗрдЖрдЙрдЯ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдЕрддреНрдпрдзрд┐рдХ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдпрд╛ рдорд╛рд▓рд┐рдХрд╛рдирд╛ рдХреЛрдбрдмреЗрд╕ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рднреА рдСрдирд▓рд╛рдЗрди рдЯреВрд▓ рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ CI рдореЗрдВ рдпрд╛ рдЕрдкрдиреА рдорд╢реАрди рдкрд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ clang-format рдЪрд▓рд╛рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВред

рд╢реИрд▓реА рдФрд░ рд▓реЗрдЖрдЙрдЯ

рдХреЛрдб рдПрдХ рд╕реНрдерд┐рд░ clang-format рд╢реИрд▓реА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореБрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╢реНрд░реЗрдгреАрдХреНрдпрд╛ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рд╣реИ?рдпрд╣ рдХреНрдпреЛрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ
рд╡рд┐рдзрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░`-` рдХреЗ рдЖрд╕рдкрд╛рд╕ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди, рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░, рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рдкреЙрдЗрдВрдЯрд░реНрд╕рд╣реЗрдбрд░ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╡рд┐рдзрд┐ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рд╕реНрдХреИрди рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред
рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдХреЗ рдмрд╛рдж рд░рд┐рдХреНрдд рд╕реНрдерд╛рди, рдХреЛрд▓рди рдХреЗ рдЖрд╕рдкрд╛рд╕ рдФрд░ рдиреЗрд╕реНрдЯреЗрдб рдХреЙрд▓ рдореЗрдВрдЧрд╣рд░рд╛рдИ рд╕реЗ рдиреЗрд╕реНрдЯреЗрдб `-[obj doSomething:withOption:]` рдХреЙрд▓ рдХреА рдкрдардиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг-рдкреНрд░рд╡рд╛рд╣`@interface`, `@implementation`, `if`, `for`, `while` рдХреЗ рд▓рд┐рдП рдмреНрд░реЗрд╕ рдкреНрд▓реЗрд╕рдореЗрдВрдЯрдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╢реИрд▓реА рдмрд╣рд╛рд╡ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред
рдЖрдпрд╛рдд`#import` рдФрд░ `#include` рдХреЗ рд▓рд┐рдП рд╕рдореВрд╣реАрдХрд░рдг рдФрд░ рд░рд┐рдХреНрдд рд╕реНрдерд╛рдирдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреЛ рд╕рд╛рдл-рд╕реБрдерд░рд╛ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рд╡рд┐рд▓рдп рд╕рдВрдШрд░реНрд╖реЛрдВ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред
рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдФрд░ рд╕рдВрд░реЗрдЦрдгрдмреНрд▓реЙрдХ, рд╕реНрд╡рд┐рдЪ рдФрд░ рдиреЗрд╕реНрдЯреЗрдб рд╕реНрдХреЛрдк рдХреЗ рд▓рд┐рдП рдПрдХрд╕рдорд╛рди рдЗрдВрдбреЗрдВрдЯреЗрд╢рдирддреНрд╡рд░рд┐рдд рдореИрдиреНрдпреБрдЕрд▓ рд╕рдВрдкрд╛рджрди рд╕реЗ рдЧрд▓рдд рд╕рдВрд░реЗрдЦрд┐рдд рдмреНрд▓реЙрдХреНрд╕ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

рд╕реАрдорд╛рдПрдБ рдФрд░ рдкреНрд░рджрд░реНрд╢рди

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ Objective-C рдРрдкреНрд╕ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЖрдХрд╛рд░рд┐рдд, рдЖрдкрдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдлреНрд░реАрдЬрд╝ рдХрд┐рдП рдмрд┐рдирд╛ред

рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░рдЕрдиреБрдорд╛рдирд┐рдд рд╕реАрдорд╛рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ
рдЪрд┐рдкрдХрд╛рдпрд╛ рдЧрдпрд╛ рд╕реНрд░реЛрдд~2 MB рдкрд╛рдардмреИрдХрдПрдВрдб рдХреЛ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд▓рд╛рдЧреВ рдХрдареЛрд░ рд╕реАрдорд╛ред
рдЕрдкрд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓~5 MBрдЯреВрд▓ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП `maxFileSizeBytes` рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рддред
рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд▓рдВрдмрддрд╛< 1тАУ2 sрдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░, рдиреЗрдЯрд╡рд░реНрдХ рд╡рд┐рд▓рдВрдмрддрд╛ рдФрд░ рд╕рд░реНрд╡рд░ рд▓реЛрдб рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рд╡рд┐рдлрд▓рддрд╛ рдореЛрдбрдЯрд╛рдЗрдордЖрдЙрдЯ / рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рд╛рдлрд╝ рддрд░реАрдХреЗ рд╕реЗ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдмрдЬрд╛рдп UI рдХреЛ рд▓рдЯрдХрд╛рдП рд░рдЦрдиреЗ рдХреЗред

рдЧреЛрдкрдиреАрдпрддрд╛ рдореЙрдбрд▓

рдХреЗрд╡рд▓ рдлрд╝реЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░-рд╕рдорд░реНрдерд┐рдд, рдХреНрд╖рдгрд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдгред

рдкрд╣рд▓реВрд╡реНрдпрд╡рд╣рд╛рд░
рдкрд░рд┐рд╡рд╣рдирдХреЛрдб HTTPS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдлрд╝реЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдВрдЧреНрд░рд╣рдгрдХреНрд╖рдгрд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд░рд╛рджрд╛: рдЗрдирдкреБрдЯ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ред
рдЧреБрдкреНрдд рдЬрд╛рдирдХрд╛рд░реАрдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдСрдирд▓рд╛рдЗрди рдЯреВрд▓ рдореЗрдВ API рдХреБрдВрдЬрд┐рдпрд╛рдБ, рдЯреЛрдХрди, рдпрд╛ рдкреНрд░реЛрдбрдХреНрд╢рди рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕рдЗрд╕ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧреИрд░-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рддреНрд╡рд░рд┐рдд рд╕рдлрд╝рд╛рдИ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВ; CI рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдлрд╝реЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рд░рдЦреЗрдВред

рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди clang-format Objective-C рдХреЗ рд▓рд┐рдП

рджреИрдирд┐рдХ рд╡рд┐рдХрд╛рд╕ рдФрд░ CI рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рд╕реНрдерд╛рдиреАрдп рдЯреВрд▓рдЪреЗрди рдореЗрдВ clang-format Objective-C рдХреЛрдб рдХреЛ рд╕реБрд╕рдВрдЧрдд рд░рдЦрдиреЗ рдХрд╛ рдорд╛рдирдХ рддрд░реАрдХрд╛ рд╣реИред

macOS / ЁЯРз Linux

рдПрдХрд▓ `.m` рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЙрд╕реА рд╕реНрдерд╛рди рдкрд░ рдлрд╝реЙрд░реНрдореЗрдЯ рдХрд░реЗрдВ

clang-format -i MyViewController.m

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ рд╢реИрд▓реА (рдЬреИрд╕реЗ, `.clang-format` рд╕реЗ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд┐рд╕реНрдХ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреБрдирдГ рд▓рд┐рдЦрддрд╛ рд╣реИред

рдлрд╝рд╛рдЗрд▓ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдлрд╝реЙрд░реНрдореЗрдЯ рдХрд┐рдП рдЧрдП рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХрд░реЗрдВ

clang-format MyViewController.m

рдлрд╝реЙрд░реНрдореЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб stdout рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рдЕрдВрддрд░ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░ рд╕рдХреЗрдВред

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рднреА Objective-C рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдлрд╝реЙрд░реНрдореЗрдЯ рдХрд░реЗрдВ

find . -name "*.m" -o -name "*.mm" | xargs clang-format -i

рдЖрдкрдХреЗ рдкреВрд░реЗ Objective-C / Objective-C++ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рд╕реБрд╕рдВрдЧрдд рдлрд╝реЙрд░реНрдореЗрдЯрд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

Windows

рд╣реЗрдбрд░ рдпрд╛ рдЗрдореНрдкреНрд▓реАрдореЗрдВрдЯреЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдлрд╝реЙрд░реНрдореЗрдЯ рдХрд░реЗрдВ

clang-format.exe -i MyClass.h

рдЖрдкрдХреА рдЪреБрдиреА рд╣реБрдИ clang-format рд╢реИрд▓реА рдХреЗ рд╕рд╛рде рд╣реЗрдбрд░ рдХреЛ рдЙрд╕реА рд╕реНрдерд╛рди рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдПрдБ

forfiles /S /M *.m /C "cmd /c clang-format.exe -i @file"

рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ Objective-C рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдмреИрдЪ рдлрд╝реЙрд░реНрдореЗрдЯрд┐рдВрдЧред

рдЕрдкрдиреА рдЯреАрдо рдХреА рд╢реИрд▓реА рдХреЛ рд░реЗрдкреЛ рдХреА рд░реВрдЯ рдореЗрдВ рдПрдХ `.clang-format` рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВ, рдлрд┐рд░ рддреНрд╡рд░рд┐рдд рдПрдХ-рдмрд╛рд░ рдХреЗ рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╡реЗрдм рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд, рд░реЗрдкреЛ-рд╡реНрдпрд╛рдкреА рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп clang-format рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ

iOS / macOS рдРрдк рд╡рд┐рдХрд╛рд╕

рдирдП рд╕реНрд╡рд┐рдлреНрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ Objective-C рдРрдкреНрд╕ рдХреЛ рд░рдЦрд░рдЦрд╛рд╡ рдпреЛрдЧреНрдп рдмрдирд╛рдП рд░рдЦреЗрдВред

  • рдкреНрд░рдореБрдЦ рд░рд┐рдлреИрдХреНрдЯрд░ рд╕реЗ рдкрд╣рд▓реЗ рдкреБрд░рд╛рдиреЗ рд╡реНрдпреВ рдХрдВрдЯреНрд░реЛрд▓рд░ рдФрд░ рдореЙрдбрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╕рд╛рдл рдХрд░реЗрдВред
  • рд╡рд░рд┐рд╖реНрда рдФрд░ рдХрдирд┐рд╖реНрда Objective-C рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдорд┐рд╢реНрд░рд┐рдд рдЯреАрдо рдореЗрдВ рд╕реБрд╕рдВрдЧрдд рд╢реИрд▓реА рд▓рд╛рдЧреВ рдХрд░реЗрдВред
  • рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рд╢реЛрд░рдЧреБрд▓ рд╡рд╛рд▓реЗ рдЕрдВрддрд░реЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд┐рдЯ рд╕реЗ рдкрд╣рд▓реЗ рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдЪрд▓рд╛рдПрдВред
@interface MyViewController : UIViewController
@property(nonatomic, strong) NSString *titleText;
@end

@implementation MyViewController
- (void)viewDidLoad {
[super viewDidLoad];NSLog(@"Loaded: %@",_titleText);}
@end

рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рддреИрдпрд╛рд░реА

рд╕рдореАрдХреНрд╖рд╛ рдЪрд░реНрдЪрд╛рдУрдВ рдХреЛ рддрд░реНрдХ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдХреЛ рдкреНрд░реА-рдлреНрд▓рд╛рдЗрдЯ рдЪрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

  • рд╡реНрд╣рд╛рдЗрдЯрд╕реНрдкреЗрд╕ рд╢реЛрд░ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдЦреЛрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрджрд▓реА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ рдлреЙрд░реНрдореЗрдЯрд░ рдЪрд▓рд╛рдПрдВред
  • рдмреНрд░реЗрд╕ рд╢реИрд▓реА рдФрд░ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЛ рд╕реНрдерд┐рд░ рдХрд░рдХреЗ рдбрд┐рдлреНрд╕ рдХреЛ рдЫреЛрдЯрд╛ рдФрд░ рд╕рдореАрдХреНрд╖рд╛ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛рдПрдВред
  • рдПрдХрд▓ clang-format рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЛ рд╕реМрдВрдкрдХрд░ рд╢реИрд▓реА рдмрд╣рд╕реЛрдВ рдХреЛ рдХрдо рдХрд░реЗрдВред
// Before review: inconsistent spacing
if(showAlert){[self showAlertWithMessage:message];}

// After formatting
if (showAlert) {
  [self showAlertWithMessage:message];
}

тЭУ Frequently Asked Questions

ЁЯЫая╕ПрдЕрдВрджрд░реВрдиреА рд░реВрдк рд╕реЗ рдХрд┐рд╕ рдлреЙрд░реНрдореЗрдЯрд░ рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?

рдпрд╣ рдЯреВрд▓ LLVM рдХреЗ `clang-format` рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ C, C++, Objective-C, Objective-C++ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдлреЙрд░реНрдореЗрдЯрд░ рд╣реИред рдЖрдкрдХрд╛ рдХреЛрдб рдПрдХ рд╕реНрдерд┐рд░ Objective-C рд╢реИрд▓реА рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкрд╛рд░реНрд╕ рдФрд░ рдкреБрдирд░реНрдореБрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

ЁЯУДрдХреМрди рд╕реА рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ?

рдЕрдкрд▓реЛрдбрд░ `.m` рдФрд░ `.mm` рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИред рдЖрдк рдЕрднреА рднреА рд╣реЗрдбрд░ рд╕рд╛рдордЧреНрд░реА (`.h`) рдХреЛ рд╕реАрдзреЗ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдл рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдЕрднреА рдХреЗ рд▓рд┐рдП `.m` / `.mm` рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИрдВред

ЁЯУПрдХреНрдпрд╛ рдореИрдВ UI рд╕реЗ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдпрд╛ рдЕрдзрд┐рдХрддрдо рд▓рд╛рдЗрди рдЪреМрдбрд╝рд╛рдИ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдПрдХ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд Objective-C рд╢реИрд▓реА рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде clang-format рдЪрд▓рд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ `IndentWidth` рдпрд╛ `ColumnLimit` рдЬреИрд╕реЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╕реВрдХреНрд╖реНрдо рдирд┐рдпрдВрддреНрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдПрдХ `.clang-format` рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдпрд╛ CI рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ clang-format рдЪрд▓рд╛рдПрдВред

ЁЯФРрдХреНрдпрд╛ рдореЗрд░рд╛ рд╕реНрд░реЛрдд рдХреЛрдб рд╕рдВрдЧреНрд░рд╣реАрдд рдпрд╛ рд▓реЙрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?

рдХреЛрдб HTTPS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИред рдлрд┐рд░ рднреА, рдПрдХ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдХрд┐рд╕реА рднреА рдСрдирд▓рд╛рдЗрди рдЯреВрд▓ рдореЗрдВ рдЧреБрдкреНрдд рдЬрд╛рдирдХрд╛рд░реА, рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕, рдпрд╛ рдЕрддреНрдпрдзрд┐рдХ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВред

тЪая╕ПрдХреНрдпрд╛ рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдХрднреА рдореЗрд░реЗ рдХреЛрдб рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓ рд╕рдХрддреА рд╣реИ?

clang-format рд╡реНрд╣рд╛рдЗрдЯрд╕реНрдкреЗрд╕ рдФрд░ рд▓реЗрдЖрдЙрдЯ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ рдФрд░ рд╢рдмреНрджрд╛рд░реНрде рдХреЛ рдирд╣реАрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдкрдХрд╛ рдХреЛрдб рдЕрд╕рд╛рдорд╛рдиреНрдп рдореИрдХреНрд░реЛ рдЯреНрд░рд┐рдХреНрд╕ рдпрд╛ рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдЯреВрд▓рд┐рдВрдЧ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрд╢рд╛ рдлреЙрд░реНрдореЗрдЯрд░ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдмреНрд░рд╛рдВрдЪ рдпрд╛ рдмреИрдХрдЕрдк рдкрд░ рдЪрд▓рд╛рдПрдВ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрдиреЗ рдХреА рдкреБрд╖реНрдЯрд┐ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░реЗрдВред

ЁЯЪАрдореБрдЭреЗ рдЗрд╕ рд╡реЗрдм рдЯреВрд▓ рдмрдирд╛рдо рд╕реНрдерд╛рдиреАрдп clang-format рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рддреНрд╡рд░рд┐рдд рд╕рдлрд╛рдИ, рдПрдХ-рдмрд╛рд░ рдХреА рдлрд╝рд╛рдЗрд▓реЛрдВ, рдпрд╛ рдЬрдм рдЖрдк clang-format рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рдорд╢реАрди рдкрд░ рд╣реЛрдВ, рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╡реЗрдм рдлреЙрд░реНрдореЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдкреВрд░реНрдг рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдФрд░ рд╢реИрд▓реА рдкреНрд░рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд╛рдЭрд╛ `.clang-format` рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╕рдВрдкрд╛рджрдХ рдФрд░ CI рдореЗрдВ clang-format рд░рдЦреЗрдВред

Pro Tips

Best Practice

рдмреНрд░реЗрд╕ рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдХреЗ рдмрдЬрд╛рдп рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд┐рдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдлреЙрд░реНрдореЗрдЯрд░ рдЪрд▓рд╛рдПрдВред

CI Tip

рдЕрдкрдиреЗ CI рдореЗрдВ рдПрдХ `clang-format` рдЪрд░рдг рдЬреЛрдбрд╝реЗрдВ (рдпрд╛ рдкреНрд░реА-рдХрдорд┐рдЯ рд╣реБрдХ) рддрд╛рдХрд┐ рд╕реНрдЯрд╛рдЗрд▓ рд╕рдВрдмрдВрдзреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдХреЛрдб рд░рд┐рд╡реНрдпреВ рддрдХ рдХрднреА рди рдкрд╣реБрдВрдЪреЗрдВред

Best Practice

рдЗрдореНрдкреЛрд░реНрдЯреНрд╕ рдХреЛ рд╕реЙрд░реНрдЯреЗрдб рдФрд░ рдЧреНрд░реБрдк рдХрд┐рдпрд╛ рд░рдЦреЗрдВ; рдЗрд╕рд╕реЗ рдХрдИ рдЯреАрдордореЗрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╣реА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЫреВрдиреЗ рдкрд░ рдорд░реНрдЬ рдХреЙрдиреНрдлреНрд▓рд┐рдХреНрдЯ рдХрдо рд╣реЛрддреЗ рд╣реИрдВред

Best Practice

рдХрд┐рд╕реА рднреА рдСрдирд▓рд╛рдЗрди рдлреЙрд░реНрдореЗрдЯрд░ рдореЗрдВ рдкреНрд░реЛрдбрдХреНрд╢рди рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдпрд╛ рдЯреЛрдХрди рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВред рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдХреЛрдб рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рдЕрдВрджрд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ clang-format рдЪрд▓рд╛рдПрдВред

Additional Resources

Other Tools