加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.1461.cn/)- 应用程序、AI行业应用、CDN、低代码、区块链!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

写出别人一眼就懂的代码:逻辑清晰,规范至上

发布时间:2026-10-27 11:17:15 所属栏目:语言 来源:DaWei
导读:  跟产品吵。昨天下午三点,空调滴水声比键盘敲得还响,PM把PRD第十七版甩进钉钉,说“就这个逻辑,前端照着写”。我扫了一眼,three.js加载路径写在Vue组件data里,而初始化函数叫initThreeSceneButActuallyJustResizesTheCan

  跟产品吵。昨天下午三点,空调滴水声比键盘敲得还响,PM把PRD第十七版甩进钉钉,说“就这个逻辑,前端照着写”。我扫了一眼,three.js加载路径写在Vue组件data里,而初始化函数叫initThreeSceneButActuallyJustResizesTheCanvas。我当场点开控制台打了个console.time,三秒后关掉——不是测性能,是测我还能忍几秒。


  这个我敢打包票:去年六月重构登录页,后端扔过来的JWT校验逻辑里嵌了三个try/catch,每个catch里都new Date().getTime()加个随机数再base64,美其名曰“防重放”。结果测试环境一跑,时间戳总比NTP服务器快十八毫秒。没人改,最后是我手动把new Date()替成performance.now(),然后在commit message里写了句“别问,问就是base64没加密功能”。


  首屏救火?上个月Lighthouse跑分截图发到群里没人回,连个表情包都没有。倒不是分数难看——FCP三百七十二 KB里有两百零三 KB是Webpack把node_modules里的lodash-es全打包进来了,还带source map。可PM盯着的是“首屏图标没对齐”,我就得先把图标padding从3.2px调成3px,再去动tree-shaking配置。你猜谁去倒水?刚转正的前端实习生,他拎着杯子路过我工位时,我顺手把console.log('debug: login token expired')那行删了,换成了throw new Error('token invalid, pls check auth middleware').


  我原以为只要命名规范、缩进一致、函数不超过二十行,就真能“一眼就懂”。结果上周合并请求,我勾选“Squash and merge”——先点确认按钮,再点输入框粘贴changelog,再点右上角那个小叉关掉弹窗。就这三步,后端同事提了七个评论:“为什么不用rebase?”“token解析应该抽成hook吧?”“这个HTTP状态码是401还是403你查过RFC吗?”我回复“已改”,他秒回“已阅”,然后——他换了根紫色Type-C充电线,原来那根是灰的。桌面那个没关的录屏还在录,左下角时间显示15:47:03,文件名是“未命名_20250712_154703.mp4”。


  规范至上?哈。我们组现在代码审查有个潜规则:但凡变量名里带下划线的,一律标为high risk;但凡用了optional chaining后面接空值判断的,必须补一行注释“此处防undefined,非兜底逻辑”。结果上礼拜上线后,CDN账单多出两万三千块——运维说是因为某次预热发布把静态资源版本号写死了,缓存没失效。我没参与那次发布,但我认得出那个版本号格式:v2.3.7-build-20250711-1422,build后面那个时间戳,比我生日还准。


  优胜劣汰不是玄学。是昨天早上八点五十,我站在茶水间看咖啡机漏液,隔壁组那个天天戴降噪耳机的前端冲进来喊“你写的useTokenExpirationHook报错了”,我把那行useEffect里第二个参数数组删了,他说“等等我还没说完”,我打断他:“你昨天commit里把deps写了[expiresAt],可expiresAt是个Date对象,每次render都是新引用。”他愣了三秒,转身回去改。五分钟后GitLab通知:merge request approved。KPI折算表里这单算“高优先级问题闭环”,不计入代码量,但加0.8权重分。


文章配图,仅供参考

  逻辑清晰的反面,从来不是混乱,是“我以为你懂”。比如那个叫handleClickOutsideButOnlyIfModalIsOpenAndNotDragging的函数——名字够长吧?可它里面居然调了getWindowSize()三次,中间还混着document.body.clientWidth和window.innerWidth。我删掉两次调用,只留最后一次,加了注释:“此值仅用于计算蒙层透明度,非布局依据”。结果第二天Code Review里后端批注:“请说明为何不用CSS mask”。我回复:“mask不支持IE11”,他回:“IE11下我们挂公告”。我删了整段函数,换成div[aria-hidden="true"] { display: none }。


  无所谓。反正我现在改完一行代码,必做三件事:本地起服务看一眼,Git提交前run一次prettier --write,再把VS Code关掉重开——不是为了刷新,是怕那个没关的录屏还在录。上回录屏文件太大,自动上传到公司NAS失败,弹窗卡在半空,标题栏写着“正在尝试重新连接…(27/64)”。后来我才发现,那个27是上传失败次数,64是总文件数。其中第42个是package-lock.json的diff,纯文本,三百二十六行。它根本不需要上传。


  所以今天下午三点,我又打开那个登录页的Git历史。想看看第一次提交是谁写的,commit message是什么。查到了——2025年7月,一个叫“frontend-dev”的账号,没关联邮箱,message是“initial”。我点开文件,发现最上面有一行注释:// todo: extract to utils —— 写这行的人,三天后就离职了。现在,这句话还在那儿。我没删。也不打算删。

(编辑:站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!