阅读 1287

爱提问题是对的,但是……

警告:本文乃个人主观情绪极重的文章,不喜勿入。但是本文并非diss任何人任何事,仅仅是希望提问者和回答者能够更加有效地沟通。提问者肯定是无奈之下才会寻求帮助,但是回答者都有各自的事情,并不可能随叫随到给提问者回复,估计也只有Siri才能随叫随到,及时回复。

互相体谅,互相尊重也许是共同进步的关键所在!

最近笔者一直在想一个问题,就是该如何问问题?

说句不要脸的大实话,笔者挺自私的,并不喜欢回答问题,原因有三:

  • 有些问题明明可以通过各种搜索软件得到问题,偏要找“人肉搜索引擎”。
  • 秉着负责任的态度,对待答案总要自行检查一遍,虽然过程中也可有收获,奈何费时费力。
  • 本身工作挺忙,待学习的队列已经排到美国了,期间看到问题,真心觉得烦躁。

可以说上述三条理由都是笔者在为自己这种自私的行为开脱,但是要笔者不情不愿的回答一些“不是问题”的问题,憋屈啊。将心比心,因为知晓己所不欲勿施于人,所以笔者很少提问。即使提问也要斟酌再三,确认无误,确保不是“恼人”的问题。那么,究竟什么样的问题是“恼人”的,甚至“不是问题”的问题,什么问题是“值得回答”的问题呢?

问题黑名单

首先来谈谈那些“恼人的”问题(若有雷同,纯属巧合):

第一类:百度搜索

相信大家都遇到过,客气的人会说这个不复杂,你可以百度一下。,但是脾气暴躁的人会说,这么傻X的问题,你不会百度啊。这类语气着实伤人,为了防止个人的玻璃心受伤,就要避免一些“百度”的问题。

百度问题分以下几类:

  • 最经典的莫过于api的问题,有关api的用法,百度吧。但是有个隐藏的api问题,就比如笔者想要实现某个功能,但是根本不知道用啥api,这个时候有好心人给了方向之后,就自行百度吧。
  • 0基础的小白的问题,这一类问题,很难回答,相信很多好心人说着说着恨不得自己拿过来帮人家写了算了。这个时候笔者推荐提问者先从基础开始学吧,网上挺多零基础的教程的。虽说要对自己有所要求,但总不能还没学会爬就要开始跑了吧。
  • 常见问题,比如CSS中经典的居中问题,布局问题,自适应问题,相信网上应有尽有。相信大家已经回答地不想再回答了,并不是说鄙视这类问题,而且乏了,真的乏了,估计已经回答了几十遍同类问题了。

第二类:不知所云

每次遇到别人问,咦,这个怎么没出来呀?为什么报错了呀?。这个时候笔者就想装死,毕竟本人不住在浏览器,报错和不出现的问题,就算当面调试也不一定能够立马出答案。而且考虑到面子问题,万一出不来会不会显得笔者很渣?

不知所云分为:

  • 截图或者一句话,没有详细说明,没有操作说明,没有想要的结果说明。比如为什么ajax获取不到数据,这一类好心人会一步步引导出真正的问题,像笔者这样的就直接无视了,甚至会diss,“谁XXX知道你想问什么”(乖宝宝们不要学习)。
  • 直接丢出一个报错,报错的原因千千万种,不了解对方项目的该如何,这个时候又要回到第一类问题了,完全可以百度以下错误的成因,然后根据自己的项目分析。此类问题非经验丰富的,基本get不到提问的点。

第三类:道德绑架

在线等,急

此类问题一律不答。至于原因,感觉笔者不帮助找到正确答案,仿佛就是个大坏蛋,甚至自我怀疑。

第四类:要你何用

这一类算是笔者的亲身经历吧,可能脾气太好了。在大学的时候,一个小学弟来问笔者数据库的问题。且不说笔者当时并不熟悉,现在笔者也是个渣渣。小学弟问了很多问题,笔者都没答上来,最后他来了一句要你何用。真棒,学姐没用!题外话,说者无心听者有心,这对笔者当时的幼小心灵造成了极大的伤害,还好笔者没心没肺,没多久就恢复了。

对于问问题,且不说虚心讨教,还要充大佬的,不尊重人的,门在那边,出门左拐不送,不伺候。

问问题是门艺术

这里笔者想要借用StackOverflow的一些规范,来总结下如何问出讨喜的问题。

先给出一个错误示范:

大佬,我碰到了XXX问题,不知所措。(谢谢,大佬比你更不知所措~)
复制代码

搜索搜索再搜索!

问问题之前,请再三地搜索,即使找不到有用的信息,也可以对比你的问题和其他人的不同,同时总结出一些结果,即使现在无用,以后也许用得上,这也是一种学习过程。

详细说明

详细说明你的问题,一上来就放出一堆代码,反正笔者看到几十行的代码都是直接遛的。用简短的语言,整理逻辑关系,详细说明。

必要时给出实列代码

现在有很多在线的code play的网站,比如codepen(my favourite),jsfiddle,实在不行贴上github地址。这样大幅度减少了对方了解问题的时间。

举个例子,笔者的模版

提出问题:
大佬,我碰到了XXX问题。我希望的结果XXX,然而预期的结果XXX。

处理过程:
我搜索了很多资料(表明你搜索过了),网上有一些和我的问题很像,但是有些区别,我是这样地,他是那样的。(给对方画一个范围,告诉对方你的问题在哪一个区域)。
我试过了1,2,3,4……种方法(最好讲明每一种方法的利弊,节约对方的劳动力)。

客套一下:希望大佬能给我指一条明路。(因人而异,看个人个性,笔者喜欢谦虚一点,毕竟是请求对方帮忙。)
复制代码

相信笔者,经过这一番的思考之后,自己就能找出答案了。

解惑者

那么遇到一个问题,该如何回答,毕竟大家都有做新人的时候,总是要受点挫折才能成长为大佬。对于萌新还是要有“慈悲为怀”的。

此处再次借用StackOverflow地规范,有关于态度地,也许对于解惑者更重要的是一种态度。

错误示范:

这个问题百度下就可以了。
我都不知道你要问什么。
(虽然有时候有些问题确实一言难尽,但是此类的回答语气还是不太好的。)

复制代码

和善地提出——你可以去百度了

第一种,优雅地告诉对方,请百度:

这个问题其实难点在于XXX,是很常见,推荐搜索一下,应该就会有许多解答。

第二种,手头上有合适的大佬文章,抛出链接:

这个链接里面的内容,感觉和你的问题很像,可以参考下。

友好地告诉对方我不知道你在说啥

我无法get到你的问题点。给出对应的推理,是XXX这个原因吗?还是说你想要XXX?

避免带有挑衅的语气

比如不屑,侮辱,甚至人身攻击,这里就不举例子了,不合适。

优雅地回答!让萌新不再瑟瑟发抖。

笔者解决问题的过程

  • 首先是StackOverflow搜索,这里能找到答案的机率最大,而且用英文搜索,更加精准,不是笔者推崇英文,而是中文的表述过于复杂,很多名词有多个解释。
  • 找不到问题再去google,同样关键字删选。
  • 整理解决方案,一个个调试,整理每次失败的过程。
  • 无法解决可以换一个思路再去解决,此路不通,那么就绕路而行。
  • 最后的最后,整理解决过程,找大佬解决。

笔者曾经问过一个关于video在微信上自动播放的问题,虽然最后并未找到更简单的方式。大家可以参考一下。

一个问题的产生过程

问题提出: 需要在微信上面,自动播放视频。但是手机为了用户体验着想,都不允许自动播放,所以该如何绕路而行了。我并不想使用常规的摸一摸播放,顺便提一下在安卓上面一定要click事件才能点开视频……

问题的痛点: 搜索了多方面的信息发现一个噩耗,无论什么样的播放都需要用户的操作支持。而且ios和android的支持不同。首先苹果为了代替gif,虽然支持静音状态下的播放,但是我无法保证音频和视频的一个同步执行,总是有个微微的延迟或者提前,而且音频也需要摸一摸。安卓?不提了……

可行的方案: 终于找到了解决方案,然而却需要利用ffmpeg转流,然后通过jsmpeg将转化之后的流通过canvas等技术播放出来。这能同时解决安卓和苹果的自动播放问题。不过学习成本过高,需要掌握ffmpeg的基本操作以及jsmpeg的用法。

请求: 不知道大家有什么更加简易的解决方法?

当笔者写整理完问题的时候,仿佛已经知道了最终答案,只是抱着试一试的心态去问一下也许有大神就知道呢?同时这也算是一个小小的经验分享吧,该踩的坑都踩了。相信大家有一个自我的思考过程答案迎刃而解。

(感觉只有加粗大家才能看到笔者的请求,到现在都没有收到更加简单的方法,要是有大神知道请留下您宝贵的建议!)

笔者回答问题的过程

让笔者找一个在stackoverflow回答的例子

提问的宝宝很客气,原文大概是这样的:

有关于通过js运行css的问题。

谢谢大家花时间看我的问题,任何帮助我都会感谢大家。

我有以下一串代码:

.middle_n.expand.remove
{
 animation: contractm 0.3s forwards;
 transform-origin: 0 75px;
 height:200%;
 animation-delay: 1.3s;
}

@keyframes contractm 
{
 0%{}
 100%{transform:translate(147.8%,100%) rotate(-16.75deg);}
}
复制代码

我希望能够传递一个动态的值,让这个转起来。我该如何做。通过js可以实现多个动画吗?

再次感谢。

虽然是个新手,但是提问点很清晰。刚好笔者擅长该领域,于是就给出了回答。


笔者的回答:

在我看来,如果你希望控制你的动画,我的简易是你可以使用js控制你的元素的style。因为animation是完成一系列的动画的。

并且有一个非常强大的css属性,叫做css变量,你可以通过这个链接得到更详细的解释

然后给出笔者的例子:

const rotate=document.getElementById("rotate")
let r=0
rotate.addEventListener("click",()=>{
  r += 10
  rotate.style.setProperty("--rotate", r+"deg");
})
复制代码
#rotate{
  --rotate:0deg;
  background:pink;
  width:100px;
  height:100px;
  transform:rotate(var(--rotate));
  transition:transform 1s;
}
复制代码

当然,如果你希望一系列的动画,你可以查看这里。设置一系列的动画很简单。


本文的主观性很强,如果有感到不适的地方,笔者道歉。笔者只是为了大家能够有个更好的学习氛围。少一些争论,多一些讨论。好好学习,天天向上。

怕被打,溜了溜了。

不知道如何安放的文章,笔者应该怎么添加标签呢?

关注下面的标签,发现更多相似文章
评论