作家
登录

程序员偷偷深爱的9个不良编程习惯

作者: 来源: 2017-12-06 13:14:44 阅读 我要评论

然则时代变了。很多较新的编译器完全可以智能地经由过程查看代率攀来揣摸类型。它们会向后和向前浏览代码,直到可以肯定则个变量是string 照样int,抑或其他。如不雅这些被查看的类型不成队列,那么缺点标记就会点亮。是以再也不须要我们输入变量的类型了。

这意味着我们如今可以在代码中省略掉落一些最简单的声明。代码更干净,并且浏览代码的人也猜得出for轮回中定名为 i 的变量表示一个整数型。

编程习惯No. 5:扭捏不定的代码

如不雅这个布尔值可以或许合理地定名,那么这就是一段很棒的自文档化的代码,更易于大年夜家懂得。但这也增长了复杂性。这意味着你须要分派另一个局部变量,并堵塞存放器,因为编译器也许还不克不及足够智能到解决这个问题。

有的法度榜样员在代码上特别优柔寡断,迟疑不决。先是一开端将值存储为字符串,然后又解析成整数。接着又转换回字符串。这是异常低效的,你甚至可以感到到CPU在呼啸这种浪费负载的行动。聪慧的法度榜样员之所以能快速地编码,是因为他们事先会设计架构,以尽量削减转换。他们的代码能更快地运行是因为他们有一个优胜的筹划。

然则,不管你信不信,这种扭捏不定的代码有时刻也是有意义的。比如说,你有一个异常棒的看维在它专有的黑盒子里能做无数智能的工作。如不雅库须要字符串的数据,那么你就给它字符串,即使你刚将这个数据转换成为整数型。

当然,你可以重写所有的代码,以尽量削减转换,然则这须要时光。并且,有时刻让代码稍微多花点额外时光来运行也未尝弗成,因为重写代码须要消费我们更多的时光。有时,背负如许的技巧债务比一开端就精确构建的成本要更低。

有的时刻,库不是专有的代码,但那些你以前全部本身写的代码是你独有的。有的时刻,再次转换数据比重写库中的所有代码要快得多。所以,就让它如许吧,就让代码扭捏吧。

编程习惯No. 6:编写你本身的数据构造

但有时你会发明数据构造库有点慢。有时它们会迫使我们应用标准的,但于我们的代码倒是缺点的构造。有时库会把我们推向在应用构造之前从新设备数据的地步。有时库会包含一些所谓有备无患的保护功能,如线程锁,但其实我们的代码并不须要。

如不雅碰到这种情况,那么就应当着手写我们本身的数据构造。这或许能让你做得更快,做得更多。并且代码会变得更干净,因为我们不会包含那些多余的用于格局化数据来完成一些功能的代码。

编程习惯No. 7:在中心打破轮回

有一个规矩制订小组传播鼓吹,每个轮回都应当有一个“常量”,也就是说当这个逻辑语句为true的时刻,轮回一向履行。当常量必定不会是true的时刻,轮回才会停止。这是推敲复杂轮回的好办法,但它会导致愚蠢的禁令——例如禁止我们在轮回中心应用return 和break 语句。这一条也包含在禁止goto语句的规矩中。

这个理论是好的,但它平日会导致更复杂的代码。请看下面这个简单的案例,遍历数组,将找到的元素传递给test函数,并将该元素返回:

  1. while (i<a.length){ 
  2.  
  3.    ... 
  4.  
  5.    if (test(a[i]) then return a[i]; 
  6.  
  7.    ... 
  8.  

当然这是延长了,不过有一个不雅点是,在一个大年夜的代码块内,当从新定义一个或多个所谓的常量时,速度会更快。有时老板会请求代码做一些截然不合的工作。当然,你可以修改代码的每个事宜,或者,你可以从新定义。这让你看上去像一个天才。不必重写一个宏大年夜的看维只需翻转一下,就可以做相反的工作了。

“轮回常量”爱好者会请求我们增长一个布尔变量,定名为notFound,然后如许应用:

  1. while ((notFound) && (i<a.length){ 
  2.  
  3. ... 
  4.  
  5. if (test(a[i])) then notFound=false
  6.  
  7. ... 
  8.  

有时刻,一个goto 语句或一个跳转会更干净利索。

编程习惯No. 8:应用短变量名(i和x和and也是有意义的)

Edgar Allan Poe这位诗人和小说家曾经说过,在一个故事中的每一个词都应当是有内涵的。编码规矩也强调如斯。变量名应当解释这个变量的所作所为。那些应用驼峰式大年夜小写的办法来写变量名,以表达关于变量细节的Java法度榜样员深认为然,于是一个又一个猖狂长度的变量名出炉了。有些法度榜样员写的变量名,会组合五六个甚至更多的词语。

但有的时刻,应用单个字母作为变量名反而会更便利。有时在轮回迭代中只应用i或j会更简单。有时应用字母a代表array ,l代表list会更便捷,即使是字母l和数字1看上去很难辨别。

正如这篇文┞仿前面鼓励的是自文档化的代码,而非长长的注释。在上述情况下,单个字母的变量名也是自文档化的。字母 i 是通用的迭代器。只如果法度榜样员急速就会懂。

编程习惯No. 9:从新定义运算符和函数

一些最有趣的编程说话许可你去做一些特别诡异的工作,例如从新定义元素的值,就如同常量一般。例如Python,你可以输入TRUE=FALSE(在Version2.7及之前的版本)。这并不会产生某种逻辑崩溃,或导致宇宙终结——仅仅只是交换了TRUE和FALSE的含义。你也可以在C预处理器和一些其他说话中玩玩类似于如许的危险游戏。还有一些说话许可你从新定义运算符,如加号。


  推荐阅读

  Chrome的防重定向跳转机制

开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散 正如本年早些时刻报道的,谷歌筹划在Chrome上做出新的改进,以抵抗不须要的网站重定向。重定向就是你在浏览器中输入一个URL,却打>>>详细阅读


本文标题:程序员偷偷深爱的9个不良编程习惯

地址:http://www.17bianji.com/lsqh/39512.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)