这就是我为什么从 PHP 转向 Go 的原因

2020-04-01 22:22:32 +08:00
 wangbenjun5

记得以前有一次面试,面试官是一个和我年龄相仿的人,他就 PHP 里面 count 的用法连续问了我很多情况下的结果:

count(0);
count('00000');
count("0")
count(1)
count(null)
count("null")
count($undefinedVariable)
...

平时一般只会用 count 去计算数组或集合的元素个数,没想到还有这么多种情况,就一下子被问到了,只怪自己基础不扎实,没把 PHP 的手册背下来。。。

很多 PHP 的内置函数令人非常头疼,很多函数有很多功能、可以接受各种参数,返回的结果更无章可循,相比之下,go 的内置函数就非常简单明了,其参数类型固定,基本上一个函数只干一件事。

在写 PHP 的时候,每次调用别人写好的函数都非常不放心,因为你根本不知道这个函数返回的结果是什么东西,它可能是数组、可能是字符串、也可能是个数字。。。即使函数有注释也不一定可信,这其中有部分原因是因为开发人员水平较差,但是 go 的类型限定保证了一个函数只会返回一个固定类型的结果。

写 PHP 的时间越久你就会发现 PHP 的弱类型带来的好处远远大于坏处,项目写到最后几乎无法维护!而且里面会出现各种各样的奇怪 bug 。虽然说良好的编程习惯和规范可以避免部分情况,但是很多时候你没法通过这点保证。

使用 PHP,一个接口写完,很多时候心里压根没底,但是用 GO,写完只要编译没报错,基本上都没问题。

16879 次点击
所在节点    程序员
155 条回复
mcfog
2020-04-01 23:20:40 +08:00
心情极度复杂。要是多年前,我会庆幸又有个半桶水离开 php 圈子了,可是现在写 go 的机会也多了,团队也多了,这样的半桶水在 php 团队里写的代码气味特征明显一眼就能找到,可是混迹在 golang 团队里,好像还真挺难发现的,等发现的时候,可能已经对代码库造成难以承受的破坏了
blless
2020-04-01 23:29:26 +08:00
我也觉得是这样,Rust 也想学,但是上手难度太高了。
Dart
2020-04-01 23:32:14 +08:00
面试人傻 B,你嘛。。。
also24
2020-04-01 23:45:53 +08:00
莫名其妙的想起了这个:

https://i.loli.net/2020/04/01/Ce74FGnOioMbf5a.png
mamahaha
2020-04-02 00:01:58 +08:00
不想用就没必要再踩一脚了。就像分手的情侣,好聚好散,藕断丝连会让彼此都痛苦。
ferock
2020-04-02 00:07:09 +08:00
但是用 GO,写完只要编译没报错,基本上都没问题。


看来你写的 go 也不咋地
ericgui
2020-04-02 00:08:37 +08:00
面试官是个神经病
sagaxu
2020-04-02 00:10:20 +08:00
天呐,7 个 count,我一个都答不上来,我只会 count 数组
Varobjs
2020-04-02 00:10:59 +08:00
这么说, 也可以转 Java 啊
tourist2018
2020-04-02 00:14:45 +08:00
碰见面试问这种问题的 我会直接怼回去
nvhanzhi
2020-04-02 00:14:52 +08:00
面试不爽直接怼回去就行了,反正以后再也难见面!
yunye
2020-04-02 00:49:35 +08:00
现在转个语言也要全网声明了?
JJstyle
2020-04-02 01:07:48 +08:00
最讨厌这种面试题,这种 count 有啥意思
zhuzhibin
2020-04-02 01:33:51 +08:00
我知道了 你因为无非强类型 所以转了 go,那为什么不转 java 还有其他??
lithbitren
2020-04-02 02:05:09 +08:00
目前最满足主楼最后一句话的只有 rust,其他语言都达不到 rust 的程度,rust 虽然也不完全保证,不过应该是知名语言里最能令人跳脚的。
halo117
2020-04-02 03:59:39 +08:00
转语言以后,不信不会有新坑,提升编码姿势水平才是关键,大道至简语言也有一些茴字有几种写法的面试问题
love
2020-04-02 06:42:17 +08:00
这种面试官怕是脑子有坑,你也可以反问它另外一个函数给它异常输入结果是啥
ben1024
2020-04-02 08:31:34 +08:00
面试题挺糟糕,换个语言的理由也挺糟糕
phpcxy
2020-04-02 08:49:00 +08:00
不用写测试的?
LokiSharp
2020-04-02 09:00:32 +08:00
你用了 Go 之后会发现,其实 Go 也不咋地

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/658465

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX