常见的编码错误,再不避免就完了!
犯错乃人之常情。
然而,开发人员所犯的许多错误是可以避免的。如果能避免本文提到的这些常见错误,就能写出更好、更简洁的代码。 这不仅于自身有利,对那些需要查看代码的其他开发人员也有利。所以避开常见错误不仅仅是为自己——也是帮了团队一个大忙。
综上所述,小芯这次为大家整理了一系列应避免的常见错误:
1. 变量的非描述性命名
好的变量名称非常重要,再怎么强调也不为过。很多时候,你不是唯一一个项目开发人员,其他开发人员也需要了解你编写的代码。
选择好的名字需要时间,但可以节省更多的时间。
2. 幻数和字符串
接着上文变量的非描述性命名,跳到下一项,该项关于不给变量赋值,也被称为幻数或魔法字符串。
维基百科定义: 幻数是唯一值,具有无法解释的意义且多次出现,可以而且应该被命名常量替换。
来看看下面的代码片段:
- for ($i = 1; $i <= 52; $i++) {
- ...
- }
该例中的数字52就是一个幻数。没有人明白为什么有52这个数字及其代表什么。为什么是52?为什么不能是64?这些是一年中的星期总数吗?
更明晰的方法是:
- $cardDeckSize = 52;for ($i = 1;$i <= $cardDeckSize; $i++) {
- ...
- }
现在每个人都会明白这是在循环一副纸牌。该代码给其他开发人员提供了语境。除此之外,更改数值更容易,因为值只在变量中存储一次,不会重复。
幻数经常在程序的不同位置多次使用,因此容易出错。
对于字符串来说也是如此,可采用同种方法:
- if (userPasswordIsValid($user,"6yP4cZ".$password)) {
- ...
- }
6yP4cZ是什么?似乎非常随意。
- $salt = "6yP4cZ";if(userPasswordIsValid($user, $salt.$password)) {
- ...
- }
啊哈,现在就说得通了!
3. 代码格式混乱
混淆代码的格式通常是那些没有丰富编程经验的人才会犯的。如果问有着多年经验的开发人员,问他们是否认识一个测试人员或数据科学家混淆过代码格式,他们可能都会点头。这是由于缺乏经验——除非使用像Python这样的编程语言,可以避免很多此类失误。
解决格式混乱最常见的方法是使用linter(应用代码校验)。现代集成开发系统(IDEs)也都有可能解决这个问题。有时需要安装一个插件,有时也可以直接完成。
4. 在一个函数中进行太多内容
根据单一职责模式,一个函数只应负责做一件事,只有一件事。笔者看到过太多函数集结了获取、处理并呈现数据三个功能。把这个函数分开处理才是好的编程,一个函数获取数据,一个函数处理数据,另一个函数显示数据。
一个函数只关注一个内容之所以重要,是因为这能让其运行更稳健。比如说,从API(应用程序接口)中获取数据。如果API有变动——例如,出现了一个新版本——那么如果处理代码同属一个函数,那么处理代码过程中断的风险就会更大,这很可能会导致数据显示也被中断。
5. 硬编码
硬编码是将数据直接嵌入到程序或其他可执行对象的源代码中的软件开发行为,而不是从外部获取数据或在运行时生成数据。
硬编码的值不允许更改;它们是固定值。硬编码被看作是一种反模式,或者至少是意味着一种坏代码。
硬编码最多的东西,不管是什么(有时甚至有效)原因,都是密码和文件位置。
人们看到的很多硬编码密码场景是用于外部服务或API的身份验证。这些证书往往被硬编码,但并不是最佳做法。
如果发现自己硬编码了很多东西,真的应该仔细审视自己写的代码,因为大多数时候这都不是解决问题的最好方法。
6. 注释掉代码
人们看到过包含多个函数的代码块被注释掉。没人知道为什么它还在那里,而且没人知道这段代码是否还有意义。但是,没人会删除这段代码,而这是开发人员真正应该做的事情。之所以没人删除这段代码,是因为每个人都认为其他人可能会用到。
只需删除那段注释掉的代码即可。即使代码不在最新版本中,如果有人想使用,该代码仍然可以在版本控制中使用。
不过这只是笔者的个人看法。
祝大家避免雷区,代码愉悦~
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
2020年七大方法缩小网络安全技能差距!
多年来,网络安全人才的严重短缺一直位居IT挑战调查的首位,但没有迹象表明这种短缺会很快结束——这引发了有关组织如何才能完全保护自己不受威胁和入侵的问题。 事实上,根据2019年(ISC2)网络安全劳动力研究,由于全球招聘需求持续激增,网络安全技能缺口在过去一年中实际上扩大了,导致美国有50多万工人缺口,全球有400多万工人缺口。 多达65%的组织报告网络安全人员短缺,而缺乏熟练/有经验的网络安全人员是受访者最关心的工作(36%)。2018年,博思艾伦发布了一份研究报告,研究发现,57%的人认为,在未来五年内,聘用顶级网络人才只会变得更加困难。 解决网络安全技能差距的7种方法 从长远来看,在填补网络安全职位空缺、培训候选人和缩小技能差距等方面,可能需要政府干预、公私合作和行业整合来应对挑战。专家表示,从短期和中期来看,多管齐下是解决这一棘手问题的最佳途径。以下是一些最佳建议: 1. 专注开发人才资源 “不管你做什么,你的组织总是需要一些安全人员,”哈维说。“你不能把安全责任外包出去,这意味着要大力开发人才,无论是通过当地大学、技校还是其他渠道,拉人进入你的麾下。“然后,你必须能够训练并保...
- 下一篇
Kali Linux 2020.1 发布
Kali Linux 2020.1版本现已发布,该版本进行了大量改进,简要功能摘要内容如下: 默认为非 root Kali Single 安装程序镜像 Kali NetHunterRootless 主题和 kali-undercover 的改进 新工具 Non-Root 在 Kali(及其前身 BackTrack,WHAX和 Whoppix)的整个历史中,其默认凭据都为root/toor。现在,Kali 2020.1 将默认用户为非 root 用户,通过使用标准的非特权用户来增加额外的安全性。 从此发行版开始,如果运行实时版本的 Kali,则默认用户名和密码均为“kali”。如果安装发行版,系统将提示您创建具有管理特权的非 root 用户。 Kali Single Installer Image Kali 现在带有一个安装程序镜像,如果使用默认软件包选择,则可用于在没有网络连接的情况下部署操作系统。此外,其还将有两个可供下载的镜像,即实时镜像和网络安装程序镜像。这些更改将使用户可以轻松选择合适的镜像进行下载,同时增加了安装的灵活性并进一步减小了下载大小。 该开发团队表示,我们不再为每个...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果