什么是魔法值

2023-09-22 11:54:41

“魔法值”(Magic Value)是指在代码中直接使用的没有明确含义或解释的常量值。这些常量值通常以硬编码的方式出现在代码中,没有提供清晰的命名或注释来解释其含义。

使用魔法值会给代码的可读性、可维护性和可理解性带来问题。以下是一些使用魔法值可能引发的问题:

  1. 可读性差:直接使用数字或字符串常量作为魔法值,不提供明确的命名,使得代码难以理解和阅读。其他开发人员在阅读代码时可能无法立即理解这些值的含义。

  2. 可维护性差:如果魔法值需要更改,需要在代码中找到所有使用该值的地方进行修改。这样的修改容易被遗漏,导致代码的行为出现错误。

  3. 可重用性差:如果魔法值在多个地方使用,且没有提供明确的命名,那么在其他代码中重用这些值将变得困难。每次需要使用这些值时,都需要重新查找并复制相应的魔法值。

为了避免魔法值的问题,应该使用常量或枚举来代替直接的硬编码值。通过给常量或枚举提供有意义的命名,可以使代码更加清晰和易于理解。此外,将常量和枚举值集中管理,可以方便地进行修改和重用。

例如,假设在代码中有一个表示一周中星期几的魔法值 3,可以将其替换为一个枚举类型 DayOfWeek,其中包含具有明确命名的常量值,如 MONDAYTUESDAY 等。

总之,魔法值是指在代码中直接使用的没有明确含义或解释的常量值。为了提高代码的可读性和可维护性,应该避免使用魔法值,而是使用常量或枚举来代替,并为其提供有意义的命名。

更多推荐

el-table 列背景色渐变

最初的想法是,给每一行添加背景色,逐行递减透明度,发现结果比较突兀,效果如下:如果有需要这种样式的,代码如下:<template><div><el-table:data="tableData":header-cell-style="headerCellStyle":cell-style="cellStyle"style

Redis Part1

单体架构:一台Web服务器、一台数据库服务器。回顾,关系型数据库:基于二维表来存储数据的数据库就是关系型数据库。MySQL跟Redis的区别:MySQL是关系型数据库,它是基于表来存储数据的,MySQL数据是写在磁盘的,它是跟磁盘进行交互的;Redis是非关系型数据库,它是把数据存储在内存当中的,是跟内存进行交互的。M

Go基础语法:数组

6数组6.1数组的定义数组在定义时就需要声明其元素数量和类型://T即元素类型var数组变量名[元素数量]T如:vara[5]int.数组的长度必须是常量,并且长度是数组类型的一部分,一旦定义,长度不能变。所以,[5]int和[10]int是不同的类型。packagemainimport"fmt"funcmain(){

功能基础篇3——Python中的输入输出、文件读写、序列化

IO文件读写openopen()为内置函数,用于读写文件mode读写x,create,创建,文件存在报错,可写不可读r,read,读入,默认读写方式,文件不存在报错,可读不可写w,write,写入,文件不存在会创建文件,存在清空文件内容,可写不可读a,append,追加,文件不存在会创建文件,光标移至文件末尾,可写不可

CentOS常用命令

一、yum命令1.1列表源服务器软件包yumlist//列出yum源服务器上所有的软件包,太多了,一般不单独使用,大多数要配合管道grep使用yumlistopenssl*//列出yum源服务器上所有以openssl开头的软件包yumlist|grepopenssl//列出yum源服务器上所有包含openssl的软件包

实时可追溯性和事后可追溯性

在当今的世界里,成功的组织都将其创新和复杂产品开发流程建立在跨多个工作流的互联数据上。为此,他们需要收集利益相关者的想法以构建系统架构,管理高级需求以创建详细的用户故事,并实施验证程序以检查问题。同时,在满足标准规定并在当前的市场环境中保持竞争力的过程中,与各利益相关者的协作需要深度的追踪。许多行业标准都要求有需求追踪

记一次 .NET 某仪器测量系统 CPU爆高分析

一:背景1.讲故事最近也挺奇怪,看到了两起CPU爆高的案例,且诱因也是一致的,觉得有一些代表性,合并分享出来帮助大家来避坑吧,闲话不多说,直接上windbg分析。二:WinDbg分析1.CPU真的爆高吗这里要提醒一下,别人说爆高不一定真的就是爆高,我们一定要拿数据说话,可以用!tp观察下。0:000>!tplogSta

关于ITSS认证资质整改和降级

最近来我公司咨询ITSS年审换证的企业比较多,很多企业伙伴的ITSS信息技术服务运维符合性证书2023年到期将面临换证,很多企业觉得拿证三年了都没有问题,换证随便糊弄一下就行了。但是在年审换证再评估中会遇到很多问题,就一些问题我们武汉好地科技小编整理出了一套年审换证再评估相关注意事项。ITSS认证再评估相关事项:1.持

ELK日志分析系统

日志服务器提高安全性集中存放日志缺陷:对日志的分析困难ELK日志分析系统ElasticsearchLogstashKibana介绍ELK日志分析系统是一套完整的日志集中处理解决方案,基于Elasticsearch、Logstash、Kibana三种开源工具进行日志收集、存储和可视化elk可以帮助用户快速定位和分析应用程

Vue3函数式编程

文章目录前言一、三种编程风格1.template2.jsx/tsx3.函数式编写风格二、函数式编程1.使用场景2.参数3.例子3.render渲染函数总结前言本文主要记录vue3中的函数式编程以及其他编程风格的简介一、三种编程风格1.templateVue使用一种基于HTML的模板语法,使我们能够声明式地将其组件实例的

SPA首屏加载速度慢

什么是首屏加载首屏时间(FirstContentfulPaint),指的是浏览器从响应用户输入网址地址,到首屏内容渲染完成的时间,此时整个网页不一定要全部渲染完成,但需要展示当前视窗需要的内容首屏加载可以说是用户体验中最重要的环节关于计算首屏时间通过DOMContentLoad或者performance来计算出首屏时间

热文推荐