【编者按】编程江湖中一直盛传着一个段子,那就是要问程序员最讨厌哪 4 件事?那必须是:

写注释、写文档、别人不写注释、别人不写文档。

更甚者,在《流浪地球》形成刷屏之势之后,仿其而出的“代码千万行,注释第一行;编程不规范,同事两行泪”在技术圈中开始盛传,由此可见对于所有的程序员来说这是多么痛苦的事情。

本文作者 —— 全栈开发者 Nitin Sharma 分享了编程的七宗罪,也许对你会有所启发。

作者 | Nitin Sharma,全栈开发者

译者 | 罗昭成

责编 | 沭七

来源 | CSDN(ID:CSDNnews)


以下为译文:

还有什么事情比自己动手去创造更有趣?看着你发明的东西慢慢地进入生活?我们人类,是万物之主,是造物主。

但是在数字化时代,发明创造的方式发生了变化。现在,我们都创造数字化产品。我们建网站、写软件来满足我们的需求。虽然我们创造不再依赖于我们的创造力,但是我们仍然可以与艺术家其名。

编程的世界非常地宽广,涉及重多领域,我们有很多选择。你可以选择使用函数式编程,还是使用面向对象编程?你可以选择做服务端还是客户端?那么,你心中已经有抉择了吗?下面,有 100 种编程语言,可以用来实现你的需求。

语言、框架、库都在逐渐增多。你可以通过多种方式完成相同的代码功能。虽然这些语言可能差别很大,但是大多数语言都遵循相同的思想。所以,他们也会出现相同的问题。

以下是编程七宗罪,你可以想办法避免他们发生。虽然我不是基督教徒,但是我也喜欢定义七宗罪。

协作时不使用版本控制

上帝保佑,我们有版本控制工具。如我所说,如果我们没有像 Git 这种版本管理工具,代码的世界将变得异常艰难。版本控制让我们在协作的时候,修改或移动变得非常简单。

想像一下,我们坐在电脑前,手动检查并合并文件,为不同的版本保存不同的文件夹。这样做是非常低效的,并且很不可靠。幸运的是,我们有 Git 和其它版本控制工具,来帮我们完成这个事情。

我参与过没有版本控制的项目,那简直就是一场恶梦。

不使用合适的变量命名

我不知道为什么,身边总有一些人,使用很短/随机的名称来给变量命名。当你的项目只有 10-20 行代码,或者只是代码片段时,你可以使用这种方式进行命名,但是在大项目中,不要这么做。不合适的命名,对可读性和效率有致命的影响。

一个命名的简单规则:你变量的名称可以自解释。当你看到它们的时候,就知道他们的用途。但是不要使用太长的名字来命名!保持命名简短,并具有可读性。

让我们来找一找,你的代码中用 a , b, c 命名的代码。

使用过多的依赖,不经思考直接升级

GitHub 上面有多少个开源项目? 已经多到我们数不清了。这些开源库使开发者的工作变得更加容易,节约我们的时间。

但是使用过多的依赖库会对整个项目带来风险。依赖库越多,就意味着编译时间和运行时间的加长。我们应该在我们需要的地方添加对应的依赖库,而不要为了使用它而使用它。

所以,在升级之前,我们需要经常去检查依赖库/插件的支持情况。我曾经有一次,升级了 React,而没有去检查它对其它库的影响。到如今,我依然认为这是我生命中最严重的错误之一。

不自解释的代码

值得一提的是,没有人想阅读整个方法/文件来理解它是干什么用的。使用最少的代码来实现功能,但是不要让别人或者是以后的自己,讨厌你自己写的东西。

我们应该一直尝试去写自解释的代码。我们应该让我们的代码,在第一次被看到的时候,就知道它是干什么用的。要完成这样的代码,我们需要进行正确的代码重构,统一的语法,适当的变量名称。必要的时候,还要给代码添加注释。

当然,也不要过多地书写注释,你不需要通过注释解释每一行代码。最好用 1-2 行注释,写清楚重要部分的概述或说明。

格式不一致

这个和第四点非常相近,格式不一致也会对可读性和生产效率带来巨大的影响。在项目中,选择一个特定的命名规范并一直坚持下去,不要在中途改变它们。我个人更喜欢用大写字母来命名文件,驼峰命名法来命名方法、变量等。但这些也会根据不同的语言而作出改变。

没有比开发者格式化代码更糟糕的事情。

此外,在代码中,我们还需要使用相同的缩进格式。根据你的代码样式和选择的语言,使用 2/4/8 个空格来做缩进。但无论你使用什么样的格式,请坚持在整个项目中一直使用。

不处理错误

畏惧它。逃避它。Bug 终会降临! —— 灭霸

(译者注:指 Bug 如影随形,不休不止,像诅咒一样。)

事情是这样的,无论你是多么优秀的程序员,你的代码都有可能会出现问题,除非你写的是像如下的这种代码:

console.log("Yey")printf("Wow")

这些错误有可能是因为 API 错误引起的,也有可能是超时,类型错误,空值,或者只有上帝知道的原因。通常,这些会让你的代码出现问题。

在不同的语言中,处理错误的方式有很大的差异。但是一般情况下,在访问数据之前都需要判断数据否为空。在我的经验中,空指针比其它错误都多。

所以,在执行数据处理的相关需求时,建议将代码放到 try-catch 中,并处理对应的异常,最后,不要忘记告诉用户哪里出现了问题。如果在用户按下按钮和按键的时候不给用户反馈,用户将不知道发生了什么。给用户错误提示,并告诉它下一步怎么做。

时刻记住灭霸的话。

使用不当的数据类型/数据结构

在不同的语言中,数据类型要求不一样,强类型语言非常严格,而弱类型可以随意使用。强类型语言在编译时就会告诉你错误,而其它语言需要在运行时,才能知道错误。

举个例子,我们将数值存储在整型/符点型/双精度符点型的变量中,并且与存储在字符串中的变量进行比较时,有的语言会进行自动类型转换,然后进行比较,而有的语言并不会。

结语

编程七宗罪,让人不爽。我们需要避免出现。

这个仅仅是在编程中出现的常见错误。你很难看到,一个程序员,在他的程序中出现这些问题。但这也正如圣经中的七宗罪一样,不仅是这些问题。它们是原罪,可以组合成不同的错误。

你认为还有什么错误需要加在这个列表里面,在评论中写出来,让我知道。

Happy Coding!

原文地址:https://hackernoon.com/the-7-deadly-sins-of-programming-a7574efc639f

本文为 CSDN 翻译,如需转载,请注明来源出处。

(本文为AI科技大本营转载文章,转载请联系原作者)

精彩推荐

推荐阅读:

  • “安利”一款debug神器:在AI面前,bug都不是事儿

  • 一键免费自动AI抠图,效果连PS大哥也点赞!

  • 这可能是史上最全的Python算法集!

  • Python之父重回决策层,未来如何发展?

  • 华为立 Flag:一年超越三星做全球智能手机老大!

  • 那些简历造假拿 Offer 的程序员,后来都怎么样了?

  • 被V神点赞, 我是如何用五子棋打败以太坊排名最高的应用的? |人物志

  • 50个最有价值的数据可视化图表(推荐收藏)

  • 2月报告:Python逆袭成功?踢馆Java,碾压C++!

点击“阅读原文”,查看历史精彩文章。

“编程不规范,同事两行泪!”相关推荐

  1. 攻略▍ERP不规范 同事两行泪 企业ERP建设的思考和密钥

    作者| 初码张工 编辑|尾草冰淇淋 36大数据获授权发布 最近的很多次对外交流,都聊到了ERP建设的话题,并且无一例外的不那么让人省心,回想我这么多年走过的ERP坑坑路,在这里也写下经验和总结,希望能 ...

  2. 代码不规范,同事两行泪?

    最近参加了一个比赛,然后看到队友编程的代码,我觉得真的是觉得注释和命名规范的重要性了,因为几乎每个字符都要咨询他,用老师的话来说,这就是命名不规范的后续反应.所以此时的我意识到写一篇关于注释程序的重要 ...

  3. ERP不规范,同事两行泪

    最近的很多次对外交流,都聊到了ERP建设的话题,并且无一例外的不那么让人省心,回想我这么多年走过的ERP坑坑路,在这里也写下经验和总结,希望能给正在或者即将走上ERP建设路的企业一些思考和帮助. 导读 ...

  4. 2021-02-21 代码不规范,运维两行泪 代码规范

    代码不规范,运维两行泪 编程江湖中一直盛传着一个段子,那就是要问程序员最讨厌哪 4 件事?那必须是:写注释.写文档.别人不写注释.别人不写文档. 动手写代码前尽量做到心中有数,思考清楚代码框架结构.现 ...

  5. Python花呗分析模型温馨提醒:支出不规范,收入两行泪

    全世界只有3.14 % 的人关注了 数据与算法之美 春节结束,离开家里混吃混喝的怀抱,我又开始了用花呗.还花呗的无限循环. 花呗给人一种"有钱"的感觉,我不禁思考:像我这种发工资前 ...

  6. 笑话:工作千万条,抬杠第一条。同事不抬杠,感动两行泪

    不知道别人的感受怎样,每次同事遇到问题,让他怎么办,不管多么的明白和正确,结果都是不听.于是吾就改造了一下: 工作千万条,抬杠第一条. 同事不抬杠,感动两行泪.

  7. 特斯拉又有新游戏可以玩了 网友:行车打游戏,亲人两行泪

    [TechWeb]4月6日,特斯拉在其官方微博上公布车机软件TeslAtari 更新在即,将上线Super Breakout 等新游戏. 特斯拉表示,"TeslAtari 更新在即!在近期将 ...

  8. 编码不规范,同事真的会两行泪?

    2019独角兽企业重金招聘Python工程师标准>>> 案发现场 我们在Dubbo中定义一个接口,这个接口采用上方说的欺骗性的命名方式,这个getFeiChaoInfo()中并没有返 ...

  9. 改编码格式_编码不规范,同事真的会两行泪?

    案发现场 我们在Dubbo中定义一个接口,这个接口采用上方说的欺骗性的命名方式,这个getFeiChaoInfo()中并没有返回值. 好了,然后我们将这个服务暴露,然后启动.按照肥朝之前的观念,命名不 ...

最新文章

  1. java按特殊标志截取_java 字符串分割处理split及特殊符号
  2. Qt5应用改变窗口大小时出现黑影
  3. (转) Twisted :第十九部分 改变之前的想法
  4. 如何提升你的CSS技能?掌握这20个css技巧即可[完整版]
  5. 自学Java第一周的总结
  6. TabHost和ActivityGroup用法
  7. Qt5.9一个简单的多线程实例(类QThread)(第一种方法)
  8. 18-CSS问题-让多个div横排显示并设置间距解决方案
  9. android:scaletype=quot;fitxyquot;,Android ImageView的ScaleType属性
  10. python爱好者社区公众号历史文章合集_微信公众号历史文章爬取api
  11. 简单易上手的MMD-Ray渲基础教程
  12. 项目研发过程中甲方要增加合同外的需求,项目经理该如何处理?
  13. php动态效果,jquery+php实现动态数字显示效果
  14. mysql 复制表结构或创建新表
  15. 自定义ViewPager和RecyclerView指示器 Indicator
  16. 怎么用linux给苹果手机降级,如何将软件包降级
  17. 计算机硬盘是输出还是输入,输入输出
  18. 东北大学软件项目管理与过程改进复习提纲(2020)——第一章
  19. 多源数据融合 Sar Optical(一)像素级融合
  20. ubuntu下安装smba

热门文章

  1. Linux基础(二)--基础的命令ls和date的详细用法
  2. IBM蓝色基因/Q将采用NAND闪存存储
  3. layer.open嵌入地址链接
  4. java 多路分发_java实现多路分发
  5. AWS工具boto3使用笔记
  6. python 添加进度条
  7. 彻底解决Linux索引节点(inode)占用率高的告警
  8. C#ListView控件添加Checkbox复选框并获取选中的数目,检查checkbox是否勾选
  9. Codeforces Round #409 (Div. 2) C Voltage Keepsake(二分)
  10. Linux下Debug模式启动Tomcat进行远程调试