趣文网,分享全网好句子、好文章!

如何用一句话向外行人描述程序员思维?枚举算法 枚举所有可能性

时间:2023-09-07 07:34:01

相关推荐

如何用一句话向外行人描述程序员思维?枚举算法 枚举所有可能性

不得不说,程序员的思考方式很“特别”,之前一直和代码打交道,并没有感觉出什么异常来,最近几年,和客户、产品、业务沟通的很紧密,发现程序员的思考方式,真的和大众不一样,这种思考方式,也决定了你能不能成为程序员的最根本条件。

程序员思维的核心是:枚举算法

我们看下图,我们把开发系统做个简化,用于举例说明:大众的思维,要想去一个目的地,会怎么描述呢?直接过去就可以了是吧,直达目的地,这是最简单效率最高的方式。那程序员呢,同样的目标,程序员怎么描述呢,一、去目的地的“正确”的路。二、枚举出所有的“错误”的路来,并封锁用户的行为。

为什么要描述正确的路呢?这是做系统功能的目的,也是用户要的,这个没什么好说的。那为什么要把所有不能到目的地“错误”的路都要列出来呢?答案是为了优化系统,防止bug或漏洞的发生。程序员每当讨论系统的时候,都会枚举列出所有的可能性来,如果有一种可能性漏掉了,它会以漏洞或bug的形式存在,轻的系统报错或数据错误,重的会引起安全隐患。

思维是了解了,但还是不明白,能举例说明吗?

我们举个例子,用户注册时填入手机号发送验证码的功能, 我们正常的操作是:填入手机号,点发送验证码,就可以了,如果你是外行人,你会觉得,这不很简单吗?很简单的一个功能,为什么程序员要写那么久?事实上,如果你做开发的话,只写了这么一个功能,那这套系统一定会有非常严重的bug和漏洞的。那程序员会怎么去做呢?

如果你输入的不是一个手机号码,那发送短信的后台会做一个“无用功”,浪费系统资源不说,还可能系统报错,所以在把手机号码给到短信发送平台的时候,你自己要先做一个数据格式上的验证,毕竟用户有输入错误数据的可能性,这时候你要把自己当成用户,把所有的可能性枚举出来,并加以处理。

比如,在这个案例中,你要做的数据验证是:1、用户输入的是数字,而不是汉字或字母或其它文字。2、用户输入的是11位的手机号,而不是其它位数。3、中间不能有空格。4、两边有空格需要自动处理掉。5、符合手机号码的规范,比如第一位是1开头而不是其它数字。以上只列了部分条件,是你开发系统需要想到的,这就是枚举过程。当然,这个过程现在可以通过正则表达式来一步完成,我们只是为了举例说明一下程序员的思考方式,在其它业务场景,也需要用这种方式来思考。同时这也是测试人员要做的工作。

可以不枚举错误的路吗?直接写一个正常的

可以,是的,可以这么做,通常是在开发任务比较急的情况下,客户或老板着急上线,程序员会有条件的选择留下一些问题,以保证系统能以正常的操作工作就可以了。通常这些问题会被按时间来分类,比如系统上线两个星期后必须要解决的,一个月后必须要解决的,半年后要解决的等等。这就是程序员经常提到的埋的坑,不是程序员想埋,99%的是时间不够,1%是技术问题。

小伙伴们,你们现在写的系统,埋了多少坑在里面呢?要多长时间能解决呢?欢迎在评论区留言讨论。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
显示评论内容(6)
  1. 第一缕阳光2024-03-14 08:20第一缕阳光[云南省网友]150.129.254.67
    作为行人听了这句话只能佩服程序员们思维能力了。
    顶8踩0
  2. 好运当头2024-02-25 08:16好运当头[上海市网友]203.23.47.53
    枚举算法是程序员思维代表难怪他们编程能力那么强。
    顶28踩0
  3. 莲在水中2024-02-07 08:11莲在水中[辽宁省网友]203.89.14.151
    程序员思维真太厉害了枚举有可能性竟是句话简单概括。
    顶3踩0
  4. 恋上罂粟2024-01-20 08:07恋上罂粟[吉林省网友]121.51.219.206
    没错程序员思维就是枚举算法这句话太贴切了!
    顶4踩0
  5. 小郝2023-12-06 07:56小郝[台湾省网友]219.83.243.154
    程序员思维就是:无论什么问题能想到把有可能性都列出。
    顶5踩0
  6. 残伤忆2023-10-22 07:45残伤忆[火星网友]203.16.133.53
    真正程序员思维细腻善于用枚举算法解决问题。
    顶0踩0
相关阅读
和“脱口秀女王”思文学说话

和“脱口秀女王”思文学说话

这是思文,脱口秀大会的脱口秀女王。嗯。我们俩刚认识不久。1 你们是脱口秀编剧?言外之意:你们普普通通,好像不是很专业的样子?对,能来见您是因为我

2023-11-30

帝王封禅地 文人墨客赋诗处 千古泰山名篇佳句不胜枚举

帝王封禅地 文人墨客赋诗处 千古泰山名篇佳句不胜枚举

泰山自古以来被赋予了许多神秘的色彩,帝王皆以在此封禅作为彰显自己政绩的一种手段

2023-07-30

为什么GO语言在中国能这么火!你了解吗?

为什么GO语言在中国能这么火!你了解吗?

使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程

2012-03-18

Go 语言中无心插柳柳成荫的接口和无为而治的空接口

Go 语言中无心插柳柳成荫的接口和无为而治的空接口

如果你还了解编程概念中的接口概念,那么我建议你最好还是先阅读上一篇文章 详情请点击 go 学习笔记之万万没想到宠物店竟然催生出面向接口编程?,否则的

2023-08-10