如何修改代码中的硬编码问题
在前端、后端编码中通常会出现一些固定的值,而这些固定的值有的是直接写死在逻辑代码中,有的是通过常量或者宏量替换来处理,也有的是通过枚举类型来转换,还有就是通过资源配置文件来处理。在上述的几种方式中,除了配置文件的方式外其余的方式都是写死在代码中,虽然从短期来看,这确实解决了交付代码的压力;但是从长期来看,这样的编码方式并不适应业务需求的变更,不够灵活。
(一)何谓硬编码?
最简单、最直接的理解就是将一些可以变化的固定值写死在代码中,是在代码运行之前就确定好了的,后续若想更改的话,只能是重新修改源代码和重新编译、构建后才会生效,这种编码过程就是硬编码。网络的解释是这样的:硬编码是将数据直接嵌入到程序或其他可执行对象的源代码中的软件开发实践,与从外部获取数据或在运行时生成数据不同。 硬编码数据通常只能通过编辑源代码和重新编译可执行文件来修改,尽管可以使用调试器或十六进制编辑器在内存或磁盘上进行更改。 硬编码的数据通常表示不变的信息,例如物理常量,版本号和静态文本元素。 另一方面,软编码数据对用户输入,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勉
阅读是一种修养,分享是一种美德。