看着项目的代码,感觉要黄,准备跑路了

2020-07-07 12:11:42 +08:00
 george404

小弟在一个创业型小公司 10 个人搞 golang 项目。最近模块连调的时候发现一个 bug 追到另一个人写的代码里去了,直接崩溃了。

1.那个人一共撸 4 万行代码(包括注释换行),其中 3 万行在一个文件夹下,一个文件夹下直接 30 个.go 源文件。。。。没有任何逻辑和层次,甚至分类。

2.很多函数复制粘贴多次,后面修改代码,得跟着所有函数改一遍。

3.几乎没有封装,要用另外一个 package 的函数,直接大写,导成全局函数。

4.当看到 package 里一个 go 文件全局变量是这么定义的( types 为另外一个包)

var(
a=types.Function1
b=types.Function2
......
......
n=types.Functionn
)

一共定义了 100 多个全局变量。。。。。。

这个人自称 10 年开发经验,我怀疑他是故意这么写代码的。我当时就觉得项目上线 1 个星期内肯定黄,这种代码如何维护更新,我看我要准备跑路了。。。。。 当你想好好做事的时候,碰到这种货,,,哎。。。。。。。。重头再来了。

13500 次点击
所在节点    程序员
68 条回复
awolfly9
2020-07-07 12:15:57 +08:00
项目黄不黄其实和代码没有一点关系
Muninn
2020-07-07 12:19:28 +08:00
如果是别的语言还好……

如果是 golang,你没法说啥,因为最开始官方就是推荐这么写的。

铺 100 个文件的著名项目都多得是。

所以 1 不是问题。 2,算是半个问题,社区有很多过度封装的讨论,有些情况复制是更好的。

3,是 1 和 2 衍生的问题,也不是问题。

4,确实有点问题


总的说来 创业公司刚开始主要是跑通业务 很多公司刚开始用 php 或者啥别的 cms 改改后面再重来。
u823tg
2020-07-07 12:19:37 +08:00
10 年这样肯定是故意这么写的,不用怀疑。
zhuangzhuang1988
2020-07-07 12:24:32 +08:00
还好是 go
要是 js, 或者 python, ruby
那才是要黄
luoqeng
2020-07-07 12:30:58 +08:00
Golang 就是当代的 PHP
liujialongstar
2020-07-07 12:33:44 +08:00
之前疯传过一篇如何写出无法维护的代码的文章, 这位深得其中真意, 或许这样, 这位就变得无可替代了
xiangyuecn
2020-07-07 12:41:31 +08:00
一言不合就重构😆 又可以多混半年工钱
george404
2020-07-07 13:56:21 +08:00
@Muninn
1. 要是著名项目就算了,这种 low b 项目根本没到那档次。再说好的项目至少不同版本不会全部塞一个文件夹下吧?整个项目基本上就 2-3 个 package 。


不是过度封装,是几乎没有封装,一个文件夹下 aa_handler.go, bb_handerler.go,cc_handler.go ,然后 aa_handler_v2.go, bb_handler_v2.go 全是这种东西,恶心不?公共函数和逻辑都不提出来。直接 copy-past,大概看一眼,全是每个源文件里面的函数名都基本上相似。

好像我在哪看到,go 中尽量避免使用全局可变的变量,容易被误修改。我是比较认同这种说法
george404
2020-07-07 13:57:25 +08:00
@u823tg 嗯,我也是觉得,这样做快,不用考虑接口,老板看功能好的快,开心,同时,自己又不可替代了,呵呵。。。。。没有人会接那烂摊子。
george404
2020-07-07 13:58:38 +08:00
@liujialongstar 同意!🤝
luojian666
2020-07-07 14:15:07 +08:00
跑路跑路
xuanbg
2020-07-07 14:27:23 +08:00
还好吧,才 4 万行代码,里面有效代码估计不足 1 万行。实在不行重写一遍也费不了多少时间。总之,这个正在向不可替代发展的先干下去再说,不然还真的要变成不可替代的了。
qinfensky
2020-07-07 14:33:20 +08:00
大道至简
DJQTDJ
2020-07-07 14:36:04 +08:00
这么说吧,公司可以没有你,但是不能没有他。
他的代码只有他知道怎么改。
你一改你就得懵圈
lepig
2020-07-07 14:39:24 +08:00
@DJQTDJ 所以说楼主还是太年轻啊。
fy1993
2020-07-07 14:41:27 +08:00
不可或缺的人
murmur
2020-07-07 14:41:57 +08:00
我记得 lua 年代就有把库里的函数再定义出来一次加快运行速度的例子
比如 local cosine = Math.cosine
roundgis
2020-07-07 14:41:59 +08:00
系統能用嗎?
iwh718
2020-07-07 14:46:12 +08:00
第一版的话,能跑通就可以了。
DelayNoMay
2020-07-07 14:52:35 +08:00
改需求的话,自己也得累死啊

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

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

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

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

© 2021 V2EX