前言
hello,大家好,我们初学js时,常常会注重语法,而忽略其他更为重要的东西,使代码不够清晰健壮甚至几天后连自己都看不懂,而在今后的工作中,团队合作做一个项目是经常的事,因此,当我们在完成自己的那一份工作交给同事继续处理时,要使他能够轻松看懂且心情舒适,一份高质量代码是不可忽视的,那不禁我们要问,一份高质量代码要满足什么样的要求,接下来我会一一讲清楚。
代码格式要求
1. 注释
要让别人看得懂我们的代码,注释是必不可少的,我们学在每个必要的函数上写上必不可少的功能,也可以在开头就写上功能作者时间,便于以后找代码时能够迅速找到......
- 单行注释
//这是单行注释
- 多行注释
/*
* 这是多行注释
* 这是多行注释
*/
- 函数and方法注释
/**
* 函数说明
* @关键字
*
**/
/**
* @func 代理送花
* @desc 通过实现receiveFlower,互换对象
* @author ysw
* @data 24/4/15
**/
- 常用关键字注释
注释名 语法 含义 示例
@param @param {参数类型} 描述信息 描述参数 @param {String} name 传入名称
@return @return {参数类型} 描述信息 描述返回值 @retun {Boolean} true: 可执行; false: 不可执行
@author @author 描述信息 描述作者 @author 某某某 2018/04/24
@example @example 示例代码 演示函数的使用 @example setTitle('啦啦啦');
2. 命名规范
js命名应遵循 简洁、语义化 的原则
-
变量
命名方法: 小驼峰式命名法
命名规范:前缀为形容词 (函数前缀为动词, 以此来区分函数和变量)
//好的命名方式
let minNumber = 22;
-
常量
命名方法:名词全部大写
命名规范:使用大写字母和下划线来组合命名,下划线用来分割单词。
const MAX_COUNT = 22;
const NUMBER = 22;
-
函数 & 方法
命名方法: 小驼峰式命名法
命名规范: 前缀应该为动词
命名建议:常用动词约定
动词 含义 can 判断是否可执行某个动作 has 判断是否含义某个值 is 判断是否为某个值 get 获取某个值 set 设置某个值 load 加载某些数据
getFlower: function(sender) {
console.log(this.name + '收到'+sender.name+'鲜花');
if (this.xq < 80) {
console.log('我想你还是算了吧');
} else {
console.log('万达走一波');
}
}
-
类的成员
类的成员包括:
公共属性和方法: 跟变量和函数命名一样。
私有属性和方法:前缀为下划线_, 后面跟公共属性和方法一样的命名方式。
class Person {
// 私有属性
_name: string;
constructor() { }
// 公共方法
getName() {
return this._name;
}
// 公共方法
setName(name) {
this._name = name;
}
}
补充:除了上面的代码规范,在其他的一些代码习惯中也要做到统一,例如,分号‘;’要不要加上,要么不写,要么全写,忌讳部分写,部分不写。
3. 面向对象思想在JavaScript中的体现
-
对象和方法的定义
在JavaScript中,对象是一种复杂数据类型,可以通过对象字面量 {} 或构造函数来创建对象实例。对象可以拥有属性和方法,通过属性来存储数据,通过方法来执行操作。
const aas = {
name: 'zxh', // 字符串类型 简单数据类型
age: 20, // 数值类型
hometown: 'gz',
girlFriend: null, // null 空
city: undefined, // 未定义
hobbies: ['刷剧', '小説'], // 数组也是对象
isSingle: true, // 布尔值
// 形参
sendFlower: function(receiver) {
receiver && receiver.receiveFlower(zxh);
}
}
-
健壮的代码
编写健壮的JavaScript代码需要考虑多种情况下的调用方式,以及使用充分的错误处理机制来确保代码的稳定性。例如,通过使用条件语句和空值判断来避免未定义的变量或方法调用。
sendFlower: function(receiver) {
receiver && receiver.receiveFlower(zxh); //通过第一个receiver,防止传参错误
}
if()
{
//设置if语句
}
-
抽象和复杂性管理
随着对象数量的增加,代码的复杂性也会相应增加。在面对复杂性时,可以通过抽象概念和模块化的设计来管理和降低代码的复杂性。形参的使用可以帮助我们将函数的输入和输出进行抽象,从而提高代码的可读性和可维护性。
// 对象 object 复杂(引用)数据类型
const aas = {
name: 'zxh', // 字符串类型 简单数据类型
age: 20, // 数值类型
hometown: 'gz',
girlFriend: null, // null 空
city: undefined, // 未定义
hobbies: ['刷剧', '小説'], // 数组也是对象
isSingle: true, // 布尔值
// 形参
sendFlower: function(receiver) {
receiver && receiver.receiveFlower(zxh);
}
}
-
接口(interface)
当多个对象具有相似的方法时,可以通过接口来定义这些方法的规范,从而实现对象之间的互换使用。这样可以提高代码的灵活性和可扩展性,使得代码更易于维护和拓展。
//所谓接口,简单点理解就是写一个函数或方法实现每个对象都有的功能,例如每个人每天都需要吃饭,这个时候可以将接口定义为吃饭,然后每个对象‘人’’都会调用,简洁方便好用。
-
代理模式(proxy)
代理模式是一种常见的设计模式,可以通过代理对象来控制对真实对象的访问。在JavaScript中,代理模式可以用于实现对象之间的互换使用,从而实现某些复杂的逻辑或行为。
//所谓代理,举这样一个例子,小明暗恋小美,想送花给小美,但又怕小美拒绝,于是,小明找了小美的闺蜜小红,希望小红能够为小明多说好话,并且把花送给小美。“小红”在其中的作用,就是代理的作用。
最后
一个优秀的程序员应该严格要求自己,遵循一定的代码规范,如果对大家有所帮助,请帮忙点点赞,谢谢!