实习的公司做对日外包,代码规范比较严,今天一天几乎都在缩进代码。
变量名要求的匈牙利命名法,基本上用AssistX的重构功能都能搞定,但是这个插件还是有Bug,改几个之后最好编译一下看看,免得它漏的地方多了,手工改起来头大。
缩进先是调了两三个小时的gnu indent参数,最后发现indent对C++支持的确比较差劲,比如int CXClass::Foo() const这种常成员函数,最后居然能给你搞成两个const放在后面,对C++类的缩进参数也不是很全。不过貌似也没发现其他修改程序实质代码的Bug。
然后换了astyle,的确不错,不过很快发现它的灵活性不够,选项也比较少,有以下几点根本没提供功能:
每行的最大字符数;垂直方向上对齐代码右侧的注释;逗号之后的空格没有处理;注释的//之后的空格没有处理。
所以我现在就先跑一遍indent,改改常成员函数,然后用astyle再跑一遍,基本没什么问题。但是千万别在生命类的头文件跑indent,indent可能会搞得一团糟。
以下是indent和astyle的配置(.indent.pro和astylerc),基本都是基于某个预设风格略作调整:
--original --indent-level 8 --use-tabs --dont-break-procedure-type --line-length 120
--style=allman --indent=tab --indent-col1-comments --add-brackets --align-pointer=type
版本分别是GNU indent 2.2.9和Artistic Style Version 1.24。但是该indent的Win32移植版只使用%HOME%环境变量获取配置文件地址,因而最好自己写个indent.bat来用,内容为:
@set home=%userprofile%
@indent_orig.exe %*
可以将两个工具放到VS的“外部工具”里,调用起来会方便些。