•   欢迎来到21NN网.
  •   请记住本站网址www.21nn.cn

令程序员费解的10个言语特征【php问题】,程序员,语言特性

摘要:  每种言语都有自身的独到之处,或奇特的语法,或不常见的函数,或非标准的实行体式格局。因而,不管新丁照样熟手,看着某个特征会倏忽醉了。文中总结了10个经常被说起的“奇特”特征。1.Javas...
 每种言语都有自身的独到之处,或奇特的语法,或不常见的函数,或非标准的实行体式格局。因而,不管新丁照样熟手,看着某个特征会倏忽醉了。文中总结了10个经常被说起的“奇特”特征。

1. Javascript: + 是一个衔接符

  题目形貌:在JS中,+ 号用在数字间,能够用作通例加法;但假如赶上字符,又可作为字符衔接符。比方:’1’+ 1的效果是11。

  成因剖析:

  根本性缘由是JS属于弱范例言语。比方说Python,同样地运用+ 号作为字符衔接符,但由于它是强范例言语,一旦发明一个字符与一个整数举行相加,它会提醒这是个毛病操作。

  网友们的意见:

  “题目在于这是个没法预感的强迫性寂静转换,很轻易就疏忽了。”匿名

  “JS应当就该状况作非常抛出处置惩罚。” crgwbr

  “用+来举行字符衔接简直是个恶梦。” Matteo Riva

  2. Perl:模块必需返回TRUE值

  题目形貌:绝大多数状况下,Perl模块在完毕时刻,都必需以1;语句来末端,不然,假如末了一条语句的返回值不是TRUE,体系就会报错了。

  成因剖析:

  Perl模块中包含了初始代码和子顺序。当模块文件被载入时,Perl会依据是不是返回TRUE来推断代码是不是胜利实行。纵然没有初始代码,Perl依然希冀末了的语句需返回TRUE,不然会报错。

  网友们的意见:

  “这个一般让我有不安的觉得。” Drew Hall

  “这是最无实用价值的用法了。”Schwern

  3. C/C++:三字母词用法

  题目形貌:

  举例来讲,体系看到??!会把它自动转为|,看到??(会转为[。这很容会引起形成意想不到的效果,并且会大大下降代码的可读性。

  成因剖析:

  初期举行编程时,键盘上还不能直接打出某些特别字符,比方大括号。因而用了这类间接的要领。

  网友们的意见:

  “博学如谷歌,也肯定看不懂什么是??!??!” Isaac

  “自1977年有了三字母词,C就变得艰涩难懂了。”Martin Beckett

  4. PHP:大小写敏感处置惩罚

  题目形貌:

  PHP对大小写处置惩罚比较杂沓,有些处所辨别,有些处所不辨别。比方:变量名,常量名辨别;函数名,要领名,类名不辨别。

  成因剖析:

  很多是PHP从CGI脚本集生长成成熟编程言语过程当中涌现的人工产物。

  网友们的意见:

  “这是为何PHP顺序员习习用下划线举行函数定名,而不是采纳驼峰定名法的缘由。”paperstreet7

  “在PHP中,统统皆有能够!”Grzechooo

  5. Ruby:0作为真值

  题目形貌:

  在Ruby中,0值等同于TRUE值。这对有C,Python基本的顺序员来讲不可不谓是一场恶梦。

  成因剖析:

  只要布尔值FALSE和nil等价于FALSE,其他的都等同于TRUE。0与1,2,3等都会被雷同看待。

  网友们的意见:

  “这简直是让人抓狂,虽然初志是好心的。” Chris Lutz

  “0==true!我这个C言语脑壳都快崩溃了!”Kenny

  6. Python:以空格数举行条理分别

  题目形貌:

  差别于采纳关键字或标点符,PY中采纳缩进层级来举行条理分别,以明白每一行代码的位置。不正确的空格数(或空格和换位符数不一致)都能够形成顺序报错。

  成因剖析:

  PY作者的企图是愿望代码更加可读,削减不必要的输入,并愿望顺序员自身应当承担起保护代码清晰度的义务。

  网友们的意见:

  “由衷地说,这是使我对PY敬而远之的根本缘由。”wazoox

  “假如我们真的须要相似的强迫机制,我们是不是是真的太懒了!”Joris Meys

  7. C:数组索引事情形式等同于指针

  题目形貌:

  在C中,a[i]和i[a]是能够交换的,两个写法都能得出一样的效果。

  成因剖析:

  在C中,对内存块而言,数组与指针是无差别的,就是说:

  a[i] = *(a + i) = *(i + a) = i[a]。

  网友们的意见:

  “在C言语杂沓代码竞赛中,这毫无价值可言。”Confusion

  “我想这正正揭露了C言语的中心,指针和更直接地与内存打交道。”Michael Neale

  8. Perl’s:预定义变量

  题目形貌:

  Perl有一份很长很长的特别变量列表,内里的名字都是非常冗杂的(只管有对应的长英文单词)。因而,除非是Perl资深开发人员,不然重复翻阅Perl文档是常有的事。

  成因剖析:

  这些变量都有差别的寄义,比方:历程ID($$),毛病信息($@),正则表达式婚配($^R)。

  网友们的意见:

  “非常使人懊恼!”MatrixFrog

  “对精简型开发者多是福音。”niXar

  “这些变量的题目是:没法经由过程谷歌查找获得!” malvim

  9. JavaScript:自动分号插进去

  题目形貌:

  JS运用分号作为语句完毕的标志,并且会自行插进去,纵然是代码断行的状况。因而会经常致使毛病的涌现。

  成因剖析:

  自动化的本意是为了带来方便,特别是对新手来讲。

  网友们的意见:

  “假如我们设想言语的特征时,老把用户看成是傻瓜,那是会出题目的。”Rob Van Dam

  “自动分号插进去是JS最让人头疼的处所之一。” fennec

  10. Java:自动装箱(autoboxing)与Integer缓存

  题目形貌:

  Java会自动把基本范例数据转为对象(自动装箱),比方把int转为一个Integer对象。同时默许地,缓存Integer对象的取值为-128到127。如许的话,在运用==来比较两个雷同取值Integer对象时会涌现题目(在-128和127以内是TRUE,其他的是FALSE)

  成因剖析:

  自动装箱机制削减了代码输入量,同时Integer缓存提升了处置惩罚速率。

  网友们的意见:

  “还好我只是一位C#顺序员。” Will

  “这不算什么毛病,反而给了我们一个运用原始范例(如:booleans)举行数字处置惩罚的来由。”RaviWallau

分享到:

发表评论

评论列表

还没有评论,快来说点什么吧~

公众号二维码

微信公众号