如何修改代码中的硬编码问题
2023-09-14 09:08:23 时间
在前端、后端编码中通常会出现一些固定的值,而这些固定的值有的是直接写死在逻辑代码中,有的是通过常量或者宏量替换来处理,也有的是通过枚举类型来转换,还有就是通过资源配置文件来处理。在上述的几种方式中,除了配置文件的方式外其余的方式都是写死在代码中,虽然从短期来看,这确实解决了交付代码的压力;但是从长期来看,这样的编码方式并不适应业务需求的变更,不够灵活。
(一)何谓硬编码?
最简单、最直接的理解就是将一些可以变化的固定值写死在代码中,是在代码运行之前就确定好了的,后续若想更改的话,只能是重新修改源代码和重新编译、构建后才会生效,这种编码过程就是硬编码。网络的解释是这样的:硬编码是将数据直接嵌入到程序或其他可执行对象的源代码中的软件开发实践,与从外部获取数据或在运行时生成数据不同。 硬编码数据通常只能通过编辑源代码和重新编译可执行文件来修改,尽管可以使用调试器或十六进制编辑器在内存或磁盘上进行更改。 硬编码的数据通常表示不变的信息,例如物理常量,版本号和静态文本元素。 另一方面,软编码数据对用户输入,HTTP服务器响应或配置文件等任意信息进行编码,并在运行时确定。
(二)如何解决硬编码?
这里介绍两种策略:
- 数据字典表:通过访问数据库的方式,从数据库中获取需要的固定值。
- 配置文件:重启服务,运行时读取配置文件中的配置项获取需要的规定值。
(1)在前端使用配置文件时,这样处理:
-
-
- 首先要在工程的根目录下(package.json所在目录)创建这样一个文件:static/js/property.conf.js(文件名可以任意)
- 接着在property.conf.js文件中添加这样内容:
'use strict' module.exports = { LANG: { CHINESE: 'zh', CHINESE_COUNTRY: 'zh_CN', ENGLISH: 'en', ENGLISH_COUNTRY: 'en_US' },
// 后续就是按照对象的格式来添加硬编码内容 } - 最后是应用property.conf.js文件:
const propertyConfig = require(‘static/js/property.conf')
-
let lang = propertyConfig.LANG.CHINESE
说明:npm run build命令在根目录下默认会生成dist文件夹,该文件夹中会有static文件夹和一个html文件,而static文件夹包含了js/property.conf.js文件。
------20200207勉
相关文章
- C# 对JS编码/解码进行转换
- 一些特殊的URI编码字符
- utf8编码规则
- 字符编码--丛起原到代码
- x264代码剖析(三):主函数main()、解析函数parse()与编码函数encode()
- Java实现 LeetCode 89 格雷编码
- 一道笔试题:给定编码规则,实现decode()方法
- 用JAVA的抽象类实现编码组合进度的灵活性
- JavaScript escape() unescape() decodeURI()函数对字符串进行编码解码
- python中文编码问题的解决办法
- One order search的框架代码里,硬编码了要去取Interaction object相关的数据
- Atitit 2016 技术趋势与没落技术 目录 1.1. 流水线 即代码通过编码而非配置CI/CD运行工具的方式,来定义部署 流水线1 1.2. 将APIs当作产品1 1.3. 无服务器架构
- NLP:自然语言处理技术中常用的文本特征表示方法(整数编码、one-hot编码法、BOW法、TF-IDF法、N-Gram法等)及其代码案例实现
- 【图像处理】小波编码图像中伪影和纹理的检测(Matlab代码实现)
- 使用ffmpeg将BMP图片编码为x264视频文件,将H264视频保存为BMP图片,yuv视频文件保存为图片的代码
- Base64编码原理分析
- conv1d UpSampling1D aotoencoder 自编码代码摘录
- 行人重识别0-09:DG-Net(ReID)-代码无死角解读(5)-网络Ea编码及鉴别器
- 选择编码节点的最佳数量和位置研究(Matlab代码实现)
- 【Pyqt5】进度条QProgressBar的使用/多线程更新/按钮美化/图片编码/开机自启动
- 数字IC手撕代码-格雷码的编码与解码
- 企业级代码静态测试工具Helix QAC——支持编码规范