不到一分钟,我删掉近6万行的代码

Posted 啸天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不到一分钟,我删掉近6万行的代码相关的知识,希望对你有一定的参考价值。

前言


最近在学习正则,刚过入门阶段,我发现自己已经深深的爱上了正则,不仅仅是因为她的独特和优秀,更多的是那魔性的力量,强大到让我难以置信。如果你对正则还没有了解,不管你从事哪一行,都建议你去学一下,毕竟,她会对你以后的工作节省众多的时间。节省的时间干什么呢?你可以去旅行啊,世界这么大,还是去看看吧!

故事开头


所谓不到一分钟,我删掉近6万行的代码这个问题,其实我是利用正则删掉了整个项目中,所有的空白行和注释行。这样做,除了是为了测试和练习正则之外,我们还可以优化代码结构,尤其是对那些有强迫症的人,比如说我,多个空行少个空行都不舒服。

我们可以使用正则搜索任何想要的内容,而普通搜索是达不到我们的要求的。我们还可以使用替换功能,删除和修改任意内容到指定格式。接下来的内容就是故事的正文,虽然仅仅是正则冰山一角,但依旧独美。

故事上演


1.首先我们来匹配所有的空白行,空白行我们可以使用^$来匹配,但是这样仅仅是能匹配空行,就是一行当中没有任何字符,包括空格。所以我们使用^ *$\\n,其中的脱字符表示匹配行开头,美元符$代表行结尾。紧跟符号的是一个空格和一个*号,空格和*一起表示,中间可以有任意多个空格,包括没有空格。最后的\\n代表的是换行符,之所以要匹配到换行符,是因为我们要用空白内容替换掉所有的空白行,只有这样才能消除空行,不然替换结果依旧是一个空白行。

2.我这边使用的工具是Xcode,测试的是一个ios项目。搜索方式我们从文本搜索切换到正则搜索,搜索的正则表达式为^ *$\\n,替换内容为空即可,见下图。匹配成功后,执行就可以。我把所有的空行去掉后,项目编译成功。

3.接下来我们介绍如何删除注释行,这里的注释删除以//开头(//前可以有空格),对于多行注释和代码后紧跟的单行注释不生效,当然,可以使用正则重新匹配这些特殊的注释。^ *//.*$\\n,这个就是我们匹配单行注释的正则表达式,其中^之后紧跟着空格和*,表示可以任意多的空格,也可以没有,//匹配双反斜杠,其中的点是通配符,可以匹配任意字符,.*连在一起表示可以任意多个字符,也可以没有。替换内容仍旧是空,看效果。

4.虽然我们只是测试,但是我们会经常遇到这种需求。比如在开发中,我们会将接口返回的json数据转化为模型,我一般习惯复制json的部分内容放到模型中,方便转换。久而久之,项目遗留的这些无用注释,需要删除,因为作用不大,那么我就可以通过正则秒杀全场,而不用苦逼的找到对应的模型文件,一块一块的删除。

故事结尾


看了以上的例子,希望可以触发出你对正则的兴趣,这里附上两篇正则学习博客。
正则入门实例拓展
正则基础与细节回顾

以上是关于不到一分钟,我删掉近6万行的代码的主要内容,如果未能解决你的问题,请参考以下文章

初创数据库公司的疯狂行为:删掉花7个月开发的27万行C++代码,用Rust全部重写一遍...

初创数据库公司的疯狂行为:删掉花7个月开发的27万行C++代码,用Rust全部重写一遍

当有大量数据[超过一百万行] [重复]时,改进 R 中的循环以提高时间效率

对包含 2 亿行的 SQL 表进行性能查询?

放弃 Python 2 之后,这家公司写了 50 万行的 Go 代码来迁移!

在 C# 代码上使用 GPU/TPL 来加快速度,需要 40 分钟