大家都是互联网公司的,那么我来分享下企业开发中的黑暗吧

2016-06-17 11:22:39 +08:00
 murmur

我们的需求很简单,就是用 phantom 映射 pc 端的页面到手机端操作,考虑到目标系统是 IE5+兼容,而且大量的垃圾代码,以及一点都没有的 ajax 操作,所以这个设计也是没什么,毕竟日访问量也就万级别,而且内网+私有机房,资源都不是问题。

我们假设某个审批有 3 步:

A 、打开单子,看一眼有什么内容,当然作为脚本这里需要检查一下某些标志元素是否出现,来判断是不是这个人的审批步骤

B 、选择下一步的流程,这在手机上是一个新页面

C 、选择下一步谁来审批,这在手机上是新页面,在 PC 端也是新页面不过是 B 步的一个弹窗罢了

如果整个架构是有状态的,手机端最多也执行三步就够了,但是实际上这个做架构的不知道当时脑袋进水了还是什么问题,做了一个无状态的设计,这个设计把 A+B+C 变成了 A+A+B+A+B+C 六步,具体是这样

1 、打开单子,向用户返回单据详情,输入审批意见,这个时候后台把审批意见存到临时数据里

2 、用户在手机上单击“审批”按钮,此时服务器请求上面的 B 步骤,并填入 1 中的审批意见

3 、用户在手机上选择流程,下一步也存到临时数据里

4 、服务器扔掉 1 的状态,重新开启一个 A 的页面,输入审批意见,模拟用户进入流程页面,填入流程,并打开选人页面,返回所有可选的人

5 、用户在手机上选人,下一位审批者也存入临时数据

6 、服务器扔掉 4 的状态,重新开启 A 的页面,输入意见、下一步流程、审批人、点击确定

7 、手机端收到成功信息

那么现在做这个架构的人在深圳某著名互联网公司,我一般很少在背后议论人,但是你作为负责人,搞出这么一个脑残的东西来,实在是忍无可忍,如果这个操作有五步,那么服务器要执行 1+2+3+4+5=15 步,一下就是三倍的负载开销,别说骂了,干死的心都有。那么多资源干嘛用的,用户在操作的时候在后台给他保存一个 phantom 的进程又能浪费多少资源。。。非要搞无状态。

至于代码,我们来分享一下不涉及秘密的纯功能函数,这个需求很简单,有一个字符串

AAA ( BBB ) YYYY-MM-DD hh:mm:ss ,其中 AAA 和 BBB 表示纯中英文不含符号的字符串, BBB 的括号是全角括号,后面是一个时间,假设这个格式为 F ,给定字符串:

F1->F2->F3->F4

希望得到[{AAA,BBB,H},{AAA,BBB,H}].length=4 ,其中 json 为简写,那么他们是怎么做的呢?

var lzgc=[];
var all = $('#sometextbox').text();
$($('#sometextbox').text().split('->>')).each(function(i){
//alert('split '+i);
var a=all.split('->>')[i];
var lz = {};
if(a.indexOf(')') > 0){
var temp = a.split('(')[0];
if(temp.indexOf('/') > 0){
lz.who = temp.split('/')[0];
}else{
lz.who = temp;
}
lz.what = a.split('(')[1].split(')')[0];
var time = a.split(')')[1];
lz.when = time.split(':')[0] + ':'+time.split(':')[1];
//lz.when = time.split(' ')[0];
lz.when = lz.when.replace('(','').replace(')','');
lzgc[i]=lz;
}
//alert(i+' fenkai '+a);
});

代码请自行格式化。。。

8208 次点击
所在节点    程序员
36 条回复
xiamx
2016-06-17 11:42:47 +08:00
所以楼主你有空打了这么多字,为什么不去 Fix it...
murmur
2016-06-17 11:46:02 +08:00
@xiamx 所有的代码都是复制粘贴,没有任何复用,同样的代码有几百个 copy ,而且不知道每个里面有什么改动~
tjxjj
2016-06-17 12:17:56 +08:00
资源不是问题,那就使劲用呗,到时再优化下(一般就是推翻重做了,重新开发个 app 都不是啥事)
这都不是啥事,经历了国企的软件开发,那才叫黑暗
murmur
2016-06-17 12:20:53 +08:00
@tjxjj 是 基本上如果架构烂了就没有优化的可能都是推翻重做 问题是推翻也得有钱才能推翻啊。。。没钱推翻这么烂还要维护才是坠痛苦的
BSD
2016-06-17 12:27:16 +08:00
我所见到的程序员们面对这一质疑,一般都是回一句:“那么多计算资源(CPU/RAM)买的就是拿来用的,不用就是浪费!”
satifanie
2016-06-17 12:32:04 +08:00
我只想说,这种让人恶心的想吐。万人坑。 怎么不提,他们当初开发调试都没有的,盲写代码的段子呢。
Cu635
2016-06-17 12:51:04 +08:00
@xiamx
因为你没有经历过,不知道 Fix it 或者重构在中国人的公司里面绝不是一个技术问题……


@tjxjj
估计这个比部分国企还要黑暗。
FrankHB
2016-06-17 13:10:32 +08:00
@BSD ——“不是你买的闭嘴。”
不过说实话,其实和程序员也没太大关系……
就是作为最终用户买的也该自裁,很多市场就是被这坨逗比代婊了主流配置而搞烂的。合着真正搞对需求的用户计算成本的时候反而还得迁就这种惯坏逗比用户的行情花冤枉钱才叫正义了?
jatesun
2016-06-17 13:14:51 +08:00
这要是以后出点啥问题要改代码就有点玩了
ma125125t
2016-06-17 13:36:20 +08:00
如果你能明白这个道理,你的上级比你更清楚。
不改至少还能正常运作,要是改出问题你还想不想混了。
murmur
2016-06-17 13:38:34 +08:00
@ma125125t 是,所以填坑的只有发牢骚的分,而这个维护效率 efficiency...
thinkif
2016-06-17 13:46:30 +08:00
Quick And Dirty ,一般还都会说先跑通然后再重构之类的,然后就没有然后了
ren2881971
2016-06-17 14:02:48 +08:00
@BSD +1
talent
2016-06-17 14:10:11 +08:00
默语君,会不会待会儿出现一个《我就是那个深圳某著名互联网公司做架构的人》的帖子...
learnshare
2016-06-17 14:12:28 +08:00
我以前会手动 copy 一份代码,改改名字,然后给新客户启动一个服务
bk201
2016-06-17 14:37:29 +08:00
看着吃力
fyooo
2016-06-17 17:10:41 +08:00
IE5+兼容??? 可怜的娃啊
samael
2016-06-17 17:17:59 +08:00
murmur
2016-06-17 21:08:47 +08:00
@fyooo 我们只是维护而已基本不开发了 就是配一下
broadliyn
2016-06-17 23:39:50 +08:00
哈哈,其实刚开始我刚进公司写代码的时候,也发现很多项目里有好多坑。

做的一个后台内容管理系统,因为没有专业的前端所以开发这个系统的界面部分也是后端做的,那 js 代码,,怎么说呢,写的非常乱、杂,一看就是专门写服务端的人写的(虽然我也不是个专业前端的,但是至少 js 还是有专门实践过一段实践的)。写一个小的界面组件,写两 function ,一个 div display:none ,然后包进 jquery , jsp:include 进来,最让人郁闷的是 http header 里塞了一堆的 js 、 css ,然后所有界面都 include ,导致这个后台体验不算好,也一直想提使用一些 vue.JS 之类轻量级的框架,不过因为以前没啥话语权也就没多说什么了,原先怎么写的,我也就照着写,力求不造坑。但是随着项目的迭代,发现如果继续按照原来那样写,后边就根本没法维护,后来忍不住最近终于提出我的想法了,不过开会的时候其他个别的想法的是学习成本高、项目使用不稳定。。。(其实言下之意就是:能用就行,不想折腾那么多,学新东西太费劲)。如果说服务端上个新框架啥的,这个肯定是需要考量的,但是对于前段界面框架这种把稳定性挂钩在一起我就感觉无力吐槽了,就好比你跟我说 jQuery 上了会不会不稳定一样。。前端框架在易用性、可选择性上来说比什么 mybatis 、 hibernate 、 spring 什么要高多了。又不像换个语言框架把服务器弄蹦了跑不起来。

对于重构这块,就我工作这两年下,体会还是比较深的。我最感叹的一点就是,人与人之间的追求都是不同的,有的人是为了完成功能完成任务,而有的人会尽善尽美,你很难说这两种是对还是错。之前我觉得自己也算是尽量做好一件事的人吧。但是有时候真的,想去做好这件事很难,明明这地方代码写的不好,你又总不好意思动他代码,动了出问题了容易把锅吸到自己头上,所以有时候为了不去碰这个坑,反而往往自己绕着弯搞了另外一堆坑,有时候我都为因为将来接手我代码的人感到自愧。。怕他们说我代码写的烂。。。。因此在一个没有代码规范,没有代码 review ,为了完成功能不去想着程序可扩展性、健壮性的情形下,实在是很头疼,以至于我现在维护原来的代码的时候,也是怎么快点完成就怎么写,因为那堆代码真的有时候自己改着都觉得满满的挫折感,很痛苦写完就不想再看一遍,完全没有自己以前写代码的那种成就感。

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

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

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

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

© 2021 V2EX