美文网首页web全栈
javascript 代码风格规范

javascript 代码风格规范

作者: Mjhu | 来源:发表于2020-09-28 16:41 被阅读0次

避免使用默认导出

  • 默认导出需要自己重命名,会让人混淆。
  • 改成这样:
import  {  HomeApi  }  from  "./home.api";

使用 index.js 统一文件夹下的导出。

  • 示例:
import  { homeActions }  from  "../../home/home-utils/home.actions";

import  { routeUtils }  from  "../../../utils/route.utils";

import  { homeTypes }  from  "../../home/home.typings";
  • 改成这样:
import  { homeActions, homeTypes }  from  "../../home";

import  { routeUtils }  from  "../../../utils";

同类处理函数包装成对象

  • 示例:

// utils.js

const  formatTimeSlots  =  ()  =>  {};

const  updateTimeSlots  =  ()  =>  {};

const  createTimeSlots  =  ()  =>  {};

//file.js

import  { formatTimeSlots, createTimeSlots, updateTimeSlots }  from  "./utils";

  • 改成这样:

// utils.js

const utils =  {

  formatTimeSlots:  ()  =>  {},

  updateTimeSlots:  ()  =>  {},

  createTimeSlots:  ()  =>  {},

};

//file.js

import  { utils }  from  "./utils";

  • 或者可以这么导入:

import  *  as utils from  "./utils";

跨层级太多尽量使用别名

  • 示例:

import  {  User  }  from  "../../../scenes/Account/User";

import  {  THEME_COLOR  }  from  "../../constants/theme";

import  { getUser }  from  "../services/userServices";

  • 改成这样:

import  {  User  }  from  "@scenes/Account/User";

import  {  THEME_COLOR  }  from  "@constants/theme";

import  { getUser }  from  "@services/userServices";

布尔值变量方法需要以 is 开头

const isCompleted =  true;

const  isValidUser  =  (user)  =>  !!user;

常量变量总是大写

const  NEW_MODE  =  "New Mode";

const  GOOGLE_KEY  =  "1da541ac298";

const  IS_PRODUCTION  = process.env.NODE_ENV  ===  "production";

使用少量变量让可读性更好

  • 示例:

const result =  (income - expenses)  - income > expenses *  2  ? income *  0,25:  0;
  • 改成这样:

const value = income - expenses;

const isUseTaxes = income > expenses *  2;

const taxes = isUseTaxes ? income *  0,25  :  0;

const result = value - taxes;

尽量将对象解构出来使用

  • 示例:
setState({

 account:  `${response.user.name}  ${response.user.surname}`,

 photo: response.user.photo,

 options: response.options,

});
  • 改成这样:

const  { user, options }  = response;

// two times if needed

const  { name, surname, photo }  = user;

setState({

 account:  `${name}  ${surname}`,

 photo,

 options,

});

合理使用简短的三元表达式替代 if

  • 示例:

if  (isCompleted)  {

  return  method();

}

return  null;
  • 改成这样:

return isCompleted ?  method()  :  null;

合理构造对象来代替多个 if

  • 示例:
const response =  await api.fetchData();

if  (response.message  ===  "saved")  {

  /* ... */

}

if  (response.message  ===  "updated")  {

  /* ... */

}

if  (response.message  ===  "error")  {

  /* ... */

}
  • 改成这样:

  const responseHandleMap =  {

  saved:  ()  =>  /* ... */,

  updated:  ()  =>  /* ... */,

  error:  ()  =>  /* ... */

  }

  /* ... */

  const response =  await api.fetchData();

 responseHandleMap[response.message]();

使用 async / await 替代 then / catch

  • 示例:

getUserInfo()

  .then(({ user, options })  =>  {

  /* ... */

  })

  .catch((e)  =>  {

  /* ... */

  });
  • 改成这样:

request  =  async  ()  =>  {

  try  {

  const  { user, options }  =  await  getUserInfo();

  /* ... */

  }  catch  (e)  {

  /* ... */

  }

};

相关文章

  • JavaScript代码风格

    代码风格 为了约定大家的代码风格,社区中诞生了一些比较代码风格规范: JavaScript Standard St...

  • javascript 代码风格规范

    避免使用默认导出 默认导出需要自己重命名,会让人混淆。 改成这样: 使用 index.js 统一文件夹下的导出。 ...

  • 代码规范与风格处理

    代码规范和风格指南 常见的“代码标准”: JavaScript Standard Style https://st...

  • js开发规范

    JavaScript编码规范 1 前言 [2 代码风格] [2.1 文件] [2.2 结构] [2.2.1 缩进]...

  • JavaScript编码规范

    JavaScript编码规范 1 前言 2 代码风格 2.1 文件 2.2 结构 2.2.1 缩进 2.2.2 空...

  • JavaScript编码规范

    JavaScript编码规范 1 前言 2 代码风格 2.1 文件 2.2 结构 2.2.1 缩进 2.2.2 空...

  • React最佳实践

    tags:开发随笔 代码风格 用ES6,遵循Airbnb的React编码规范和javascript 编码规范。两个...

  • Cocoa代码风格指南之命名规范(一)

    Cocoa代码风格指南之命名规范(一) Cocoa代码风格指南之排版规范(二) Cocoa代码风格指南之注释规范(...

  • Cocoa代码风格指南之使用规范(四)

    Cocoa代码风格指南之命名规范(一) Cocoa代码风格指南之排版规范(二) Cocoa代码风格指南之注释规范(...

  • Cocoa代码风格指南之注释规范(三)

    Cocoa代码风格指南之命名规范(一) Cocoa代码风格指南之排版规范(二) Cocoa代码风格指南之注释规范(...

网友评论

    本文标题:javascript 代码风格规范

    本文链接:https://www.haomeiwen.com/subject/ujzduktx.html