"前置过滤器,你这是智商税."
但在日常工作中,越来越多的人广泛使用“前置过滤器”。
那么到底什么是“前置过滤器”,为什么越来越多的人在使用,有什么好处,甚至有什么风险,一个有经验的人表达了自己的观点。
“前置过滤器”这个词应该是所有开发人员经常听到的。它的目的是在开发之前进行一些基本的检查,以确保我们系统的正常运行。
但是这种看似应用广泛的技术工具,却被一位前来者给出了一种“智商税”的观点。
那这个“前置过滤器”究竟有什么风险呢?
所谓“前置过滤器”,翻译成英文就是“filter",直译为过滤器。
正如其名称所示,“前置”是指在开发之前,对数据的某些问题进行过滤,不符合的数据将被过滤掉。
当我们每天使用各种软件或应用程序时,输入的数据能否产生预期的效果,是因为工程师在设计程序时已经考虑到用户会输入各种数据,所以这些数据必须经过一系列的判断条件才能回到我们想要的结果。
举个简单的例子,当我们在小学学习除法的时候,我们说除法不能是0,但是我们可以做一个简单的程序,让计算机可以做一个求商的操作,但是我们没有限制这个除法不能是0,所以如果这个时候有人输入0,那么这个程序肯定不会回到我们想要的结果,甚至会报错。
但是,如果在程序运行之前,我们应该首先判断输入的数据是否符合要求:即“除数不能为0”,这样不符合要求的数据就不会被传入程序,从而返回不符合要求的值。
因此,这个从最基本的方面来判断数据的程序是在程序之前对数据进行一轮“过滤”,因此被称为“前置过滤器”。
“前置过滤器”是判断数据最基本的技术,应用广泛。无论是在我们的日常工作中,还是在我们的生活中,我们经常会遇到“前置过滤器”:例如,在登录各种注册时,我们会检查输入的账户密码格式。
正是因为“前置过滤器”在日常应用中的广泛性,才有了一个有七年开发经验的前端工程师,喜欢下班后在掘金社区写博客,分享自己的开发经验。
关于“前置过滤器”的博客是因为他在开发项目的时候遇到了一个bug,这个bug在最初的逻辑设计中是不存在的,但是他就是找不到有问题的地方。
后来他做了一些调查,就是数据的问题,所以他在每一步都做了一些log,最后发现数据在最初阶段是错误的。
这样就让他想起以前听人说过“前置过滤器”是一种“智商税”,但确实有人这样使用。
所以他想:为什么这样一种应用广泛的技术工具,会有这样的评价?
于是他开发了一个演示,然后开了一个投票问卷,供大家选择,讨论“前置过滤器”是否有用。最后,60%的投票表明“前置过滤器”是有用的。
投票结束后,这位有经验的人发表了一篇博文。在博文中,他解释了为什么“前置过滤器”会受到质疑,为什么“前置过滤器”的收入会逐渐增加。
下一步,我们将详细谈谈这个过来人所说的“前置过滤器”的风险。
他认为,“前置过滤器”之所以受到质疑,主要是因为“前置过滤器”的逻辑被重复。
正如我们在工作或学习中重复一件事一样,这不仅需要时间,而且会增加犯错的可能性。
比如在一个项目中,当一个输入框涉及到几个逻辑判断时,我们会把这些逻辑分成几个函数,但这些函数绝对离不开“前置过滤器”,所以会出现一个问题,那就是重复逻辑,每次创建一个函数,就相当于在前面加了一个“前置过滤器”,可以过滤掉不合格的数据,但是一旦我们有太多的逻辑,会使“前置过滤器”过滤次数过多,从而重复同一部分的逻辑过滤。
这样做的好处也很明显,就是以后维护的时候,只需要维护“前置过滤器”,这是另一种“重复性好”,老朋友总会让人怀念,这句流传了几千年的名言就是最好的解释。
这样做一个“重复性好”会让我们的工作更加方便,但是在“前置过滤器”中增加了很多elselse。 if,相当于在程序中添加了许多if。 else,而且当我们处于if状态时 当else中添加一个新的逻辑时,我们会大规模推敲之前的逻辑。虽然这是一件好事,但它会增加我们的工作量。
来这里的小哥哥还总结了一个人数普查表,总结了使用filter的过去对比。虽然是小数据量的统计,但其潜台词也是如此。filter使用的越来越多,这表明开发人员在编写代码的过程中越来越倾向于添加“前置过滤器”。开发人员越来越意识到这个好处,在编写代码时会不自觉地增加更多的保险。又称“智商税”。
但是,在很多开发者眼里,这个“智商税”其实是一个辅助开发的工具。当没有定位问题时,可以打印出关键逻辑,逐步调查错误部分,找出问题所在。
当然,这位前端开发者认为“前置过滤器”并没有他们想象的那么“巧用”,它的本质是保证系统的正常运行。
受到如此广泛的关注,我们不妨看看百度搜索中的“前置过滤器”这个词,那么百度大脑这个强大的搜索引擎对“前置过滤器”这个词有什么解释呢?
对于“前置过滤器”,百度大脑所说的是一些常用的正则表达式,例如:过滤非法字符串。
事实上,我们通常可以在编写代码时应用非法字符串。例如,当我们过滤一个电子邮件时,我们需要使用强大的正则表达式。正则表达式可以匹配字符串的所有内容,可以部分分析内容。
因此,我们可以使用正则表达式中的电子邮件匹配模式来比较输入的字符串和匹配模式。如果匹配成功,电子邮件是合法的。同样,这种方法也可以用来判断是否是电话号码,故意输入空格、空字符等非法字符串,会被过滤掉。
在接下来的软件开发过程中,我们肯定会经常遇到“前置过滤器”这样的功能,但我们希望更多的人能够评价这个功能的优缺点。
归根结底,我们在日常工作中经常使用“前置过滤器”这一功能,但我们必须了解它的优缺点,才能使我们的程序王国越来越强大。
由于大众对因特网和计算机技术的应用,“前置过滤器”这个词的出现本身就是一种网络技术工具,它的出现为开发者的工作提供了极大的方便,使其在出现bug后能够迅速定位问题。
所以每个开发者对“前置过滤器”是否是智商税都有自己的看法,但开发者的正确认识必须是为了提高开发效率,避免不必要的错误。
评论列表 (0条)