小知识,大挑战!本文正在参与“程序员必备小知识”创作活动
代码的可读性,可维护性,可复用性
可读性
- 编码风格保持一致:单行注释、多行注释、链式代码换行格式、代码缩进、常量大写、使用 let const、箭头函数
- 代码清晰表达意图:命名语义化,使用熟悉的英文单词,
- 注释清晰,
可维护性
- 区分功能模块,模块清晰,业务模块和工具模块
- 目录结构
- 命名规范
- 适度拆分
- 尽量不要去写死代码,做成可配置的
可复用性
- 适度的封装
- 提取公共功能
- 独立形成小的单元
- 保持函数单一职责,灵活组合
编码规范
试想一下,在一个 team 中如果每个人的编码风格都是不同的,这种情况将是多么的可怕呢。为了最大限度的解决协同开发过程中的问题,比如:命名不规范、代码理解困难、代码执行效率低下。在代码交接的时候为了缩短时间、挺高阅读和理解效率,良好的统一的编码规则就显得尤为重要。
通常我们去做编码规则统一的方式都在项目中引入格式化工具(Prettier)和编码规则校验(ESLint)
Prettier
- 本地安装
npm install --save-dev --save-exact prettier
- 创建配置文件
.prettierrc,让编辑器知道正在使用 prettier - 创建一个
.prettierignore文件,让Prettier CLI和 编辑器 知道哪些文件不需要格式化。
.prettierignore基于.gitignore和.eslintignore(如果你有的话)
build/
lib/
es/
dist/
- 自己常用的
.prettierrc
{
"singleQuote": true, // 使用单引号代替双引号
"editor.tabSize": 2,
"trailingComma": "es5",
"printWidth": 100,
"useTabs": false,
"semi": false, // 仅在可能导致 ASI 失败的行的开头添加分号
"jsxSingleQuote": false, // 在 JSX 中使用单引号代替双引号
"bracketSpacing": true, // 在对象文字中的括号之间打印空格。true 示例:{ foo: bar }
"bracketSameLine": false, // 将 > 多行 HTML(HTML、JSX)元素的 放在最后一行的末尾
"proseWrap": "never",
"arrowParens": "avoid", // 尽可能省略括号。例子:x => x
"overrides": [
{
"files": ".prettierrc", // 让 Prettier 格式化自己的.prettierrc文件
"options": {
"parser": "json"
}
}
]
}
ESLint
几乎在所有的前端项目中都会用到 ESLint,大部分的编辑器都已经内置了。它可以静态分析我们代码中的问题,给出提示和快速解决方案。
- 本地安装
npm install eslint --save-dev
- 运行
eslint --init之后,.eslintrc文件会在你的文件夹中自动创建。
3. 自定义配置 规则
"off" or 0 - 关闭规则
"warn" or 1 - 将规则视为一个警告(不会影响退出码)
"error" or 2 - 将规则视为一个错误 (退出码为1)
- 常用的规则
module.exports = {
env: {
browser: true,
es2021: true,
},
extends: [
'plugin:react/recommended',
'airbnb',
],
parserOptions: {
ecmaFeatures: {
jsx: true,
},
ecmaVersion: 12,
sourceType: 'module',
},
plugins: [
'react',
],
rules: {
'react-hooks/rules-of-hooks': OFF,
'react/no-array-index-key': OFF,
'react/prefer-stateless-function': OFF,
'import/named': OFF,
'no-param-reassign': OFF,
'react/sort-comp': OFF,
'no-underscore-dangle': OFF,
'eslint-comments/disable-enable-pair': OFF,
},
};
结语
如果这篇文章帮到了你,欢迎点赞👍和关注⭐️。
文章如有错误之处,希望在评论区指正🙏🙏。
附: