长期存在的错误编程假设


281

我正在研究初级(或高级)软件工程师的常见错误和错误的假设。

您最长久的假设最终被纠正了什么?

例如,我误解了整数的大小不是标准的,而是取决于语言和目标。有点尴尬地说,但是确实如此。

坦率地说; 您有什么坚定的信念,大概维持了多长时间?它可能与算法,语言,编程概念,测试有关,或者与编程,编程语言或计算机科学有关。


Answers:


545

很长时间以来,我一直以为其他所有人都精通所有编程概念(设计模式,最新的新语言,计算复杂性,lambda表达式,随便命名)。

阅读博客,Stack Overflow和编程书籍似乎总是让我感到自己在所有程序员都必须凭直觉知道的事情上走在后面。

随着时间的流逝,我意识到我正在有效地将自己的知识与许多人(而不是一个人)的集体知识进行比较,这对任何人来说都是一个很高的标准。现实世界中的大多数程序员都拥有完成其工作所需的知识储备,并且拥有不胜枚举或完全不了解的多个领域。


68
如此真实!那是这个时代的问题。信息也令人沮丧。几周前,当我感到自己在研究方面所做的一切(不是第一次)都完全失败时,我得到了这个启示。在IEEE Transactions中发表论文的人不一定具有与在Google工作,拥有StackOverflow,出色教授或撰写出色编程博客的人相同的技能。当然,最好的人比我们冷酷,但他们不知道您所不知道的一切。所以,保持冷静。
jbasko,2009年

40
这也有助于了解这些博客作者也不会全力以赴。优秀的博主会在撰写文章时研究他们的主题并学习新事物。
JohnFx

47
我每天都沉迷于我没有时间阅读和学习的内容。有时候,我感到非常内a。
布拉德

9
@Zilupe:赞成。我已经发表了一些国际会议论文和期刊。在某些人看来,这听起来很酷。直到您意识到发表论文并不需要太多的努力。我们不是天才。我们就像其他人一样。我们犯了错误,并且发表了废话。那么,除了一些少数群体真正的天才...
豪Wooi林

4
+1好东西,我读过了。我以为我是唯一的一个。
拉德尔2009年

308

人们知道他们想要什么。

在最长的时间内,我以为我会与人们交谈,他们会描述一个问题或工作流程,然后将其放入代码中并使之自动化。事实证明,每次发生这种情况时,他们认为自己想要的实际上并不是他们想要的。

编辑:我同意大多数意见。这不是一个技术性的答案,并且可能不是发问者想要的。它不仅适用于编程。我敢肯定,这也不是我最长久的假设,但这是我在这样做的短短十年中学到的最惊人的东西。我确信这纯粹是天真的,但是我的大脑被束缚了,进入商业世界之前的教学和经验使我相信我会做我所回答的。我将能够使用代码和计算机来解决人们的问题。

我猜这个答案与Robin关于非程序员理解/关心我在说什么的答案类似。这是关于学习业务的敏捷,迭代,交互过程。这是要学习成为编程代码猴子和成为软件开发人员之间的区别。这是关于意识到两者之间存在差异,并且要在该领域中做到真正的出色,这不仅仅是语法和键入速度。

编辑:这个答案现在是社区Wiki,以安抚人们对此答案感到不安的情况。


9
或在看到以前想要的东西后更改他们想要的东西。人们喜欢改变主意。我知道,因为我是一个人。
J. Polfer,2009年

13
您是在给他们他们想要的东西,而不是他们想要的东西。
布伦特·贝斯利

47
为什么无聊的无争议的答案如此之高?
nes1983

39
哇。听起来好像有人需要拥抱。
bzlm

24
我的上帝@人们抱怨,stackoverflow rep不是竞争。如果您喜欢答案,请赞成,但不要嫉妒,因为您嫉妒您没有先发布。
Dmitri Farkov


232

我应该只有一个函数/方法的退出点。


91
优秀的实现;视需要经常退出。只要没有必要继续使用某个功能,就应该退出该功能。这样做可以避免复杂性并提高可读性,例如,当条件嵌套是方法正常运行所需的前提条件时,避免使用深度嵌套的条件。在具有内存管理和资源构造(例如使用/最终)的现代语言中,从一开始到方法的结尾一直教条地讲毫无意义。
Triynko

24
顺便说一下,谁想到了这个?就像一个编程城市传奇。
布拉德

49
必须调试其他人的代码的人才想到了这一点。
gatorfax

23
我认为这个普遍但错误的想法是基于误解。退出函数时,应始终返回同一点。在像BASIC这样的语言中,这是一条重要的规则,没有执行该规则:例如,该规则意味着您应该使用GOSUB而不是GOTO。在诸如C#或Java之类的调用方法的语言中,它是自动的。但是因为它是自动的,所以我认为它从逻辑上的“只有一个返回点”变成了毫无意义的“只有一个退出点”。
Ryan Lundy

35
需要像C这样的语言,您需要手动释放资源。多个出口点是泄漏资源的好机会。IMO没有例外的语言指向它,因为您常常不知道退出点了,或者语句中间。-在这些语言中,剩下的只是“可读性结构”。
彼得

228

那些非程序员理解我在说什么。


243
了解/护理..
尼克

8
我仍然有这一个,有时...我想至少我的妻子就已经开始正确地理解现在:P
workmad3

3
哦,亲爱的,我担心我可能还没学会!
thatismatt

3
是的,有时候我会忘记我的听众,最后看到一群人,他们的脸庞呆滞地呆呆地看着我,虽然人们对此表现出了兴趣,这还是很好的
Petey B

3
这是我对该专业的最大挫败感。
Andres Jaan Tack

219

那个没有错误的软件是可能的。


35
+1,尽管NASA几乎做到了
帕特里克·麦克唐纳

55
是的,但“差不多”要花几百万美元:)
杰姆

15
@Triynko您的“可能”和@JaredPar的“可能”不相同。理论和实践在理论上可能相同,但实践上却有很大不同。
09年

13
@Joseph,问题的一部分是人们认为Hello World程序没有错误。他们不是。多数情况下不会检查例如printf中的错误,也不会检查其他失败的IO尝试。
JaredPar

9
@RussellH,不。您未能指定返回值,并且结果处理将返回随机垃圾内存。
JaredPar 2009年

199

私有成员变量是实例私有的,而不是类私有的。


192
我一直保持这个假设直到...
TheMissingLINQ,2009年

9
@ebrown我通常只在编写equals()方法时才发现它有用
Dave Webb

12
他们在Ruby中。
迈克·库塞拉

17
这对我来说是很正常的事情,以至于我读过头几次后这个答案就没有意义了。现在,我想学习Ruby,这样反而会使我感到困惑。:)
jmucchiello,2009年

16
@Kiewic如果您的类中有一个名为myVar的私有成员变量,则可以在代码中直接引用other.myVar(如果other是此类的实例)。我以为是因为它是“私有的”,所以即使在类内部也必须使用other.getMyVar()。
Dave Webb

166

我以为静态输入正静静地放在您的键盘上。


53
诚恳与否,这让我在漫长的一天工作结束时笑了起来。:P
Olivier Tremblay,2009年

5
++好笑。听起来我(非技术)丈夫会想出些什么。
jess

11
+1!我以为鸭子打字也涉及打字。还是鸭子。或两者。
SqlACID,2009年

162

在开始开发之前,您可以完全理解问题。


32
我的朋友应该这样说:“您可以完全理解问题。” 但这是真的。并且大概是很难理解甚至接受的概念。
KarlP

4
您不能“完全”理解问题,但是一定要在开始开发之前(一定程度上)理解问题。bit.ly/kLXgL
OscarRyz,2009年

有时您必须开始开发才能理解问题。和/或,问题会随着您的发展而改变。
Evan Plaice 2010年

158

聪明人永远比我聪明。

当我犯错并且经常因自嘲而被告知时,我真的可以打败自己。我曾经敬畏地看着很多开发人员,并常常认为,由于他们在X上比我了解更多,所以他们比我了解得多。

随着我不断获得经验并结识更多的人,我开始意识到,虽然他们在某个特定主题上比我了解更多,但他们不一定比我/您聪明

故事的寓意:永远不要低估可以带来的收益。


好一个!我目前正在与一位真正了解.NET开发的同事一起工作。花了一些时间认识到我更擅长了解客户的需求。
Treb

58
另一方面,我比其他人更了解。事实证明,他们只是知道不同的东西。另一个道理:永远不要低估别人可以带来的好处。
星期四

1
这又是旧的“对他人做”的事情……我创造了一个新短语:技术欺凌〜由于您了解某些知识而感觉优越的状态,并犯了让所有人都知道的错误。@seealso:smartass。
corlettk

1
出色的观察-我的说法是负面的“每个人都时而愚蠢”。与“不要翻转bozo位”有关。
彼得

2
当愚蠢的人比你聪明时,您只需要担心。
布拉德·吉尔伯特

131

在最长的时间里,我认为不良编程是偶然发生的事情。.正确地做事是常态。这些天我不太天真。


30
我曾经认为不良编程仅由其他程序员完成,直到由不良程序之一完成。现在我做正确的事!(您这次相信我了,对吗?)
Jared Updike

2
完全。我已经从“永远不会发生”变为“除了要做这项工作之外永远不会发生”,到“每个地方都有糟糕的代码”。
Ryan Lundy

1
骇客是常态。工程是真正竞争力的范围。如果遇到软件工程师,我会通知您。
corlettk

3
@corlettk:您的意思是猴子编码是正常的,不是吗?黑客是一门艺术,是您的高级艺术思维,我离实现目标还有很远。
哈森

2
@Hasen:不,黑客行为类似于无技巧地将斧头砍在树上,在疯狂的恐慌中凿出细小的碎片,没有实际计划,然后制造出血腥的烂摊子,直到树最终落在你的头上。“黑客”是“为了获得商业上的成功而进行平庸而平庸的工作的人”。我永远不会知道为什么计算机领域将“ hack”改为“ skilled”。
劳伦斯·多尔

113

我认为我应该尽可能地抽象。因为太多的功能交织在一起,我在这个专业中受到打击。

现在,我尝试使事情保持简单和分离。重构以使事物抽象起来比预测我需要如何抽象事物要容易得多。

因此,我从开发所有规则的框架转变为完成任务的功能片段。永远不要回头,除非当我想到那段时间时,我天真地以为我会成为开发下一件大事的人。


26
解耦=真正的抽象。摘要本身就是...过早的优化。
加里德·厄普迪克

1
这与我发现的性能调优相伴。可能会有一个带有多层抽象的可爱程序。然后,工作量变得很重,并猜测所有时间都在花钱……所有抽象。计算机执行指令,而不是抽象。
Mike Dunlavey,2009年

5
抽象和泛化是功能强大的工具,可悲的是,它用于通过一个实现来泛化抽象用例。有趣的是,每当需要更改实现时,抽象和概括也必须更改……
KarlP

我完全同意贾里德(Jared)的观点...如果您设法做到“简单和分离”,那么您就可以实现真正的抽象。如果您还没有将事物抽象到接口和工厂等中,该如何解耦呢?除非您删除所有“如果type = this然后执行此操作,或者如果类型为that然后再执行其他代码”,那怎么可能简单呢?
理查德·安东尼·海因

同样在这里。我想我制作大量意大利面条代码之前就了解了抽象。他们应该教过即使代码是意大利面条也能完成工作的方法,然后教给我们有关面向对象和抽象的知识。
哈森

103

女人觉得计算机程序员很性感...


70
等一下???
Çağdaş特勤

4
他,他,他..好的,我一直在寻找可以保持微笑的一天。我想我已经找到了!!!:)
OscarRyz

17
“哦,宝贝!是的,说'如果'-给我扔一些例外。是的,你知道我想要的是什么。”:P
cwap

5
什么?程序员有钱吗?这是什么时候的事儿?
Filip Navara 2009年

3
一些女人(合适的女人)被有见识的聪明男人所吸引。减去原型的胡须和香肠,这是程序员相当普遍的特征。稍微关注自我形象/卫生,偶尔参加极限运动时会感到兴奋/兴奋,那么您的身体就很好了。
Evan Plaice 2010年


82

(几乎)所有语言都是平等的。

在很长一段时间里,我发现选择的语言并没有真正改变开发过程的难度和项目成功的潜力。绝对不是这样。

为工作选择正确的语言与其他任何单个项目决策一样重要/至关重要。


13
我觉得选择合适的库很重要。碰巧的是,语言和库之间通常存在一对一的对应关系……
Kevin Montrose

7
但是,如果两种编程语言都图灵完成了,那有什么区别呢?您可以使用任何一种语言编写任何程序!;)
比尔蜥蜴,

8
我不同意,使用哪种语言的决定远不及谁将真正实施该项目重要。作为许多其他更重要决策的一个示例。
鲍里斯·特尔西奇

13
BrainFu **和python一样完整。
哈森

9
图灵完整的语言在某种程度上同样适用,这是一个普遍的误解。Turing完整的语言可以计算Turing机器可以执行的所有操作(并且通常也暗示其他方式)。绝对不涉及性能。一种在一种语言上花费线性时间的操作很可能在另一种语言上花费指数时间,而且它们仍然都可以完成图灵处理。在理论上可计算的值和在实践中可行的值之间存在巨大差异。
TrayMan 2009年

81

注释/代码比例大是一件好事。

我花了一段时间才意识到代码应该是自我记录的。当然,这里的注释对如果无法使代码更清晰或执行某件事的重要原因很有帮助。但是,总的来说,最好花一些评论时间来重命名变量。它更干净,更清晰,并且注释不会与代码“不同步”。


1
我同意实际的代码...排除javadoc注释(或同等学历)。
corlettk

11
+1,甚至不让我开始使用我以前为10个行函数编写的论文
wds

除此之外,assert()语句比记录前置条件/​​后置条件更好。.NET 4代码合同也可以自动转换为文档!
罗伯特·弗雷泽

66

那种编程是不可能的。

我不是在开玩笑,我一直认为编程是一些不可能学习的东西,而且我始终远离编程。当我接近代码时,我永远无法理解它。

然后有一天,我坐下来阅读了一些基本的初学者教程,然后从那里开始了自己的工作。今天,我以程序员的身份工作,我喜欢其中的每一分钟。

另外,我认为编程并不容易,这是一个挑战,我喜欢学习很多东西,没有比解决一些编程问题更有趣的了。


7
阿们!但是,嘿,不要从屋顶上宣扬这种观点。我们不想让每个人都知道编程很有趣,现在我们呢?;); P
PeterPerháč09年

9
MasterPeter:当他们来这里提问时,这将使我们有更多的饲料来增加我们的代表。
TheTXI

4
我要说的是,编程很难做好事。但是,这可能是您要说的。
史蒂夫S

4
@Olafur:为什么要让问题成为Wiki,而不是答案?
gnovice

2
这完全反映了我的经验。我希望我早点开始:P
Skilldrick

65

“ On Error Resume Next”是某种错误处理


6
我感觉到您...但是在vbscript(特别是asp)中,它是唯一可用的“错误处理”选项,结合明智地检查是否确实发生了错误,并进行了大量的祈祷。
扁平化

2
是的,这是某种……我们很高兴能摆脱这种
困境

6
好?!但它是。您使用On Error Resume开始错误处理块接下来,尝试尝试一些操作,然后尝试If(err.number <> 0),然后
jpinto3912 2009年

这不是等同于try catch的唯一vbscript吗?
詹姆斯

-1:这是一种错误处理。它不是那么优雅。
JohnFx

64

该编程软件需要具备较高的数学基础。

在开始编码的多年之前,我总是被告知,要成为一名优秀的程序员,您必须精通高级代数,几何,微积分,三角函数等。

十年后,我只需要做八年级学生不能做的任何事情。


5
非常真实 在大多数情况下,您无需成为数学专家。我真正需要了解任何高级数学的唯一时间是当我将3D编程作为一种爱好时。实际上,实际上是高中时期的3D编程激发了我在Trig和Pre-cal课上的注意力。除此之外,您通常只需要基本的数学运算即可。
史蒂夫·沃瑟姆

29
我想你误会了。当然,要成为一名优秀的程序员,您真的不需要使用很多高级数学,但是要真正理解和应用某些计算机科学概念,您将不仅需要八年级数学。
hbw

12
我认为对数学的重视不是要在日常计算机编程中使用,而是要教授批判性思维技能和解决问题的能力。
扎克

14
您需要了解高级数学的抽象类型与创建软件所需的抽象非常相似。
OscarRyz

6
我认为,如果您在数学上有更坚实的基础,那么函数式编程的概念将更容易理解,这仅仅是因为您对语法的恐惧并不多。看起来很熟悉。我犯了一个错误,即使用简单的数学函数来演示C#的新功能编程概念。有些人立即宣布它太复杂了。
理查德·安东尼·海因

63

优化==用汇编语言重写。

当我第一次真正了解汇编语言(来自BASIC)时,似乎使代码运行更快的唯一方法是在汇编语言中重写它。花了很多年的时间才意识到编译器可以非常擅长优化,尤其是在具有分支预测功能的CPU等方面,它们可以做得比人类在合理的时间内做得更好。同样,花时间在优化算法上可能比花时间将语言从高级转换为低级语言更好。同样,过早的优化是万恶之源。


8
皮克(Peek)和戳(Poke)是你的朋友:)
马修·怀特

4
变态!对法官说!
Shalom Craimer

1
这就是复杂性理论的用武之地。组装通常是微观优化。使您的算法的时间复杂度变小,可以提高速度。
PeteT

@scraimer:很想在这里见到你,我从没想到过;-)
Robert S. Barnes 2010年

@ Matthew-“ Peek和Poke是您的朋友:)”:**非常嫉妒,我没有写过。
FastAl

63
  • 公司高管关心代码的质量。
  • 越少的行越好。

2
他们确实在乎,但是您必须将艺术家技能与工人技能结合起来。每一项算法都不能成为一件艺术品。其中一些将变得丰满,因此请重用“较少使用的”。记住旧的80/20规则。80%的程序在20%的时间使用。因此,将80%的精力放在20%的代码上,然后制作出真正的艺术品!:OP
BerggreenDK

71
线越少越好!我不喜欢Java作为语言的部分原因是,任何事情都要占用很多行代码。更少的代码行意味着更容易更改代码。
Claudiu)

7
这取决于要删除的行数更少。如果仍然可以用更少的行数读取代码,那就很好了。但是,有很多方法可以减少使代码变糟的代码行数。
爱马仕

2
除非人们采用链式方法调用7深深地认为“行越少越好”,以便当其中之一抛出空指针时,您根本不知道它是哪一个。或者他们将许多动作压缩为一行,长度为150个字符,并执行4个操作。这使得读取和调试都变得更加困难,但是它既没有更快,也没有在执行过程中使用更少的内存。
Trampas Kirk,2009年

17
如果您的行以)))))结尾,而您没有编写Lisp,则您的行太少了。

58

我要说的是,将日期的年元素存储为2位数字是一个困扰整个开发人员的假设。Y2K上的钱真是太恐怖了。


1
这是我要投票的唯一答案,尽管它是CW,所以没关系……
Dan Rosenstark,2009年

4
IIRC某些系统早在60年代,也许70年代仅使用一位数字,因为它使用的内存更少。我什至看到了预打印“ 196_”和“ 197_”的纸质表格。
一些

3
我仍然看到200_的表格,现在大概有201_的表格。
Macha

5
可悲的是... Unix将在2038
Evan Plaice 2010年

4
@Billy仅仅因为机器架构的改变并不意味着数据格式会改变。以int格式存储2位数的分辨率将形成一个字节(8位)日期格式,但是,它却影响了2k吨的32位硬件架构机器。这只是为什么您不让低级硬件人员指定数据格式的又一个示例。他们知道在不久的将来将会有一个预定的SNAFU,这让他们大吃一惊。
Evan Plaice

57

除了插入/冒泡排序之外,其他任何事情都只是黑魔法。


哈哈,我喜欢这个,因为它很接近家。排序速度快于n平方时间?不可能的!
罗斯,

一旦您对递归和分而治之有了很强的感觉,那么大多数排序算法看起来多么简单明了,这真是令人惊讶。在那之前,他们大多数人都感觉像是黑魔法。
布赖恩

74
我是排序算法方面的研究员!他们还是觉得自己像黑魔法。
SPWorley

14
我的程序中曾经有一段很长很复杂的代码,我不想分解或解释它(那是一些复杂的光照公式),所以我将所有代码放在一行上并#define'并将其更改为DARK_MAGICK,唯一的评论是警告不要尝试揭开黑暗魔法的奥秘
Alex

2
Bogosort是其中最神秘的。
亚历克斯比尔兹利

50

该XML将是一种真正可互操作且人类可读的数据格式。


7
XML不是万能药,但我不想回到过去,我经常看到应用程序试图将关系数据压缩到单个csv文件中。
Tony Edgecombe,2009年

4
毫无疑问,这是一种可互操作的语法。只是语法通常是任何解决方案中最不重要的方面。
西蒙·吉布斯

2
+1,您也可以将小而快速的添加到愿望清单中。
MarkJ

1
没错,但对csv和固定长度的改进,无需文档即可解决问题。
PeteT

7
我喜欢XML,因为它带给了数据格式标准化,并且可以正确处理字符编码。但是,我讨厌有时使用 XML 完成的工作。
Joachim Sauer 2010年

48

C ++本质上比所有其他语言都要好。

我在大学毕业几年前就从一位朋友那里得到了这笔钱。我让它呆了很长时间(我现在脸红了)。直到使用它大约两年之后,我才能看到它们的本质。

没有人-没什么-完美,总有改进的余地。


5
“更好”会带给您许多讨厌的评论。但是我要说的是,它是执行速度最快,灵活,无障碍的工具之一。这也是让您的年轻人正确学习它的一种方法,却发现您可以或多或少地使用同一个应用程序。(尽管需要一些额外的吨或两吨的发电煤)与Java或C#。
jpinto3912

@JP:我对我选择的单词感到满意:)
Binary Worrier

生产力在业务应用程序世界中更为重要。当然,有些地方需要c ++,这是唯一的选择。
逸夫

7
我一直认为C ++比普通的ANSI C更糟糕,这仅仅是因为我所见过的C ++程序员所遇到的麻烦比我所见过的C程序员所遇到的麻烦要复杂得多。
Nosredna,2009年

1
实际上,比其他语言更好的语言是Common Lisp。不过,C ++还不错。
David Thornley,2009年

47

我相信创建程序就像在课堂上教的一样……您与一群人坐下来,讨论问题,提出解决方案,等等。等等,真实世界是“这里是我的问题,我需要解决它,然后继续”,十分钟后您又遇到了另一个问题,因此您没有实时的时间来有效地计划解决方案。


24
我认为这就是生活。
罗宾·

9
嗯..是时候您解救那家公司了。..
jpinto3912

8
@ jpinto3912:不,因为下一家公司也将成为生活的一部分(请参阅前面的评论)。
Treb

42

我将主流设计模式引入CS课堂后,认为它们很棒。在那之前,我已经将大约8年编程作为业余爱好,但实际上我对如何创建良好的抽象没有深刻的了解。

设计模式就像魔术一样。你可以做得很整洁。后来我发现了函数式编程(通过Mozart / Oz,OCaml,后来的Scala,Haskell和Clojure),然后我了解到许多模式只是样板程序或其他复杂性,因为该语言的表达能力不足。

当然,几乎总是存在某种模式,但是在表达性语言中它们处于较高水平。现在,我一直在用Java做一些专业的编码,当我不得不使用诸如访问者或命令模式之类的约定而不是模式匹配和高阶函数时,我真的感到很痛苦。


“许多模式只是样板,或增加了复杂性,因为该语言的表达能力不足。” 表现力只是硬编码到语言中的样板代码。
未知

4
并非如此,拥有一流的东西而不是限制程序员的能力(像在高阶函数中一样)是如何模样的?嘴唇就是一个很好的例子。
egaga,2009年

38

在开始编程的最初几年中,我并没有意识到1 KB从技术上来说是1024字节,而不是1000字节。我总是感到困惑,因为我的数据文件的大小似乎与我预期的略有出入是。


114
硬盘驱动器制造商仍未流行……
Michael Myers

10
@mmyers我认为您指的是硬盘营销人员,对吗?还是实际上是那样构建的驱动器?
Instantsoup

16
嘿,停止对基比的仇恨。MeBi和KiBi至少是unbambiguobus。
bzlm

21
Kilo表示1000,Mega表示1000000,Giga表示1000000000。是RAM和OS制造商弄错了,不是驱动器制造商。
Mark Ransom

39
没有人要去做吗?认真吗 好的,我会做的... xkcd.com/394
Erik Forbes,2009年

36

该条件检查如下:

if (condition1 && condition2 && condition3)

以未指定的顺序执行...


15
用什么语言?诸如C / C ++,Java和Python之类的语言可确保从左到右评估条件,并且评估在返回false的第一个条件处停止。这是语言规范的一部分。我认为大多数其他语言也提供相同的保证。
克林特·米勒

44
@Clint:是的,因此“事实证明是不正确的”。
bzlm

是的,这很酷。它使像if(myList!= null && myList.Count> = 0){do stuff();}之类的东西变得容易得多
Zack

4
实际上,这取决于语言,&将评估所有条件(而不是快捷方式)。而且我已经看到很多人在VB中使用And(&)代替AndAlso(&&)
卢卡斯2009年

2
。。。实际上,除非您使用AndAlso re Lucas的注释,否则它也将在VB.net中崩溃
Binary Worrier,2009年

35

如果我一个人做的话,我的编程会更快更好。


但是它不能像Pair- Programming一样丑陋:-),除了您的代码外
Egg

33
一切都取决于另一个人。=)
JohnFx
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.