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

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

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

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

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

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

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

事情起因

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

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

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

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

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

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

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

功能实现

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

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

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

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

比如,组件没有挂载时如何获取数据?他通过把组件挂载在一个离屏DOM上,再分析他:Enz28资讯网——每日最新资讯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方法。Enz28资讯网——每日最新资讯28at.com

问题

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

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

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

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

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

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

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

总结

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

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • 0糖0卡0脂 旭日森林仙草乌龙茶优惠:15瓶到手29元

    旭日森林无糖仙草乌龙茶510ml*15瓶平时要卖为79.9元,今日下单领取50元优惠券,到手价为29.9元。产品规格:0糖0卡0脂,添加草本仙草汁,清凉爽口,富含茶多酚,保留
  • 服务存储设计模式:Cache-Aside模式

    Cache-Aside模式一种常用的缓存方式,通常是把数据从主存储加载到KV缓存中,加速后续的访问。在存在重复度的场景,Cache-Aside可以提升服务性能,降低底层存储的压力,缺点是缓存和底
  • 不容错过的MSBuild技巧,必备用法详解和实践指南

    一、MSBuild简介MSBuild是一种基于XML的构建引擎,用于在.NET Framework和.NET Core应用程序中自动化构建过程。它是Visual Studio的构建引擎,可在命令行或其他构建工具中使用
  • Flowable工作流引擎的科普与实践

    一.引言当我们在日常工作和业务中需要进行各种审批流程时,可能会面临一系列技术和业务上的挑战。手动处理这些审批流程可能会导致开发成本的增加以及业务复杂度的上升。在这
  • 之家push系统迭代之路

    前言在这个信息爆炸的互联网时代,能够及时准确获取信息是当今社会要解决的关键问题之一。随着之家用户体量和内容规模的不断增大,传统的靠"主动拉"获取信息的方式已不能满足用
  • 拼多多APP上线本地生活入口,群雄逐鹿万亿市场

    Tech星球(微信ID:tech618)文 | 陈桥辉 Tech星球独家获悉,拼多多在其APP内上线了&ldquo;本地生活&rdquo;入口,位置较深,位于首页的&ldquo;充值中心&rdquo;内,目前主要售卖美食相关的
  • 一条抖音4亿人围观 ! 这家MCN比无忧传媒还野

    作者:Hiu 来源:互联网品牌官01 擦边少女空降热搜,幕后推手曝光被网友誉为&ldquo;纯欲天花板&rdquo;的女网红井川里予,近期因为一组哥特风照片登上热搜,引发了一场互联网世界关于
  • 华为Mate 60保护壳曝光:硕大后置相机模组 凸起程度有惊喜

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
  • 英特尔Xe HPG游戏显卡:拥有512EU,单风扇版本

    据10 月 30 日外媒 TheVerge 消息报道,英特尔 Xe HPG Arc Alchemist 的正面实被曝光,不仅拥有 512 EU 版显卡,还拥有 128EU 的单风扇版本。另外,这款显卡 PCB
Top