去除魔法数字

2,266 阅读1分钟

  • 什么是魔法数字?

在编程的领域中指莫名其妙出现的数字,其意义需要通过详细的阅读代码才能理解。一般魔法数字都是需要使用枚举变量来替换的。

  • 代码部分

html
<div style="padding: 10px 0;">                题型:                <label :for="'subjecttype_'+type.val" v-for="type in subjectlist">                    <input :id="'subjecttype_'+type.val" v-model="subjectType" :value="type.val" name="subjecttype"                        type="radio">                    {{type.label}}                </label></div>
//这里的type.val后的值 为数字0 直接来理解代码会不明白着这0代表的什么的意义 需要通过枚举变量来代替
<div style="padding: 10px 0;" v-if='type.val===ENUM_SUBJECTTYPE.DANXUAN'>                选项:               <ul style="padding: 10px 50px;">                   <li>A.<input type='text'><button>删除</button></li>                   <li>B.<input type='text'><button>删除</button></li>                   <li>C.<input type='text'><button>删除</button></li>                   <li>D.<input type='text'><button>删除</button></li>               </ul> </div>

JS
 let vm = new Vue({        el: '#app',        data() {            return {                subjectType: '',                subjectlist : [{                label: "单选题",                val: 0            },            {                label: "多选题",                val: 1            }, {                label: "判断题",                val: 2            }, {                label: "简答题",                val: 3            }]          }        },    })
  • 去除魔法数字

修改后的代码

JS
const ENUM_SUBJECTTYPE = {        DANXUAN:0,        DUOXUAN:1,        PANDUAN:2,        JIANDA:3    }
//混入全局
Vue.mixin({        data(){            return{                ENUM_SUBJECTTYPE            }        }    })
let vm = new Vue({        el: '#app',        data() {            return {                subjectType: '',                subjectlist: []            }        },        created() {            this.subjectlist = [{                label: "单选题",                val: ENUM_SUBJECTTYPE.DANXUAN            },            {                label: "多选题",                val: ENUM_SUBJECTTYPE.DUOXUAN            }, {                label: "判断题",                val: ENUM_SUBJECTTYPE.PANDUAN            }, {                label: "简答题",                val: ENUM_SUBJECTTYPE.JIANDA            }]        }    })