我目前不幸在为Somebody Else的C#代码工作,这真的让我大吃一惊.我不知道我之前的人是如何维护这段代码的,因为它的各种病态已经破坏了IDE,编译器,运行时环境......
我今天面临的问题涉及一个15兆字节的源文件,它具有真正令人难以置信的病态嵌套程度.代码如:
if(var == 0) {
// do stuff
}
else {
if(var == 1) {
// do stuff
}
else {
if(var == 2) {
// do stuff, identical word for word to the `var == 1` case
}
else {
// etc.
}
}
}
Run Code Online (Sandbox Code Playgroud)
在最好的时候,这是一个值得怀疑的风格选择.然而,这与代码的另一种病理结合:这些块中的一些深度接近千层.(我不屑于测量最深的是超过700),我真诚地希望这个人在我面前,作为其最终行为之一的,从这个代码被强行分开前,跑的造型工具,导致憎恶在我面前.我无法想象他们可能已经编写了这样的代码,特别是因为代码的每三或四次编辑都会崩溃IDE.(有时会删除我的源文件副本,作为奖励.)
我写了一个简单的基于正则表达式的工具来尝试压缩更简单的情况,但它似乎是半处理然后破坏了这个特定的代码.(我不确定它是否会失败,因为此代码也会不时使用预处理器条件,或者因为最长的匹配将近10MB长并且Lua的正则表达式匹配器无法应对.)我希望有一种广泛使用的工具或技术,可以扭转这个问题.我已经不得不使用astyle来清理代码所具有的其他风格"问题".--remove-bracketsastyle 的选项几乎可以达到我的要求,但要求括号中的语句在单行上是单个语句,这在这里并非如此......(而且只是为了跨越我的"t",我检查过; astyle并没有造成这个特殊的问题.)
编辑:对问题代码的深入检查揭示了这样的事情:
#if OneThing
int num2296 = otherThing();
#endif
#if AnotherThing
int num44 = otherThing()
int num45 = 0;
#endif
int …Run Code Online (Sandbox Code Playgroud)