![]() |
1
5
说明:
这是一个sed命令,包含2个表达式(每个表达式在
第二个表达式与模式匹配
我们把它换成
这段代码没有做任何聪明的事情来避免咀嚼
|
![]() |
2
3
几年前,我成功地将一个已有23年历史的遗留代码库转换为camelCase。只用了两天。但也有一些挥之不去的影响,花了几个月的时间来解决。它是一个 惹恼你的编码同事的好方法。 我相信一个简单的,愚蠢的,sed式的方法是有好处的。据我所知,基于IDE的工具等不能:
主要 缺点 大致分为五个阶段:
对于步骤1,要生成要更改的令牌列表,请执行以下命令:
在这个示例中,您确实不想更改这两个令牌,所以手动编辑列表以删除它们。但是你可能会错过一些,所以在这个例子中,假设你保留了这些。 下一步2是生成一个脚本来执行更改。例如,命令:
你只要把它扩展到d,e,f,…,x,y,z, 我想您已经为您的开发环境编写了类似“glob\u sub”的东西了(如果没有,现在就放弃。)我的版本(csh,Cygwin)看起来像:
(我的一些sed不支持--in-place选项,所以我必须使用mv。)
第四步是编译。编译器将(希望如此!)反对
第五步也是最后一步是使用您喜爱的diff实用程序手动检查您的更改,然后通过删除所有不需要的更改来进行清理
|
![]() |
3
3
考虑使用sed来搜索和替换这样的所有文本。如果没有C++标记器来识别标识符(具体地说是标识符,而不是标准库中的标识符,例如),那么你就是 拧紧 . pushBack被重命名为pushBack。映射::插入到映射::插入。地图到地图。基本字符串到基本字符串。printf到printf(如果您使用C库),等等。如果您不加区别地这样做,您将处于一个受伤的世界。 我不知道有任何现有的工具可以自动将某个变量名重命名为someVarName,而不会出现上述问题。人们投票否决了这个帖子,可能是因为他们不明白我在这里的意思。我不是说塞德做不到, 我只是说它不会给你想要的 如果能够识别哪些标记是标识符(特别是您的标识符),那么就有可能编写一个解析器来实现这一点(例如:使用sed),但我怀疑是否有一个工具专门用于您想做的事情,它可以在不需要手动润滑的情况下完成(尽管我可能是错的)。以这种方式对所有文本进行简单的搜索和替换本身就有问题。 Check out the refactoring features of Visual Assist X . 用VAX这种方式重构100个变量可能需要15分钟到半小时(如果使用热键,速度会更快),但它肯定比使用文本搜索和sed替换要好得多,就像另一个答案中描述的那样,并替换所有不应该被替换的代码。 [主观]顺便说一句:如果你问我的话,下划线还是不属于驼色的。lowerCamelCase命名约定应使用lowerCamelCase。关于这一点有很多有趣的论文,但至少你的惯例是一致的。如果它是一致的,那么这是一个巨大的优势,而不是像fooBarèubaz这样的东西,一些愚蠢的程序员认为它能让事情更容易地对规则做出特殊的例外 |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |