site logo

Marico' space

关于前端代码组织的一点点思考: 什么样的代码是好代码?

前端技术 2024-07-25 22:49:50 357

近日进入一个全新的项目组,拜读各位前辈的作品,触发一点点思索: 什么样的代码是好代码?

之前读过一本代码界的名著——《Clean Code》的中文版——《代码整洁之道》,开篇就是这样一句话,“衡量代码质量的唯一标准:WFT/min“。就是在代码评审时,你每分钟收货了多少句国骂。当然,WTF是他国的国骂,或者是国际骂。

初次阅读一个act组件时, 在某些操作需要在页面显示一个警告,警告写在主文件,警告的开闭flag和内容放在state——很常见的处理。再细细向下度,要对用户输入做一些校验, 并在此时弹出警告。owner将校验放入到一个util文件,校验方法接收用户输入和一个显示弹窗的方法,返回true/false。方法校验时,发现异常, 直接调用警告显示方法,显示弹窗,然后setTimeout 3秒后消失。

可能之前code review时被虐的太多了,读到此处立马触发一个WTF。脑海中出现的第一个词就是“单一职责”, 每个组件、方法、函数、类,都要遵循“单一职责”的基本原则,即一个单位只做一件事。 脑海中出现的第二个词是“副作用”,是的,我们编写代码,尤其是通用的代码,都要尽量减少“副作用”。所谓“无副作用”,就是无论在什么时候,只要函数输入参数不变,得到的结果就不变。此案例中的代码,调用到了显示通知,我们无法保证通知的显示是始终如一的结果。在前端中,常见的副作用就是操作dom,操作cookie,操作存储,还有一些类似于随机数值,hash之类的。

所以,此处记录好代码的一条评判条件就是,单一职责,无副作用。

好代码: 单一职责, 无副作用

关于“单一职责”的具体说明和要求,可以搜索“面向对象开发的五项基本原则”,并阅读其要求。虽然React开发并没有用到面向对象开发的形,但React缺少对象吗?React+TS,便是另一种形式的OOP。还有,作为Coder,或者Coderist,更是要将这些原则融入灵魂,融入血液。

今天就写到这里。日后会根据遇到的代码问题,继续此话题并不断汇总,然后依此做出我的代码规范和checklist,也欢迎大家指正挑战。