突然没有了在 PHP 继续学习的兴趣

2018-11-05 15:53:24 +08:00
 HanMeiM

虽然在使用 PHP 的这么多年里学到了很多东西。

但是实习加正式工作 1 年多,越来越不喜欢写 PHP 了。

怎么说呢,PHP 写起来很奔放,正是由于他的奔放,写出来的代码往往就是五花八门,阅读维护起来费时费力,甚至一个项目的代码,写法都是很大的差别(心累)。

然后在工作中写过一段时间的 TypeScript,发现静态类型写起来很舒服。PHP 有的时候回过头来发现,有的方法传入的参数还是数组类型的,自己都不知道那个方法应该传入一个什么样的参数,我还需要一层层的看内部代码才能知晓。

之后有位前辈总是给我说显式优于隐式,一直奉为信条。

最后还有一点人为因素,接触的部分 PHP 自己都对自己的代码不上心,总是说 PHP 而已嘛,能快速开发出功能就行了啊(例如第一份实习工作,创业公司主管连数据库索引都不知道是啥,缓存没听过,框架用的 10 年前的一套系统,天天就想着赶紧完成功能好上线)。并且很少会有人去写测试,总是在出现问题之后才来审核自己的代码,这样写出来的代码能有什么灵魂嘛。

目前在用 javaGoLeetCode,期待下份工作。(不知道到时 PHP 的经验算不算工作经验)

本人普通本科今年毕业,目前找了个普通区块链公司工作,月薪勉勉强强 7k,base 成都。

4301 次点击
所在节点    程序员
63 条回复
shiny
2018-11-05 17:21:15 +08:00
还有看你的代码风格,还有改进空间。如果项目参与的人水平不够好,确实令人头疼。
我写了七年多 PHP,最近也换其他语言作为第一语言了。
to2false
2018-11-05 17:22:06 +08:00
Type hint 和 注释写清楚,不然拖出去砍了
jowan
2018-11-05 17:22:51 +08:00
这种 IDE 配色让我抓狂
imdupeng
2018-11-05 17:23:14 +08:00
@HanMeiM 我语言激烈,是看不惯那种自己问题,乱飞锅的。

语言只是工具,锤子可以锤钉子,你用板砖锤钉子也可以啊。。要的是一个结果,钉子顺利钉进去,然后好使。
to2false
2018-11-05 17:23:56 +08:00
@to2false 补充一下,上 psr,也给安上 phpcs,预置检测在 pre-commit,如果这样都不行,换单位吧
HanMeiM
2018-11-05 17:25:20 +08:00
@imdupeng 哎,说到底不是每份工作都是从头开始写代码,团队的每个人也都有自己的想法。当自己看以前的旧代码、或者是同事的代码,就很累(要是你还遇见一个特立独行的技术组长,简直要爆炸了)。现在慢慢喜欢上静态语言,感觉写起来很舒服
likaka
2018-11-05 17:25:43 +08:00
混口饭吃而已,别搞哪么专业
HanMeiM
2018-11-05 17:27:59 +08:00
@to2false
@shiny 我说实话,psr 这种东西我能遵守,但不是每个人都愿意遵守的,实习的时候技术组长要求变量下划线,现在工作的组长要求变量小驼峰,我也很无奈啊。
@jowan 哈哈,我超爱这个配色,我的 vscode、iterm、phpstorm、idea 都是这个配色
feiyuanqiu
2018-11-05 17:30:12 +08:00
想问一下,你这样直接在方法里 new Repository,怎么做单元测试呢,全局注入一个 mock 数据库吗?
to2false
2018-11-05 17:30:17 +08:00
@HanMeiM 这种情况,纯粹是上头有毒的问题啊,换个语言还不一样难受
nilrust
2018-11-05 17:32:30 +08:00
都是坑啊,换个语言你会发现 java 的烂代码也是铺天盖地。。


其实工作最重要的是团队水平,有代码审核,有重构意识,有代码审美的团队代码都不会太烂。
HanMeiM
2018-11-05 17:34:52 +08:00
@feiyuanqiu 诶,首先 Laravel 自带模型工厂,然后 phpunit 有一对 setUp 和 tearDown 方法,每执行一次测试方法的时候都会运行 setUp,结束后会运行 tearDown。
feiyuanqiu
2018-11-05 17:40:06 +08:00
@HanMeiM #32 也就是测试的时候用的是真实数据库?遇到业务代码里有 insert、update 的情况,是不是还要在 tearDown 里做回滚?
HanMeiM
2018-11-05 17:42:12 +08:00
@feiyuanqiu 测试肯定是在测试环境啊,哪里有生产环境去跑测试脚本的啊,兄 dei
HanMeiM
2018-11-05 17:43:45 +08:00
@to2false 有毒 +1,难道这种情况不是很常见吗?
@nilrust 希望有那么好的运气吧
feiyuanqiu
2018-11-05 17:44:46 +08:00
@HanMeiM #34 「真实数据库」不是「生产数据库」,算了没什么
HanMeiM
2018-11-05 17:50:45 +08:00
@feiyuanqiu 哦哦哦哦,理解你的意思了。确实是这样的哈,在 tearDown 里进行删除,或者在执行数据库操作的时候可以启用事务最后再回滚,Laravel 自带的有两个 [trait]( https://laravel-china.org/docs/laravel/5.7/database-testing/2304) 可以看一下,一个是每次执行测试都回滚迁移,一个是直接用事务
FrankAdler
2018-11-05 18:09:01 +08:00
语言层面的太灵活限制太少, 编码人员的参差不齐就会导致项目代码五花八门, 维护起来费劲
楼主表达的应该是这个意思, 不知道有些人...
SeaRecluse
2018-11-05 18:22:37 +08:00
记得当年的学习之路 C++ -> java/c# ->php ??(//php please) -> python 哈哈哈哈
huijiewei
2018-11-05 18:26:43 +08:00
看了你贴的代码截图,感觉你连对象,实例,静态方法都没搞明白。

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

https://www.v2ex.com/t/504672

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

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

© 2021 V2EX