我可以理解为了避免因为开销和不便而不得不使用光标,但看起来有一些严重的光标 - 恐惧症 - 狂热正在进行,人们将不遗余力地避免使用光标.
例如,有一个问题询问如何使用游标执行明显无关紧要的操作,并使用带有递归自定义函数的公用表表达式(CTE)递归查询提出接受的答案,即使这会将可处理的行数限制为32 (由于sql server中的递归函数调用限制).这让我觉得它是系统寿命的可怕解决方案,更不用说为了避免使用简单的光标而付出的巨大努力.
这种疯狂仇恨的原因是什么?有一些"着名的权威"发布了针对游标的法特瓦吗?一些无法形容的邪恶是否潜伏在游戏的核心,腐蚀了儿童的道德或什么?
维基问题,答案比代表更感兴趣.
相关信息:
编辑:让我更精确:我理解不应该使用游标而不是正常的关系操作 ; 这是一个明智的选择.我不明白的是,即使游标是一种更简单和/或更有效的解决方案,人们也会不顾一切地避开光标,就像他们有傻瓜一样.困扰我的是非理性的仇恨,而不是明显的技术效率.
我最近在SO上看到过一些与"代码指标"相关的问题,不得不想知道这些魅力是什么?以下是一些最近的例子:
在我看来,没有指标可以替代代码审查,但是:
但我想不出一个单独的指标本身总是表示"好"或"坏"代码 - 测量无法看到的东西总是有例外和原因.
从我忽略的代码指标中获得了一些神奇的洞察力吗?懒惰的程序员/经理是否在寻找不读代码的借口?人们是否提供了巨大的遗留代码库并寻找起点?这是怎么回事?
注意:我已经在答案和评论中询问了一些关于特定线程的问题并且没有得到回复,所以我认为我应该问整个社区,因为我可能错过了一些东西.运行一个指标批处理作业并不是真的必须再次阅读其他人的代码(或我自己的代码)会很好,我只是觉得它不实用!
编辑:我很熟悉大多数(如果不是所有)正在讨论的指标,我只是没有看到它们孤立或作为任意质量标准.
我一直看到"鸭子打字"这个短语大肆渲染,甚至还遇到了一两个代码示例.我懒得忙着做自己的研究,有人可以简单地告诉我:

通过怀疑这种"新"结构的力量,我不是故意要发怒的,而且我不会因为拒绝做研究而避开这个问题,但我正在喋喋不休地谈论我所看到的所有关于这个问题的大肆宣传.最近.它看起来像没有打字(也就是动态打字),所以我没有立即看到优势.
附录:感谢目前为止的例子.在我看来,使用类似'O-> can(Blah)'的东西相当于进行反射查找(可能并不便宜),和/或与编译器可能说的(O是IBlah)大致相同能够检查你,但后者的优点是区分我的IBlah界面和你的IBlah界面,而其他两个没有.当然,对于每种方法都有很多微小的接口会变得混乱,但是那样可以检查很多单独的方法......
...所以我再也没有得到它.在一个全新的麻袋中,它是一个梦幻般的节省时间,还是同样的老东西?需要鸭子打字的例子在哪里?
我有几个.NET Windows Forms应用程序,我准备转换为ClickOnce /智能客户端部署方案.我已经阅读了这个非常棒的教程,但是我应该注意哪些陷阱或"陷阱"?
有几个小应用程序一直使用,但主要应用程序是在C#中,每周7天,每天24小时运行,非常大,但每隔几周才会更改一次.它还会本地写入日志文件并与本地硬件设备进行通信.
我有两个表,都有开始时间和结束时间字段.我需要为第一个表中的每一行找到第二个表中时间间隔相交的所有行.
例如:
<-----row 1 interval------->
<---find this--> <--and this--> <--and this-->
Run Code Online (Sandbox Code Playgroud)
请以SQL- WHEREclause 的形式表达您的答案,并考虑第二个表中的结束时间可能的情况NULL.
目标平台是SQL Server 2005,但其他平台的解决方案也可能是有意义的.
一个是数学家.这已经遍布办公室,我们希望看到谁可以提出更好的优化版本.
(((a+p) <= b) && (a == 0 || a > 1) && (b >= p)) &&
((b - (a + p) == 0) || (b - (a + p) > 1))
Run Code Online (Sandbox Code Playgroud)
编辑:所有数据都是正整数
编辑:更好==为简单而重构
你为什么选择java而不是别人?为什么选择java来编写应用程序?
请包括您使用java的内容(桌面应用程序/ Web应用程序/移动设备).
我有一个带有密码和确认密码文本框的网络表单.我有一个RegularExpressionValidator附加到第一个,CompareValidator附加到第二个.现在的问题是,当我在密码字段中有内容而确认密码字段中没有任何内容时,它不会显示字段不匹配的错误.只要我在"确认密码"字段中输入内容,就会显示错误.我还想允许将这两个字段留空.
我正在使用.NET 2.0
可能是什么?
我听说它说"设计继承"是"困难的",但我从来没有发现过这种情况.任何人(以及任何人,我的意思是Jon Skeet)都可以解释为什么这可能是困难的,陷阱/障碍/问题是什么,为什么凡人的程序员不应该尝试它,只是让他们的课程密封以保护无辜者?
好吧,我嘲笑后者 - 但我很想知道是否有人(包括Jon)真的遇到"继承设计"的困难.我真的从来没有把它视为一个问题,但也许我忽略了一些我认为理所当然的东西 - 或者在没有意识到的情况下搞砸了什么!
编辑:感谢到目前为止所有优秀的答案.我相信共识是,对于典型的应用程序类(WinForm子类,一次性实用程序类等),不需要考虑任何类型的重用,更不用说通过继承重用了,而对于库类,考虑重用是至关重要的.通过设计中的继承.
我并没有真的想到一个WinForm类来实现一个GUI对话框,作为一个有人可能会重用的类 - 我有点认为它是一个一次性的对象.但从技术上讲,它是一个类,有人可能会继承它 - 但它不太可能.
很多大规模的发展,我所做的一直是基础库和框架类库,因此设计为通过继承的重用是至关重要的-我只是从来没有认为这是"难",它只是为.;-)
但我也从未考虑过与WinForms等常见应用任务的"一次性"类别相比.
当然,欢迎设计继承的更多提示和陷阱; 我也试着投入一些.
我想找到一种方法来执行SQL查询,该查询将计算存储在数据库中的子网掩码的cidr(位表示).例如,我有255.255.255.0或其十进制值(4294967040)存储在数据库中.我想通过查询进行选择并返回/ 24表示.
我做了以下的事情来确定子网的最后一个IP,所以我希望做类似的事情来确定一个掩码的cidr表示.
select concat(inet_ntoa(ip_addr),'-',
inet_ntoa(ip_addr+(POWER(2,32)-ip_mask-1))) range
from subnets
order by ip_addr
Run Code Online (Sandbox Code Playgroud)
最好这是一个可以在mysql,postgres,oracle等下工作的SQL语句.
sql ×3
.net ×1
.net-2.0 ×1
algorithm ×1
asp.net ×1
bitmask ×1
cidr ×1
clickonce ×1
code-metrics ×1
cursor ×1
duck-typing ×1
inheritance ×1
interface ×1
java ×1
refactoring ×1
smartclient ×1
subnet ×1
validation ×1
variant ×1
webforms ×1
winforms ×1