过犹不及,别再在编程中高射炮打蚊子

2023-11-06 00:20

本文主要是介绍过犹不及,别再在编程中高射炮打蚊子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在编程的社区中,有些现象让我感到十分困扰。(为了更好地阐述我的观点,)我将以 Vue 作为例子,尽管这同样存在于其他编程领域之中。

首先,我们一起来看看问题的根源。

在编写代码时,可能会遇到一些问题,自然想(前往社区)寻求帮助。此时,你会迫切地想得到问题的解决方案。然而,我对部分的问题回答者保留意见。他们鼓吹提问者 切换工具、类库或者整个框架 ,而不是根据实际情况提供一个恰到好处的 解决方案 。

部分回答者不会尝试去了解你所遇问题的背景。他们会建议你去用 高射炮 ,尽管你只想杀的 bug 是只 蚊子 。

这实在是答非所问!比如我在烤一个蛋糕时,问你:

我正在烤一个蛋糕,烤箱应该设置多少度呢?

我期待的答案是告诉我应该设置什么温度,然而回答却并非如此:

别烤蛋糕了,你做过沙拉吗?

在社区中类似的场景比较常见。我不是想指责什么,但这并不是一个好现象。我刚接触编程时,也经常犯这个错误。但之后我意识到这并不对。

我并不是说换一个工具就不能解决问题,我的意思是: 需要了解问题的需求与背景 。

与其建议对方 用自己正在用的 ,不如在了解背景之后, 提供一个恰到好处的解决方案。不要因为熟悉某项技术,就不断怂恿他人使用。

那么,Vue 的社区有什么问题呢?

在 Vue 的社区中,无论是在 Facebook、论坛还是 Discord,只要涉及到处理 state 或者 SEO 的问题,回答者经常在 询问提问者项目的规模 之前,就给出一样的回答。

  • 提问者:我 Vue 的项目中碰到一点 SEO 问题 […] 我该怎么办呢? - 回答者:你尝试过 nuxt 吗?

这并不是好的答案?如果提问者的项目中并未使用 nuxt,回答者首先应该根据提问者的项目背景提供解决方案,而不是建议他直接去使用 nuxt。

不要误会,我喜欢 nuxt,nuxt的作者是法国人,而我一向法国兄弟的好哥们。我的观点是:nuxt 并不是在 Vue 项目中解决 SEO 的唯一方案。

迁移到 nuxt 并不是一件简单的事情,nuxt 有自己的架构,如果和现在的架构不兼容时,迁移的成本并不低。

因此,告诉提问者:“ 用 nuxt 就好 ”,实在不是好的解决方案。这和只建议人们使用 prerender-spa-plugin 或其他工具是一样的。

  • 提问者:有两个组件,我想让他们共享状态,我该怎么做呢? - 回答者:用 vuex 就好。

vuex 是两个组件共享状态的唯一方案吗?显然不是!

我也十分喜欢 vuex,我在项目中经常使用它,但 vuex 在小的项目中,实在是大材小用。先了解背景与需求,再去回答对应的问题!

在 Vue 中,要共享状态, 至少有三种不同的解决方案 :共享一个响应式的对象、Event Bus、Vuex。 https://vuejs.org/v2/guide/state-management.html#Simple-State-Management-from-Scratch

除非是提问者要求的,不然在推荐一个新工具之前,应该先去了解问题的背景。

虽然我十分喜欢 Vue,但如果有人问我: 我在登录页中应该使用什么呢? 。我不会直接告诉他: 使用Vue 。我会先询问他,在页面中要实现什么功能。

以上只是冰山一角。

这只是一点抱怨。我之前也经常这么做,但我觉得这只是 将自己喜欢的强加于对方 ,但并没有解决 提问者的问题 。

Have a nice day~编程是一件美好的事情。

最后:不少人在 reddit 上谈论 XY 问题。如果提问者一开始就使用了不合适的工具,那么推荐新的工具并没有任何问题。我指的 高射炮爱好者 ,是那些 在不了解背景的情况下就直接推荐 的人。

本次给大家推荐一个免费的学习群,里面概括移动应用网站开发,css,html,webpack,vue node angular以及面试资源等。
对web开发技术感兴趣的同学,欢迎加入Q群:943129070,不管你是小白还是大牛我都欢迎,还有大牛整理的一套高效率学习路线和教程与您免费分享,同时每天更新视频资料。
最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。

这篇关于过犹不及,别再在编程中高射炮打蚊子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/353371

相关文章

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

C#多线程编程中导致死锁的常见陷阱和避免方法

《C#多线程编程中导致死锁的常见陷阱和避免方法》在C#多线程编程中,死锁(Deadlock)是一种常见的、令人头疼的错误,死锁通常发生在多个线程试图获取多个资源的锁时,导致相互等待对方释放资源,最终形... 目录引言1. 什么是死锁?死锁的典型条件:2. 导致死锁的常见原因2.1 锁的顺序问题错误示例:不同

PyCharm接入DeepSeek实现AI编程的操作流程

《PyCharm接入DeepSeek实现AI编程的操作流程》DeepSeek是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的AI模型,接下来,我们把DeepSeek接入到PyCharm中... 目录引言效果演示创建API key在PyCharm中下载Continue插件配置Continue引言

C#反射编程之GetConstructor()方法解读

《C#反射编程之GetConstructor()方法解读》C#中Type类的GetConstructor()方法用于获取指定类型的构造函数,该方法有多个重载版本,可以根据不同的参数获取不同特性的构造函... 目录C# GetConstructor()方法有4个重载以GetConstructor(Type[]

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

Go Playground 在线编程环境

For all examples in this and the next chapter, we will use Go Playground. Go Playground represents a web service that can run programs written in Go. It can be opened in a web browser using the follow