阅读本文大概需要 4.2 分钟。

作者:Nitin Sharma

译者:罗昭成

出品:CSDN(ID:CSDNnews)

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

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

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

以下为译文:

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

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

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

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

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

1、协作时不使用版本控制

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

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

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

2、不使用合适的变量命名

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

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

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

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

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

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

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

4、不自解释的代码

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

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

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

5、格式不一致

这个和第四点非常相近,格式不一致也会对可读性和生产效率带来巨大的影响。在项目中,选择一个特定的命名规范并一直坚持下去,不要在中途改变它们。

我个人更喜欢用大写字母来命名文件,驼峰命名法来命名方法、变量等。但这些也会根据不同的语言而作出改变。

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

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

6、不处理错误

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

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

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

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

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

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

时刻记住灭霸的话。

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

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

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

8、结语

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

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

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

Happy Coding!

原文链接:

https://mp.weixin.qq.com/s/BIlWx7w4Lhx-vprIBfdeWg

往期精彩回顾

程序员接私活的7大平台利器

为何IntelliJ IDEA比Eclipse更好

巧用这19条MySQL优化,效率至少提高3倍

想囤书的赶紧看过来(精选书单)

IDEA一定要懂的32条快捷键

世上最污技术解读,我竟然秒懂了

一千行MySQL详细学习笔记

七点建议助您写出优雅的Java代码

欢迎关注我的公众号「程序员的成长之路」,精彩!

转载于:https://www.cnblogs.com/gdjk/p/10429418.html

“编程不规范 亲人泪两行”相关推荐

  1. “编程不规范,同事两行泪!”

    [编者按]编程江湖中一直盛传着一个段子,那就是要问程序员最讨厌哪 4 件事?那必须是: 写注释.写文档.别人不写注释.别人不写文档. 更甚者,在<流浪地球>形成刷屏之势之后,仿其而出的&q ...

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

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

  3. C语言基础-编程规范!代码不规范,自己两行泪!

    前言 一个好的程序编写规范是编写高质量程序的保证.清晰.规范的源程序不仅仅是方便阅读,更重要的是能够便于检查错误,提高调试效率,从而最终保证软件的质量和可维护性. 说明 l 本文档主要适用于刚刚开始接 ...

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

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

  5. java if (name!=null name!=),命名不规范,lombok泪两行!

    序言 去年在项目当中引入了Lombok插件,着实解放了双手,代替了一些重复的简单工作(Getter,Setter,toString等方法的编写). 但是,在使用的过程当中,也发现了一些坑,开始的时候并 ...

  6. 后端技术:命名不规范,lombok泪两行!

    序言 去年在项目当中引入了Lombok插件,着实解放了双手,代替了一些重复的简单工作(Getter,Setter,toString等方法的编写). 但是,在使用的过程当中,也发现了一些坑,开始的时候并 ...

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

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

  8. 【读书】代码千万条,整洁第一条,代码不规范,产品两行泪

    申明:本文所引用图片和链接,如有侵权,请告知,我即做出修改. <代码整洁之道> 在线阅读 clean code-代码整洁之道 中文完整版-带书签.pdf 豆瓣书评 代码整洁之道 亚马逊商店 ...

  9. Sudo 授权需谨慎,否则脸上泪两行

    sudo 表示 "superuser do",它允许已验证的用户以其他用户的身份来运行命令.其他用户可以是普通用户或者超级用户.然而,大部分时候我们用它来提权运行命令,以替代直接使 ...

  10. java 缓存清理echo_“kill -9”一时爽,秋后算账泪两行

    原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处.任何不保留此声明的转载都是抄袭. kill是杀死的意思,带有主动的意味.鉴于master.slave这样的名词,需要在计算机 ...

最新文章

  1. ZOJ 3735 dp
  2. sql 复合键_SQL复合键
  3. Oracle 11g行字段拼接WMSYS.WM_CONCAT问题Not A LOB
  4. 机器学习的开源工具-开源程序-研究工具
  5. 自适应模糊PID(位置式)C语言实现
  6. Matlab如何滤出高音,基于Matlab滤波器及均衡器设计
  7. flutter:实现扫码枪获取数据
  8. Unity中的资源管理-资源类型和基本使用
  9. 100以内的奇数和是多少_一百以内所有奇数和偶数有哪些
  10. 32位/64位处理器:*char与*int的区别?不同类型的指针+1的区别?
  11. 传统安防企业资本运作:找准定位、创新为本
  12. Linux驱动——ALSA
  13. 九阴真经Ambari——3.安装并配置MariaDB
  14. Android基本组件及使用
  15. Echarts折线图曲线图和三维图
  16. 实现阿里云SSH免密登录
  17. 工具 | Codeblock下载与安装及使用
  18. 01背包问题java_01背包问题 动态规划 java实现
  19. CSS3图像和背景的学习
  20. HTML基础 - HTML列表

热门文章

  1. 【计算机组成原理之存储系统】超级详细
  2. easyUi combobox setValue 引起的关于js的坑
  3. am 启动 activity 流程分析
  4. 外语学习的真实方法及误区
  5. 用python画人物素描_python实现图片素描效果
  6. 安卓bochs模拟linux_bochs下载-bochs模拟器 安卓版v2.5.1-PC6安卓网
  7. 文章中如何将章节分页——段前分页
  8. 微信小程序实现授权登录及退出
  9. 美国大学课堂的契约精神(纽约时报中文网 )
  10. 计算机桌面自设提示语,如何在电脑桌面便签上设置每周五自动弹窗提醒?