这里只列出半城云特殊约定的规范、或者是 eslint、prettier 难以限制的规则。其它未提及的可参考airbnb javascript 代码规范。
单文件不能超过 600 行,若超过应进行拆分。
// 正例
const [visible, setVisible] = useState < boolean > false;
const [submitting, setSubmitting] = useState(false);
const handleSubmit = async (values: LoginParamsType) => {
setSubmitting(true);
};
const { status } = data;
return <div className={styles.container}>{status}</div>;
建议使用 handleSomething 命名形式,以及按照逻辑顺序排序
尽量(不到万不得已)不要手动操作 DOM,包括:增删改 dom 元素、以及更改样式、添加事件等。
展示类型及文档流相关/Display & Flow
其他如透明度,光标样式及衍生内容/Opacity, Cursors, Generated Content
无太大意义,而且要写较多类名,以及无法获得编辑器补全提示。
bem 命名方式进行样式隔离时,可参考以下类名前缀 全局: g- 页面: p- 组件: c-
不建议忽略 package-lock.json
无法锁定版本,依赖版本不一致可能导致问题
rebase 代替 merge
HTML5 中新增很多语义化标签,所以优先使用语义化标签,避免一个页面都是 div 或者 p 标签
代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。注意词性、单复数、时态等的准确表达。 说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式也要避免采用。
正例:henan / luoyang / rmb 等国际通用的名称,可视同英文。
反例:DaZhePromotion [打折] / getPingfenByName() [评分] / int 某变量 = 3
杜绝完全不规范的缩写,避免望文不知义
反例:AbstractClass“缩写”命名成 AbsClass;condition“缩写”命名成 condi,此类随意缩写严重降低了代码的可阅读性。
不同逻辑、不同语义、不同业务的代码之间插入一个空行分隔开来以提升可读性
说明:任何情形,没有必要插入多个空行进行隔开。
必须优先使用 ES6,7 中新增的语法糖和函数。这将简化你的程序,并让你的代码更加灵活和可复用。
必须强制使用 ES6, ES7 的新语法,比如箭头函数、await/async , 解构, let , for...of 等等
条件判断能使用三目运算符和逻辑运算符解决的,就不要使用条件判断,但是谨记不要写太长的三目运算符。如果超过 3 层请抽成函数,并写清楚注释。
按照外部包、公共文件、绝对路径、相对路径的顺序排序
另外要注意引用大小写问题,在一些对文件路径大小写敏感的系统会出问题。
留意排查项目报错或者警告信息,而不是能跑就行。
使用了 git,对于无用代码必须及时删除,例如:一些调试的 console 语句、无用的弃用功能代码。
附: 函数方法常用的动词:
附:常用的缩写:
常见编程命名缩写
全部采用小写方式, 以中划线分隔。
正例:mall-management-system
反例:mall_management-system / mallManagementSystem
全部采用小写方式, 以中划线分隔,有复数结构时,要采用复数命名法
正例: scripts / styles / components / images / utils / layouts / demo-styles / demo-scripts
反例: script / style / demo_scripts / demoStyles
【特殊】react 项目中的页面、组件目录,使用大驼峰命名
正例: HeadSearch / PageLoading
反例: head-search / page-loading / authorized / notice-icon
参照 ant desiagn pro
就近原则,相关的文件放一起。