冲击大厂,从写出高质量代码开始

209 阅读5分钟

前言

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中,代理模式可以用于实现对象之间的互换使用,从而实现某些复杂的逻辑或行为。

//所谓代理,举这样一个例子,小明暗恋小美,想送花给小美,但又怕小美拒绝,于是,小明找了小美的闺蜜小红,希望小红能够为小明多说好话,并且把花送给小美。“小红”在其中的作用,就是代理的作用。

最后

一个优秀的程序员应该严格要求自己,遵循一定的代码规范,如果对大家有所帮助,请帮忙点点赞,谢谢!