我是这样格式化我的代码

这篇文章是我整理的一份代码格式化的东西, 和一份我正在用的clang-format的配置文件。

clang-format 之类的插件在 Xcode8 上已经不能用了,所以… 呵呵

一、前面的话

前段时间整理一系列公司的文档,写到代码编写规范和CodeReview规范中都提到代码格式化的问题。很多人都说能都自动化的步骤都应该通过自动化来解决,所以这个时候想到了以前一直舍不得用的clang-format。想起来还是有点惭愧,自从看了sunnyxx的《招聘一个靠谱的iOS》之后就仿佛也有了代码洁癖,但是一直也没有去整理自己的代码编写规范这些东西。后来看到了google的规范文档,感觉越来越想弄一下这个东西。

二、clang-format

clang-format
是一款Xcode的一个非常好用的插件。具体安装可以去GitHub查看官方的readme。

三、 install clang-format

官方的readme是英文的,由于我用上它和写这篇文章已经有一段时间了,我就简单的看着官方文档整理一下步骤吧!
原文地址

  1. 下载或者克隆这个文件
  2. 像运行普通项目一样运行一下
  3. cmd + q 完全退出一下Xcode
  4. 重新打开你的项目,应该会让你选择是否load这个插件。不要选skip。
  5. 没有第五,你已经装上这个插件了

四、How to init

在工程目录或者workspace目录下创建一个.clang-format文件



完成之后你会发现这个文件在你工程文件中是没有的。如果你在桌面上将任意文件改成.clang-format之后就会出现这个。

其实还好,只需要打开终端

显示隐藏文件

1
defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder

不显示隐藏文件

1
defaults write com.apple.finder AppleShowAllFiles -bool false && killall Finder

通过两句命令就可以打开了。这个时候你可以通过vim打开并且编辑,或者在刚刚在Xcode中创建的时候编辑,不过我通常都是通过sublime来编辑这些东西的。

这个只是一个配置文件,这个文件是可以随意拖动的。

由于公司目前的规范是我写的,所以我也直接把这个文件放在了根目录中

  1. 打开Finder
  2. cmd+shift+g
  3. 前往,前题是你刚过显示了隐藏文件,不然你看到的是很boring的内容
  4. 找到.clang-format文件,右键,,选择sublime text

五、How to config

这个就简单了,也没什么好说的,我的大概就是这个样子。

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# Custom options in the special build of clang-format (these are not standard options)
# IndentNestedBlocks: false
# AllowNewlineBeforeBlockParameter: false
Language: Cpp
# BasedOnStyle: Google
AccessModifierOffset: -1
ConstructorInitializerIndentWidth: 4
SortIncludes: false
AlignConsecutiveAssignments: true
AlignAfterOpenBracket: true
AlignEscapedNewlinesLeft: true
AlignOperands: false
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: true
AllowShortIfStatementsOnASingleLine: true
AllowShortFunctionsOnASingleLine: All
AllowShortLoopsOnASingleLine: true
AlwaysBreakAfterDefinitionReturnType: false
AlwaysBreakTemplateDeclarations: false
AlwaysBreakBeforeMultilineStrings: false
BreakBeforeBinaryOperators: None
BreakBeforeTernaryOperators: false
BreakConstructorInitializersBeforeComma: false
BinPackArguments: true
BinPackParameters: true
ColumnLimit: 0
ConstructorInitializerAllOnOneLineOrOnePerLine: true
DerivePointerAlignment: false
ExperimentalAutoDetectBinPacking: false
IndentCaseLabels: true
IndentWrappedFunctionNames: false
IndentFunctionDeclarationAfterType: false
MaxEmptyLinesToKeep: 2
KeepEmptyLinesAtTheStartOfBlocks: false
NamespaceIndentation: Inner
ObjCBlockIndentWidth: 4
ObjCSpaceAfterProperty: true
ObjCSpaceBeforeProtocolList: true
PenaltyBreakBeforeFirstCallParameter: 10000
PenaltyBreakComment: 300
PenaltyBreakString: 1000
PenaltyBreakFirstLessLess: 120
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 200
PointerAlignment: Right
SpacesBeforeTrailingComments: 1
Cpp11BracedListStyle: true
Standard: Auto
IndentWidth: 4
TabWidth: 8
UseTab: Never
BreakBeforeBraces: Custom
BraceWrapping:
AfterClass: true
AfterControlStatement: false
AfterEnum: false
AfterFunction: false
AfterNamespace: true
AfterObjCDeclaration: true
AfterStruct: false
AfterUnion: false
BeforeCatch: false
BeforeElse: false
IndentBraces: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
SpacesInAngles: false
SpaceInEmptyParentheses: false
SpacesInCStyleCastParentheses: false
SpaceAfterCStyleCast: false
SpacesInContainerLiterals: true
SpaceBeforeAssignmentOperators: true
ContinuationIndentWidth: 4
CommentPragmas: '^ IWYU pragma:'
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
SpaceBeforeParens: ControlStatements
DisableFormat: false

英文版 Clang-Format Style Options 自己定制的话,看看这个吧!
ClangFormat语法1.0 简书上有一个中文版的,好像不是特别完整,一般自己玩玩也是够了.

六、How to use

  1. Xcode-Edit-ClangFormat-File选项
  2. 选择你想要格式化的代码,然后Edit-ClangFormat-确认File为勾选状态-Format Selected Text

设置快捷键

系统偏好设置-键盘-快捷键-应用快捷键- +

我自己设置的是option,

七、Ending

作为代码编写者,编写让自己舒服,让reviewer舒服的代码是我们的责任, 在编码过程中难免会出现时间紧任务重的情况,作为软件开发人员,耗费大量的精力去调整自己的代码格式是非常不值得的事情。况且在团队协同开发的时候如果自己编写的代码不符合团队规范,即使能够很好的完成工作,那也是不道德的事情。通过一个简单的工作一劳永逸的解决这个问题,又何乐而不为呢?

八、The next

最近在看《重构》这本书,虽然是java写的,希望自己能在学习之后能够更快速更科学的重构项目,重构代码。

CepheusSun wechat
订阅我的公众号,每次更新我都不一定会告诉你!
坚持原创技术分享,您的支持将鼓励我继续创作!
0%