当前位置:首页 > 科技  > 软件

有时候,技术问题的最优解并不是从技术考虑

来源: 责编: 时间:2024-01-15 09:22:12 296观看
导读大家好,我卡颂。最近我们技术群发生个事儿,我觉得还挺有代表性的。有时候,技术问题的最优解并不是从技术考虑。对于工作时间不长的程序员,这篇文章可能对你有帮助。事情起因事情起因是一位同学在群里问:“怎么获取react el

N1228资讯网——每日最新资讯28at.com

大家好,我卡颂。N1228资讯网——每日最新资讯28at.com

最近我们技术群发生个事儿,我觉得还挺有代表性的。有时候,技术问题的最优解并不是从技术考虑。N1228资讯网——每日最新资讯28at.com

对于工作时间不长的程序员,这篇文章可能对你有帮助。N1228资讯网——每日最新资讯28at.com

事情起因

事情起因是一位同学在群里问:“怎么获取react element对应dom中的文本?”N1228资讯网——每日最新资讯28at.com

N1228资讯网——每日最新资讯28at.com

为什么想获取文本内容呢,原来他是想做「交互的打点上报功能」N1228资讯网——每日最新资讯28at.com

N1228资讯网——每日最新资讯28at.com

他希望这个打点上报功能是完全自动化、业务无感知的。但这里存在一个悖论:如果打点上报是“业务无感知的”,那打点功能肯定要和业务解耦。既然和业务解耦,就无法记录“业务的完整操作链路”。N1228资讯网——每日最新资讯28at.com

那么类似“用户点击了一个按钮,我想知道这个按钮是否在对话框中,如果在,取出对话框的标题上报”就无法实现。N1228资讯网——每日最新资讯28at.com

想一想,如果是你,会怎么实现这个功能呢?N1228资讯网——每日最新资讯28at.com

功能实现

这位同学的做法是 —— 梳理现有业务逻辑中的组件层级,从特定的层级里拿数据。N1228资讯网——每日最新资讯28at.com

比如Modal组件的标题渲染成HTML是:N1228资讯网——每日最新资讯28at.com

<div>  <h1>这里是标题</h1></div>

那么他会按div -> h1这样的层级结构取标题数据。具体实现还涉及很多hack的方法。N1228资讯网——每日最新资讯28at.com

比如,组件没有挂载时如何获取数据?他通过把组件挂载在一个离屏DOM上,再分析他:N1228资讯网——每日最新资讯28at.com

function analyzeCpn(node: ReactNode) {  const div = document.createElement('div');  const root = reactDOM.createRoot(div);  flushSync(() => root.render(node));  // ...分析 div.innerHTML}

再比如,如何根据DOM不同,增加一些特殊的属性呢?可以覆写jsx、React.createElement方法。N1228资讯网——每日最新资讯28at.com

问题

这么实现,当前项目确实没问题。但有个很现实的问题:随着业务不断迭代,如果哪天组件结构变了,按以往结构获取数据就会失败,难道我还得跟着业务一起改打点上报代码么?N1228资讯网——每日最新资讯28at.com

一个打点上报功能硬生生开发成了爬虫功能。N1228资讯网——每日最新资讯28at.com

但是,这位同学并不觉得这有问题。从他的回答看,他的思想是 —— 技术问题就应该交给技术解决。N1228资讯网——每日最新资讯28at.com

N1228资讯网——每日最新资讯28at.com

实际上有时候,技术问题的最优解并不是从技术考虑。就像遇到产品的不合理需求,我们首先思考的,不应该是“如何实现他”,而是“从哪个角度把需求怼回去”。N1228资讯网——每日最新资讯28at.com

就本文的例子来说,一种合理的解决方式是:N1228资讯网——每日最新资讯28at.com

  • 调研一下主流打点上报库的实现逻辑。
  • 调研完毕后和领导沟通。
  • 沟通好后让领导拉个会,会上把你的方案跟大家同步一下,让大家知道上报方案如何实现。
  • 各个业务同学认领自己那部分的打点上报需求,遇到技术问题和你沟通,你辅助解决。

总结

作为搞通用服务的同学,要接近业务,又不能让自己陷入业务。N1228资讯网——每日最新资讯28at.com

回到本文的例子,如果你替业务同学实现了业务逻辑打点上报还不知会他们。未来业务需求变化导致代码变化后,打点上报有误,这是谁的锅呢?N1228资讯网——每日最新资讯28at.com

业务同学会说:我根本不知道打点这回事儿啊。N1228资讯网——每日最新资讯28at.com

到时候你就欲哭无泪了。N1228资讯网——每日最新资讯28at.com

所以,明确自己的工作职责,做好向上管理,不是所有技术问题都得靠技术解决。N1228资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-60998-0.html有时候,技术问题的最优解并不是从技术考虑

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 我愿称之为开源界最好用的行为验证码

下一篇: 面试官问:synchronized为什么是重量级锁?

标签:
  • 热门焦点
  • 小米平板5 Pro 12.4简评:多专多能 兼顾影音娱乐的大屏利器

    疫情带来了网课,网课盘活了安卓平板,安卓平板市场虽然中途停滞了几年,但好的一点就是停滞的这几年行业又有了新的发展方向,例如超窄边框、高刷新率、多摄镜头组合等,这就让安卓
  • SpringBoot中使用Cache提升接口性能详解

    环境:springboot2.3.12.RELEASE + JSR107 + Ehcache + JPASpring 框架从 3.1 开始,对 Spring 应用程序提供了透明式添加缓存的支持。和事务支持一样,抽象缓存允许一致地使用各
  • 让我们一起聊聊文件的操作

    文件【1】文件是什么?文件是保存数据的地方,是数据源的一种,比如大家经常使用的word文档、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存数据,它既可以保
  • 三万字盘点 Spring 九大核心基础功能

    大家好,我是三友~~今天来跟大家聊一聊Spring的9大核心基础功能。话不多说,先上目录:图片友情提示,本文过长,建议收藏,嘿嘿嘿!一、资源管理资源管理是Spring的一个核心的基础功能,不
  • 破圈是B站头上的紧箍咒

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之每年的暑期档都少不了瞄准追剧女孩们的古偶剧集,2021年有优酷的《山河令》,2022年有爱奇艺的《苍兰诀》,今年却轮到小破站抓住了追
  • 年轻人的“职场羞耻感”,无处不在

    作者:冯晓亭 陶 淘 李 欣 张 琳 马舒叶来源:燃次元&ldquo;人在职场,应该选择什么样的着装?&rdquo;近日,在网络上,一个与着装相关的帖子引发关注,在该帖子里,一位在高级写字楼亚洲金
  • 东方甄选单飞:有些鸟注定是关不住的

    作者:彭宽鸿来源:华尔街科技眼&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;东方甄选创始人俞敏洪带队的&ldquo;7天甘肃行&rdquo;直播活动已在近日顺利收官。成立后一
  • 三星获批量产iPhone 15全系屏幕:苹果史上最惊艳直屏

    按照惯例,苹果将继续在今年9月举办一年一度的秋季新品发布会,有传言称发布会将于9月12日举行,届时全新的iPhone 15系列将正式与大家见面,不出意外的话
  • 2299元起!iQOO Pad开启预售:性能最强天玑平板

    5月23日,iQOO如期举行了新品发布会,除了首发安卓最强旗舰处理器的iQOO Neo8系列新机外,还在发布会上推出了旗下首款平板电脑——iQOO Pad,其搭载了天玑
Top