新 Idea PHP 转 GO 福音

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

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

背景

过程

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

优化

结果

总结

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

8051 次点击
所在节点    Go 编程语言
70 条回复
chinvo
2019-07-26 16:36:26 +08:00
@xiangdong1987 #40 说实话别给 PHP 招黑了,这些习惯不是语言的问题,而是个人和工作环境的问题

我是从 asp 做到 PHP 然后到 .net core 的,写了至少七年 PHP,也没有养成不用断言硬说是测试的“习惯”

实事求是脚踏实地才是硬道理,别把锅甩给语言
victor
2019-07-26 16:37:39 +08:00
@abcbuzhiming 你这回复,我表示赞同。
bugsnail
2019-07-26 17:15:33 +08:00
其实,PHP 7 已经支持 参数和函数返回值类型声明, 数据类型的定义完全可以像某些静态语言一样

至于资源业务的抽象,这不是考验编写代码的人吗?设计模式 /框架 /架构

单元测试就更不用说了,只要你愿意写,都是有的
xiangdong1987
2019-07-26 17:15:36 +08:00
@chinvo #41 我同意我这个人就是有点懒,没办法人性嘛就是趋利避害嘛。我只是感受到了危险而已,不给自己找借口了,还是多点时间去码代码吧!
encro
2019-07-26 18:24:58 +08:00
PHP 7 支持类型定义等等,和按照规范来写和强类型语言没有基本什么区别了;
GO 的话适合些各种并发应用的服务端,比如自己实现 web server,websocket server, client manager,还有就是需要打包的小程序,比如 lantern,goproxy,frp 之类
相比 Python,我更喜欢 Typescript,.net core,golang 甚至 PHP,无赖 Python,java,c 历史太悠久了。
简单的 restful 个人觉得还是用 django restful framework 自动生成好了,对性能要求高点可以用 go,对 PHP 熟悉可以用 YII 都是框架自动生成。
shingle
2019-07-26 18:39:03 +08:00
golang 里有 template, 而不是用你这种字符串拼接来生成模板
impl
2019-07-26 19:18:26 +08:00
用 go 的容易遇到猪队友
mamahaha
2019-07-26 19:36:28 +08:00
与其拼命夸语言,不如推荐点应用该语言的大神让大家学习了解一下。
v2hub
2019-07-26 19:45:15 +08:00
这和语言没有关系,只和开发人员有关系,更和速成班有关系。我见过写的一坨翔的 JAVA 代码,难道是 JAVA 语言有问题?
ruyuejun
2019-07-26 19:45:37 +08:00
需要都是相通的,来学微服务呀

http://github.com/overnote/golang/tree/master/12-Go 与微服务
lsls931011
2019-07-26 19:46:47 +08:00
你们这些人啊,人家就是想说 PHP 与 GO 语言在设计上的区别, 在语言层次上 Go 比 PHP 的确具有规范性, PHP7 出了这么久,你们这些使用 PHP7 在自己项目有全部用类型定义,还不是使用 PHP5 时代那一套。
任何编程语言都是给程序员使用的, 所以无论使用啥语言,最后还是归结到人身上, 注意审题.
JaguarJack
2019-07-26 19:48:07 +08:00
我觉得不用说楼主了 楼主只是使用新语言的后新鲜感罢了
zjsxwc
2019-07-26 20:00:17 +08:00
我写 go 一律无脑 interface 路过,真香!

不过还好只是写点自己用的工具,
这种代码别人肯定是无法接手的,
2333333333
towser
2019-07-26 20:30:00 +08:00
路子野写什么语言都野。PHP 主要还是从业者平均水平偏低,土法炼钢玩惯了,规范化在团队内推广不开。
c466934322
2019-07-26 20:39:41 +08:00
说到底,这个锅 php 不背。公司考虑使用 php 就应该考虑到这个问题,如果是规范问题,那么管理者应该给出一套自己的合作书写管理规范,比如统一使用驼峰,比如,之后要有空格,比如写完之后必须要有 unit 代码上到 git 会有脚本进行判断。
说到底,时间紧,任务重。都是借口,写 go 的时候,你也可以安装 php 的写法去搞,无非是怎么来的怎么挂回去,而 php 不会让你挂回去。。。我们在享受人家便利性的同时也不要一味的说人家不好
Ann5527
2019-07-26 23:43:38 +08:00
我先不说语言的“优劣”,语言只是工具,用来赚钱的就是好语言。要不是 PHP 的草根语言,多少草根公司能够活到有人来浇水啊,多少公司就三五条枪,要不是靠着 PHP 帮你跑马圈地才活到下一个阶段。这次让公司活过了头七,有点钱了,能多招几条兵了,开始讲排面吹牛逼了,开始扯 PHP 没有其他语言有“脸面”了,为啥这时候不下功夫把自己一开始乱搞的一坨坨 PHP 治理一下呢。
KasuganoSoras
2019-07-26 23:51:25 +08:00
用 PHP 一时爽,一直用 PHP 一直爽(
charlie21
2019-07-27 09:35:38 +08:00
@chinvo 搭车问一下大佬,现在 dotnet Core 做小型 CRUD 网站 ( 数据库 mysql ) 的技术栈是什么?
前端用 Razor 模板引擎吗,有像 Procedural PHP 一样直接简单组装 sql 作 crud 的路子吗,如果没有则 ORM 可以用哪个
chinvo
2019-07-27 10:27:04 +08:00
@charlie21 Asp.Net Core 全家桶,数据库用 EF Core ( MySQL 需要安装 Pomelo.EntityFrameworkCore.MySql / Mysql.Data.EntityFrameworkCore 驱动)

EF 也可以直接写 SQL (要准备好 Model 以用于 SELECT 等操作)

如果用不惯 EF,可以用 NHibernate

一定要纯 SQL 的话,可以考虑直接用 Mysql.Data / MySqlConnector
abmin521
2019-07-27 10:50:39 +08:00
var ModelPath = "d:/data/go/src/easyGin/models/"
var RouterPath = "d:/data/go/src/easyGin/router/"
var ApiPath = "d:/data/go/src/easyGin/handle/"

这?

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

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

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

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

© 2021 V2EX