问题列表 - 第2309页

为什么人们会捍卫正则表达式的语法?

有一个类似的问题,但它只是得到了人们总是给出的关于正则表达式语法的旧答案,但这不是重点,所以请尽量不要扯下有关正则表达式语法的旧答案.这一次尝试变得更加原创和个性化.

正则表达式语法非常紧凑,几乎太紧凑而不好.它就像代码打高尔夫,每个人都同意代码打高尔夫球在生产代码中不是一件好事.然而,大多数人接受正则表达式语法,这看起来......至少可以说是矛盾的.

所以现在可能听到的一些常见防御包括:

  • :它很紧凑

  • 专柜:在这个时代我们是否都同意代码应该识字并且像"客户"这样的变量比"c"更好?

  • :这是一种"领域特定语言"

  • 反击:所有非常容易理解的,非紧凑的,非神秘的,我敢说那些像SQL或LINQ那样漂亮的域语言怎么样?

  • :一旦你知道它就很容易理解.

  • 专柜:即使您以前从未使用过,大多数优秀的语言也很容易理解.例如,任何人都可以很容易地跳入Python,即使他们以前从未见过它.为什么人们在看到如此难以理解的语言时会捍卫正则表达式,然后再继续抱怨Lisps括号?

好的,现在每个人都试图在这里做原创和诚实,不要只是拉出20年前使用的程序员设计正则表达式的旧的死记硬背答案.除非你真的相信它们在这个时代是有效的命题.


编辑:为了记录,我知道多年前的Regex,即使在今天也经常使用它们,甚至可能会让它们搞砸.然而,我突然有一种感觉,也许是时候重新考虑我所采取的关于正则表达的"真理"的事情,并从现代的角度来看待它们.主要是因为提问原则对于进一步发展是必要的,并且因为很多新人对他们抱怨很厉害,他们不能正确地说出来,所以我决定尝试进入一个新人的角度并考虑一些好处反对正则表达式.

至于主观,我认为这不是主观的,也不是程序员相关的程序员相关的日常事物.相反,它与程序员有关.

至于议论性问题,这就是问题的关键所在.为了获得良好的论证pro和con regex过时的语法,这可以让新手真正了解为什么正则表达式是他们的,甚至更好的希望得到一些新人来提出一个更好的解决方案美国老头脑看不到因为我们被正则表达式的"冷静"所蒙蔽.


引用:

用于正则表达式的Perl 5.10文档已经融化成一堆不可读的文件,因为许多zany功能已经渗透到语法中,没有人可以为它编写合理的文档.

你试图说正则表达式已经变得无法维护了吗?那么作为优秀的程序员,我们应该考虑重构它们吗?也许我们已经完成了许多其他技术的清理和尝试?

regex syntax

10
推荐指数
13
解决办法
2026
查看次数

SVN递归删除

有没有办法删除文件夹,让我们从SVN中继递归调用FolderX?在谷歌上快速搜索只告诉我如何递归删除所有.svn文件夹,这不是我想要做的

svn

23
推荐指数
2
解决办法
4万
查看次数

用Hibernate Criteria查询ManyToMany关系

我不确定如何描述这个问题,所以我认为一个例子是问我问题的最佳方式:

我有两个表与manyToMany关系:

DriversLicence < - > LicenceClass

LicenceClass是"Car","Motorbike"和"Medium Rigid"之类的东西.

使用Hibernate Criteria,我怎样才能找到同时拥有"Car"和"Motorbike"LicenceClasses的所有许可证?

更新12/11/2008我发现使用自定义ResultTransformer可以轻松实现这一点.但问题是结果转换器仅在查询返回其结果后才应用,它实际上不会成为SQL的一部分.所以我想我现在的问题是"你能做我最初在SQL中描述的内容吗?是否有Hibernate Criteria模拟?"

java sql many-to-many hibernate criteria

10
推荐指数
1
解决办法
2万
查看次数

在C中有睡眠()的替代方案吗?

在传统的嵌入式编程中,我们将提供如下的延迟函数:

for(i=0;i<255;i++)
   for(j=0;j<255;j++);
Run Code Online (Sandbox Code Playgroud)

在微处理器的视图中,这是sleep()函数的工作原理吗?

C中的sleep()函数有替代方法吗?

c sleep delay

14
推荐指数
9
解决办法
5万
查看次数

性能调优WCF服务

什么是WCF Web服务最重要的性能调整区域?

  • ASP.net线程设置?
  • WCF限制?

performance wcf

2
推荐指数
1
解决办法
7546
查看次数

如何在java中对MultiMap <k,v>进行排序?

有没有理由在Java中对MultiMap进行排序以及如何做到这一点?

java

8
推荐指数
1
解决办法
7227
查看次数

将大型VB6应用程序升级到.NET.关于VB Migration Partner的观点

我有一个非常大的VB6代码库,有大量的第三方控件.想将其移至.NET.重写它是不可能的 - 客户认为没花钱去做同样的事情.使用内置升级向导迁移到.NET基本上是不起作用的.

有没有人从http://www.vbmigration.com/尝试过VB迁移合作伙伴. 如果是这样,有什么样的体验?

.net migration vb6 vb6-migration

4
推荐指数
1
解决办法
3490
查看次数

有没有办法在MySQL/Rails中为单个查找强制区分大小写?

我正在搜索一些标签,有些用户喜欢"猫",而其他用户喜欢"猫"Go图...

无论如何,有没有办法强制特定的查找区分大小写?如:

Tag.find(:some-special-option-here)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

mysql ruby-on-rails case-sensitive

8
推荐指数
1
解决办法
5656
查看次数

在非开发机器上运行vc2008 debug

我正在vc2008中构建我的应用程序并在机器网络上进行测试.

除了安装Visual Studio 2008之外,还有什么方法可以在另一台机器上运行C++程序的调试版本?(即没有安装vc2008)

安装redist软件包只会为vc2008程序安装发布模式支持DLL.目前它抱怨"此应用程序无法启动,因为应用程序配置不正确.重新安装应用程序可能会解决此问题.",我假设是"我缺少DLL"的代码.

debug-build visual-studio-2008 visual-studio

4
推荐指数
1
解决办法
4093
查看次数

Linux相当于Mac OS X"open"命令

我在命令行中发现Mac OS X中的"open"命令非常方便.从"男人开放":

open命令打开一个文件(或目录或URL),就像双击文件的图标一样.如果未指定应用程序名称,则使用LaunchServices确定的默认应用程序打开指定的文件.

也就是说,如果我想用默认的PDF查看器(恰好是预览版)打开PDF文件,我只需要这样做:

open my.pdf
Run Code Online (Sandbox Code Playgroud)

但是,在Linux中,要从命令行打开PDF文件,我不得不四处寻找默认的PDF查看器,例如"evince"(谁已经猜到了?),然后

evince my.pdf
Run Code Online (Sandbox Code Playgroud)

那么,在Linux命令行中是否有一个简单的"open"命令呢?

谢谢!

linux macos command-line command-line-interface

207
推荐指数
4
解决办法
7万
查看次数