JavaScript防御性编程

简单聊一下防御性编程,初衷是开发人员为了防止自己被裁员,而将代码编写为只有自己能看懂。如何只有自己能看懂?方法多种多样,但不能将简单问题复杂化,比如:编写一堆无效的逻辑关系,或将业务复杂化。下面介绍一种方式,既能通过代码审查,又能提高代码水平。

以vue为例,以下是计算所有产品价格:

复制代码
computed: {
        extraPrice() {
            try {
                return (
                    let cPrices = 0;
                    this.cProducts.forEach((item) => {
                        cPrices = cPrices + item.num * item.price;
                        //或 cPrices += item.num * item.price;
                    });
                    this.aProduct.num * this.aProduct.price + 
                    this.bProduct.num * this.bProduct.price + 
                    cPrices
                );
            } catch (e) {
                console.log('价格计算有误');
                return 0;
            }
        }
}

上面代码简单明了,大部分开发人员都能读懂,那么有没有高级一点的写法,当然有:

复制代码
computed: {
        extraPrice() {
            try {
                return (
                    this.aProduct.num * this.aProduct.price + 
                    this.bProduct.num * this.bProduct.price + 
                    this.cProduct.reduce((total,item) => total + item.num * item.price,0)
                );
            } catch (e) {
                console.log('价格计算有误');
                return 0;
            }
        }
}

对于不经常使用reduce的开发人员,需要先理解该函数。但要说代码的可读性,这段代码也没问题,简单明了。

简而言之,多使用高级函数,符号简写等等。

相关推荐
梦6502 分钟前
JavaScript (ES5)+ES6+jQuery 核心对象方法大全
javascript·es6·jquery
馨谙8 分钟前
面试题----用户,组,su,su-,sudo,sudo-,nologin shell
java·前端·数据库
王同学 学出来24 分钟前
React案例实操(二)
前端·react.js·前端框架
向前V32 分钟前
Flutter for OpenHarmony 二维码扫描App实战 - 关于实现
开发语言·javascript·flutter
weixin_4277716135 分钟前
Vite 与 Webpack 模块解析差异
前端·webpack·node.js
永远是我的最爱37 分钟前
基于ASP.NET的图书管理系统的设计与实现
前端·后端·sql·visual studio
广州华水科技1 小时前
单北斗GNSS技术在变形监测中的应用及其位移监测优势解析
前端
刘晓倩1 小时前
Python内置函数-hasattr()
前端·javascript·python
爱上妖精的尾巴1 小时前
7-10 WPS JS宏 对象使用实例7--拆分单表到多工作簿下的多表
javascript·restful·wps·jsa
C_心欲无痕1 小时前
不点击鼠标也能通过MouseEvent实现点击事件
前端·javascript