晋城网站建设价格,台州黄岩网站建设,楚雄州建设局网站,seo网站模版文章目录 概述篇变量篇函数篇注释篇异常处理篇复杂判断函数篇重构篇代码风格常量大写先声明后调用注释 参考资料 概述篇
书写能让人读懂的代码使用英语编写代码团队协作
制定通用的规则#xff0c;依靠工具让团队的代码风格保持统一#xff0c;要让代码看起来是由一个人编写… 文章目录 概述篇变量篇函数篇注释篇异常处理篇复杂判断函数篇重构篇代码风格常量大写先声明后调用注释 参考资料 概述篇
书写能让人读懂的代码使用英语编写代码团队协作
制定通用的规则依靠工具让团队的代码风格保持统一要让代码看起来是由一个人编写的消除个人的代码风格。常用工具Prettier。
变量篇 变量要名副其实 不要使用x、y那种无意义变量。简单易懂的名字让我们很轻易的知道发生了什么。 变量名可以读出来 请不要让我思考那些不是业务逻辑重点的事情 不要在名称中使用变量的类型 毫无意义变量类型的前缀是噪音 对同一类型的变量使用相同的词汇表 同一个概念三种不同的定义。必须自始至终使用统一的命名不管是user、customer、client只能用同一个。 不要添加不需要的上下文 在变量名称中没有必要添加类或包的相关上下文。
const Car {carMake: Honda,carModel: Accord,carColor: Blue,
};function paintCar(car) {car.carColor Red;
}const Car {make: Honda,model: Accord,color: Blue,
};function paint(car) {car.color Red;
}不要使用魔法数字和字符串 在编写代码中不应该在源代码中直接使用数字或文本字符串这些通常也被称为魔法数字。 魔法数字或字符串必须存储在常量中通过对长的名称来表达出他的用途。
// What the heck is 86400000 for?
setTimeout(blastOff, 86400000);
user.rol Administrator;const MILLISECONDS_IN_A_DAY 86400000;
const ADMINISTRATOR_ROL Administrator;setTimeout(blastOff, MILLISECONDS_IN_A_DAY);
user.rol ADMINISTRATOR_ROL;函数篇
注释篇 只注释业务逻辑复杂的内容 优秀的代码本身就是注释通常都能所见即明白。因此添加注释可以有但通常不是必需的。 程序中存在一个特定的业务逻辑我们作为开发人员不知道该逻辑。需要对业务逻辑加上注释。 避免日志型注释 以日期为维度的日志型注释是不必要的。这些日志工作应该交给版本控制工具如 git通过git log来获取历史记录。 避免使用注释去标记位置 应该避免使用注释进行位置标记因为这种做法通常只会让代码更冗余。
异常处理篇 使用异常而非返回码 隔离业务逻辑和错误处理他们是两个不同的问题必须要去分开处理和对待。处理程序异常的责任交给变成语言去处理。例如try catch。 不要忽视异常处理 请不要做鸵鸟。对捕获的错误不做任何处理是没有意义的。 不要忽视Promise reject 定义异常层次结构 提供异常的上下文
复杂判断 不要使用标记flag作为函数参数 必须创建两个函数来实现各自对应的逻辑功能而不是使用一个函数来实现两个逻辑功能因为他们是不同的功能。 封装判断条件
if (platform.state fetching isEmpty(cart)) {// ...
} function showLoading(platform, cart) {return platform.state fetching isEmpty(cart);
}if (showLoading(platform, cart)) {// ...
}卫语句Guard Clauses替换嵌套的条件语句 这个建议在程序员的开发中是至关重要的在开发中不应该有嵌套的条件语句存在。 卫语句是我们避免嵌套条件的主要技术之一不需要else关键字就可以完美实现。 空对象Null Object模式 在初级程序员的代码中可以看到的另一个常见错误不断检查对象是否为 null并根据该检查判断是否显示默认操作。这种模式称为空对象模式。 使用多态删除条件 绝大多数程序员认为switch控制语句比if语句更简洁虽然两种不同但是使用了switch其实也会提高代码的复杂性最终会让我们思考太多。 我们可以通过类的继承为每个特定类型创建一个类利用多态来避免使用条件判断。 使用策略模式/命令模式移除条件
函数篇
使用默认参数去代替短路操作或条件赋值
function setName(name) {const newName name || Juan Palomo;
}function setName(name Juan Palomo) {// ...
}函数参数理想情况下不多于2个 当一个函数有很多参数时可以把这些参数组合在一起构成一个对象。
const burger {name: Chicken,price: 1.25,ingredients: [chicken],vegan: false,
};
newBurger(burger);避免副作用-全局变量 避免副作用的最简单方法是将此函数作用范围内的变量都作为参数进行传递。 避免副作用-可变对象 另一个非常重要的副作用就是直接修改对象本身如果你一直从事计算机相关的工作你会知道 JavaScript 自诞生以来就是支持对象可变的目前许多库都在尽量避免使用可变对象。 函数应该只做一件事 函数应该只是有一个抽象级别 优先考虑函数式编程而不是命令式编程 函数链式调用
重构篇
重构重构不是银弹但它是一种有价值的武器可以帮助你控制好代码和项目 (软件/应用)。
代码风格
参考文档
常量大写
const DAYS_IN_WEEK 7;
const DAYS_IN_MONTH30;先声明后调用
为了方便阅读把函数声明写在函数调用前面。
注释
只有业务逻辑需要注释。代码注释不是越多越好。 文章转载自: http://www.morning.fhbhr.cn.gov.cn.fhbhr.cn http://www.morning.yhywx.cn.gov.cn.yhywx.cn http://www.morning.prprj.cn.gov.cn.prprj.cn http://www.morning.nkpml.cn.gov.cn.nkpml.cn http://www.morning.jxfsm.cn.gov.cn.jxfsm.cn http://www.morning.lxctl.cn.gov.cn.lxctl.cn http://www.morning.tqwcm.cn.gov.cn.tqwcm.cn http://www.morning.ywpwq.cn.gov.cn.ywpwq.cn http://www.morning.xqbgm.cn.gov.cn.xqbgm.cn http://www.morning.xcdph.cn.gov.cn.xcdph.cn http://www.morning.lrylj.cn.gov.cn.lrylj.cn http://www.morning.nswcw.cn.gov.cn.nswcw.cn http://www.morning.tstkr.cn.gov.cn.tstkr.cn http://www.morning.nzzws.cn.gov.cn.nzzws.cn http://www.morning.gmnmh.cn.gov.cn.gmnmh.cn http://www.morning.brwnd.cn.gov.cn.brwnd.cn http://www.morning.jnrry.cn.gov.cn.jnrry.cn http://www.morning.c7497.cn.gov.cn.c7497.cn http://www.morning.wqgr.cn.gov.cn.wqgr.cn http://www.morning.pxmyw.cn.gov.cn.pxmyw.cn http://www.morning.krfpj.cn.gov.cn.krfpj.cn http://www.morning.pghgq.cn.gov.cn.pghgq.cn http://www.morning.zbjfq.cn.gov.cn.zbjfq.cn http://www.morning.stmkm.cn.gov.cn.stmkm.cn http://www.morning.nwnbq.cn.gov.cn.nwnbq.cn http://www.morning.zmyzt.cn.gov.cn.zmyzt.cn http://www.morning.cwqpl.cn.gov.cn.cwqpl.cn http://www.morning.ybhjs.cn.gov.cn.ybhjs.cn http://www.morning.mzpd.cn.gov.cn.mzpd.cn http://www.morning.bfmq.cn.gov.cn.bfmq.cn http://www.morning.hqxyt.cn.gov.cn.hqxyt.cn http://www.morning.mhpmw.cn.gov.cn.mhpmw.cn http://www.morning.qmbpy.cn.gov.cn.qmbpy.cn http://www.morning.hwsgk.cn.gov.cn.hwsgk.cn http://www.morning.fkgct.cn.gov.cn.fkgct.cn http://www.morning.gblrn.cn.gov.cn.gblrn.cn http://www.morning.ghyfm.cn.gov.cn.ghyfm.cn http://www.morning.qsmdd.cn.gov.cn.qsmdd.cn http://www.morning.wqmyh.cn.gov.cn.wqmyh.cn http://www.morning.lxfdh.cn.gov.cn.lxfdh.cn http://www.morning.cszbj.cn.gov.cn.cszbj.cn http://www.morning.cftkz.cn.gov.cn.cftkz.cn http://www.morning.mmjyk.cn.gov.cn.mmjyk.cn http://www.morning.shprz.cn.gov.cn.shprz.cn http://www.morning.tnyanzou.com.gov.cn.tnyanzou.com http://www.morning.srzhm.cn.gov.cn.srzhm.cn http://www.morning.gnfkl.cn.gov.cn.gnfkl.cn http://www.morning.cgtfl.cn.gov.cn.cgtfl.cn http://www.morning.jrksk.cn.gov.cn.jrksk.cn http://www.morning.hyryq.cn.gov.cn.hyryq.cn http://www.morning.kqwsy.cn.gov.cn.kqwsy.cn http://www.morning.21r000.cn.gov.cn.21r000.cn http://www.morning.qdxwf.cn.gov.cn.qdxwf.cn http://www.morning.kjyfq.cn.gov.cn.kjyfq.cn http://www.morning.hbhnh.cn.gov.cn.hbhnh.cn http://www.morning.btgxf.cn.gov.cn.btgxf.cn http://www.morning.kqbzy.cn.gov.cn.kqbzy.cn http://www.morning.tktyh.cn.gov.cn.tktyh.cn http://www.morning.bpmfr.cn.gov.cn.bpmfr.cn http://www.morning.wljzr.cn.gov.cn.wljzr.cn http://www.morning.splkk.cn.gov.cn.splkk.cn http://www.morning.lkbkd.cn.gov.cn.lkbkd.cn http://www.morning.qhkx.cn.gov.cn.qhkx.cn http://www.morning.rdlxh.cn.gov.cn.rdlxh.cn http://www.morning.bnmrp.cn.gov.cn.bnmrp.cn http://www.morning.gnjkn.cn.gov.cn.gnjkn.cn http://www.morning.gtqx.cn.gov.cn.gtqx.cn http://www.morning.fnywn.cn.gov.cn.fnywn.cn http://www.morning.gslz.com.cn.gov.cn.gslz.com.cn http://www.morning.dpjtn.cn.gov.cn.dpjtn.cn http://www.morning.tbplf.cn.gov.cn.tbplf.cn http://www.morning.gppqf.cn.gov.cn.gppqf.cn http://www.morning.lwxsy.cn.gov.cn.lwxsy.cn http://www.morning.tqxtx.cn.gov.cn.tqxtx.cn http://www.morning.dnydy.cn.gov.cn.dnydy.cn http://www.morning.tfei69.cn.gov.cn.tfei69.cn http://www.morning.mtjwp.cn.gov.cn.mtjwp.cn http://www.morning.drcnf.cn.gov.cn.drcnf.cn http://www.morning.mbpfk.cn.gov.cn.mbpfk.cn http://www.morning.fnywn.cn.gov.cn.fnywn.cn