新 Idea PHP 转 GO 福音

2019-07-26 13:16:19 +08:00
 xiangdong1987

最近两周一直在做公司的 Go 项目,从 PHP 转 Go 是一个不算那么痛苦的精力,今天就来讲讲这两周的体会吧。

背景

过程

对于一个被 PHP 养成的一个懒汉来说,初期真的是痛苦无比,但是慢慢的我发现,其实 Go 的设计模式就是为了在规范和速度上取一个平衡,开始我是一点一点写的,后来发现各种的包可以大大缩短我们早轮子的时间,轮子小还可以自己改,所以我就萌生了一个想法。自己做一个脚手架,自动代码生成。做为一个懒散的程序员这就是福音。

优化

结果

总结

感觉 go 真的真的很不错,在快速和规范中有一个舒适的平衡点。后续加上 docker,在弄个 k8s 稳稳的后端,前端的事就叫前端去做吧!业余时间快乐的玩耍。还有欢迎提各种 pr 集思广益。

8034 次点击
所在节点    Go 编程语言
70 条回复
iyaozhen
2019-07-26 14:30:02 +08:00
https://github.com/xiangdong1987/easyGin/blob/master/test/scffold_test.go#L12
就你这单测写的,用啥语言都一样
调用一个方法还有会失败的吗?测试、调试全靠输出?
func TestGenerateCURD(t *testing.T) {
println(scaffold.GenerateCURD("Person", "id"))
}
ztxcccc
2019-07-26 14:36:44 +08:00
@abcbuzhiming 就问你,写 php 不写单元测试,换了 go 就写了,这是什么问题?
xiangdong1987
2019-07-26 15:24:04 +08:00
@laojiaqing #12 PHP 可以直接改代码 go 是需要重新编译在提交代码 可能我说的不太清楚
xiangdong1987
2019-07-26 15:26:15 +08:00
@iyaozhen #21 看样子对我意见很大啊,来来欢迎来提 pr go 还没上代码覆盖那套呢 输出就够了 你提醒我了 下一步上代码测试覆盖
xiangdong1987
2019-07-26 15:27:03 +08:00
@alexmy #16 用的 govender go mod 还没了解最忌你一直在 curd 回去学习学习
dawn009
2019-07-26 15:29:21 +08:00
@ztxcccc #1 可以认为,一个有针对性设计的语言,已经帮你做了一部分规范和管理工作。
xiangdong1987
2019-07-26 15:34:57 +08:00
@N1ceHua #20 php 可以看看 这个 https://github.com/xiangdong1987/tinys
oneonesv
2019-07-26 15:38:05 +08:00
“随着长时间的维护,发现了 php 这种野路子开发快,但是规范上真的差”

随着长时间的维护,Golang 代码也一样可以一坨屎,语法上的限制并没有啥用
nguoidiqua
2019-07-26 15:51:01 +08:00
问题当然都是人的问题,只是人的问题有时候不好解决,于是就用工具弥补人的问题。

比如人的问题就是不喜欢面对事实,事实是有些语言确实更容易用出问题,大家都很明白这点,但是就是要硬着头皮说都是人的问题,仿佛他平时用得很顺当一样,完全忘了遇到时候自己是怎么吐槽的。

没错,再好的工具都会被人用烂,但没那么烂也是好些。
cheneydog
2019-07-26 15:53:39 +08:00
golang 依赖总是下不下来啊,怎么建立私有仓库? dep 这东西一出来就要死了?
ylsc633
2019-07-26 15:54:56 +08:00
> "随着长时间的维护,发现了 php 这种野路子开发快,但是规范上真的差"

我之前也是写 php 的,现在也是写 Go 的

规范真的差,只能说明 你们当初领导或者项目主导者 根本 没有管理的意识 我记得当时我们写 php 的项目,用的 Laravel 框架, 大家规定使用 PSR 规范 (好像是 PSR-4) 不知道的,当时我们自己看, 然后项目里, 我们先把项目分好模块,然后拆分好,
比如在 model 层中拆出 Repository, 这里专写 model 操作,以前 model 里 只有数据结构和关联关系! 把 controller 拆出 service 层等等, 还有入口表单校验 和出口数据格式化, 都分好模块, 后续加入的同事 只要根据这个规则写, 一旦有问题,方便查错!

即使用了 Go,大家不按照规矩来,一样还是乱的... 跟语言关系真的不是很大!

比如 你们这个脚手架里 文件有大写的,有小写的, 注释有直接中文的,又有英文的..... 跟人有关, 别怪语言了..
set01
2019-07-26 15:57:12 +08:00
同 php,我也想转 go。但是做 Go 的话,小一点的城市是完全没有就业机会的,悲伤的故事
xiangdong1987
2019-07-26 16:06:40 +08:00
@ylsc633 #31 完全赞同对于人的管理可以做到良好的代码框架和使用规范,我并不是抨击 PHP 是不好的语言,我反而会说写业务逻辑 PHP 是最好的语言不接受任何反驳,我只是想说语言在设计的出发点上就有所不同,像 PHP 是削减了程序员的心智负担让,程序员更多的精力放在逻辑的编写上,这种出发点是好的,但是对于程序员本身的发展,有可能是一个陷阱,沉迷也简单的东西无法自拔,而有些语言设计上考虑的可能比较平衡,在上手难度和规范上做了一个平衡,其实 GO 的主要强项是 goroutine CSP 编程,是高效的使用多线程,降低程序员对于多线程编程的心智负担,每个语言都是有每个语言的优劣,我只能说我真没抨击语言
AngryPanda
2019-07-26 16:08:30 +08:00
php 写不好,我感觉你们 go 也一样写不好。
mrgeneral
2019-07-26 16:10:40 +08:00
因为编码规范而换语言?

编码规范和语言有关系吗?
abcbuzhiming
2019-07-26 16:19:07 +08:00
@victor 任何问题从根源上说都是人的问题,然而优秀的工具能够挽救水平不怎么样的人,让它发挥在平均线附近。当然我知道技术 geeker 们只喜欢那种能对高手增幅超多的工具,不会用用不好就可以说那是人的问题了。全然不顾现代软件工程的意义就是让更多“水平不怎么样的人也能写代码”
abcbuzhiming
2019-07-26 16:24:11 +08:00
@ztxcccc 因为在楼主的应用场景里,PHP 明显更自由,因此楼主他们可以不写单元测试就上线,换了 Go 变成了不得不写。所以你看,“约定”无法代替“约束”,你当然可以说他们人有问题;工具这东西就是用来解决人的问题的
abcbuzhiming
2019-07-26 16:25:40 +08:00
@mrgeneral 没有关系,但区别是有的语言可以用报错拒不执行逼着你执行编码规范,而有的语言则决定给用户“更多自由”,哪个更好就见仁见智
chinvo
2019-07-26 16:28:07 +08:00
@xiangdong1987 #24 很遗憾,你这样写覆盖率会很高,然而并不能达到测试的目的
xiangdong1987
2019-07-26 16:31:16 +08:00
@chinvo #39 哈哈 知道我没用断言 毕竟 PHP 养成的习惯一时半会改起来还挺痛苦,这个痛苦就是我想说的也感谢 @abcbuzhiming 理解万岁

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

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

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

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

© 2021 V2EX