有一个类似的问题,但它只是得到了人们总是给出的关于正则表达式语法的相同旧答案,但这不是这里的重点,所以请尽量不要下意识地提出关于正则表达式语法的相同旧答案。这次尝试更加原创和个性化。
正则表达式语法非常非常紧凑,几乎太紧凑了。就像代码高尔夫一样,
每个人都同意代码高尔夫在生产代码中并不是一件好事。然而大多数人接受正则表达式语法,这似乎......至少可以说是矛盾的。
因此,现在人们可能会听到的一些常见辩护包括:
Answer: 很紧凑
Counter:在当今时代,我们不是都同意代码应该是有文化的,并且像“client”这样的变量比“c”更好吗?
Answer:这是一种“领域特定语言”
Counter:所有非常容易理解、不紧凑、不神秘并且我敢说漂亮的领域语言(例如 SQL 或 LINQ)怎么样?
Answer: 了解之后就很容易理解了。
Counter:大多数优秀的语言都很容易理解,即使您以前从未使用过它们。例如,任何人都可以轻松地使用 Python,即使他们以前从未见过它。为什么人们会为 Regex 辩护,因为它是一种很难看的语言,但随后又继续抱怨 Lisp 的括号?
好吧,现在每个人都尽量保持原创和诚实,不要只是拿出 20 年前程序员用来设计正则表达式的旧式死记硬背答案。除非你真的相信它们在当今时代是有效的主张。
Edit:根据记录,我多年前就知道 Regex,即使在今天也经常使用它们,甚至可能会理解它们。然而,我突然有一种感觉,也许是时候重新考虑我所认为的关于正则表达式的“真理”了,并从现代的角度来看待它们。主要是因为质疑原则是进一步发展所必需的,而且因为很多新人强烈抱怨它们,所以他们不能只是简单地正确,所以我决定尝试站在新人的立场上考虑一下有哪些优点反对正则表达式。
至于是主观,我不认为这比程序员笑话那些日子的事情。相反,它与程序员非常相关。
As for 争论的,这就是问题的重点。为了获得赞成和反对正则表达式过时语法的良好论据,这可以帮助新手真正理解为什么正则表达式是这样的,甚至更好地希望让一些新人提出更好的解决方案,美国老思想者看不到,因为我们被正则表达式的“酷”蒙蔽了双眼。
Quote:
Perl 5.10 文档
正则表达式已经融化成一堆
无法阅读的胡言乱语,因为有太多滑稽的内容
特性已经渗透到语法中
没有人能写出明智的文章
不再有它的文档。
您是想说正则表达式变得难以维护?那么作为优秀的程序员我们是否应该考虑重构它们呢?也许像我们对其他许多技术所做的那样进行清理和尝试?
我要说的大部分内容都是由 Adam 和 DGM 解决的,但我认为他们没有很好地阐述你的第二点。
“那些非常容易理解、不紧凑、不神秘并且我敢说像 SQL 或 LINQ 这样漂亮的领域语言怎么样?”
我认为表达这个问题的一个好方法是问,你会如何用英语来解释正则表达式?
<TAG\b[^>]*>(.*?)</TAG>
查找“”的内容,后跟“>”记住零个或多个内容,停在第一个“”
这是一个相当简单的正则表达式。英文形式真的更容易理解吗?你能做得更好吗?
正则表达式很难阅读,但您想要从它们中得到什么也同样难以解释。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)