一个工作了 6 年的同事写的代码,不看 git 记录我还以为是实习生写的

2020-09-27 09:58:01 +08:00
 garlics

第一次见到那么离谱的代码,完全没有封装的意思。

        if ($config['theme'] == 1) {
            if ($config['plugin']['PG_SHOPPING_CART']) {
                $tabIndex = [
                    'index' => 0,
                    'collection' => 1,
                    'bestforyou' => 2,
                    'cart' => 3,
                    'mine' => 4
                ];
                $tablist = [
                    [
                        'pagePath' => '/pages/index/index',
                        'text' => '首页',
                        'iconPath' => '/assets/images/home_unactived.png',
                        'selectedIconPath' => '/assets/images/theme1_home_actived.png',
                    ],
                    [
                        "pagePath" => "/pages/collection/collection",
                        "iconPath" => "/assets/images/collection.png",
                        "selectedIconPath" => "/assets/images/collection_actived.png",
                        "text" => "收藏"
                    ],
                    [
                        "pagePath" => "/pages/bestforyou/bestforyou",
                        "iconPath" => "/assets/images/bestforyou_unactived.png",
                        "selectedIconPath" => "/assets/images/bestforyou_actived.png",
                        "text" => "为你优选"
                    ],
                    [
                        'pagePath' => '/pages/cart/cart',
                        'text' => '购物车',
                        'iconPath' => '/assets/images/cart_unactived.png',
                        'selectedIconPath' => '/assets/images/cart_actived.png',
                    ],
                    [
                        'pagePath' => '/pages/mine/mine',
                        'text' => '我的',
                        'iconPath' => '/assets/images/mine_unactived.png',
                        'selectedIconPath' => '/assets/images/mine_actived.png',
                    ]
                ];
            } else {
                $tabIndex = [
                    'index' => 0,
                    'collection' => 1,
                    'bestforyou' => 2,
                    'mine' => 3
                ];
                $tablist = [
                    [
                        'pagePath' => '/pages/index/index',
                        'text' => '首页',
                        'iconPath' => '/assets/images/home_unactived.png',
                        'selectedIconPath' => '/assets/images/theme1_home_actived.png',
                    ],
                    [
                        "pagePath" => "/pages/collection/collection",
                        "iconPath" => "/assets/images/collection.png",
                        "selectedIconPath" => "/assets/images/collection_actived.png",
                        "text" => "收藏"
                    ],
                    [
                        "pagePath" => "/pages/bestforyou/bestforyou",
                        "iconPath" => "/assets/images/bestforyou_unactived.png",
                        "selectedIconPath" => "/assets/images/bestforyou_actived.png",
                        "text" => "为你优选"
                    ],
                    [
                        'pagePath' => '/pages/mine/mine',
                        'text' => '我的',
                        'iconPath' => '/assets/images/mine_unactived.png',
                        'selectedIconPath' => '/assets/images/mine_actived.png',
                    ]
                ];
            }
        } else {
            if ($config['plugin']['PG_SHOPPING_CART']) {
                $tabIndex = [
                    'index' => 0,
                    'cart' => 1,
                    'mine' => 2
                ];
                $tablist = [
                    [
                        'pagePath' => '/pages/index/index',
                        'text' => '首页',
                        'iconPath' => '/assets/images/home_unactived.png',
                        'selectedIconPath' => '/assets/images/home_actived.png',
                    ],
                    [
                        'pagePath' => '/pages/cart/cart',
                        'text' => '购物车',
                        'iconPath' => '/assets/images/cart_unactived.png',
                        'selectedIconPath' => '/assets/images/cart_actived.png',
                    ],
                    [
                        'pagePath' => '/pages/mine/mine',
                        'text' => '我的',
                        'iconPath' => '/assets/images/mine_unactived.png',
                        'selectedIconPath' => '/assets/images/mine_actived.png',
                    ]
                ];
            } else {
                $tabIndex = [
                    'index' => 0,
                    'mine' => 1
                ];
                $tablist = [
                    [
                        'pagePath' => '/pages/index/index',
                        'text' => '首页',
                        'iconPath' => '/assets/images/home_unactived.png',
                        'selectedIconPath' => '/assets/images/home_actived.png',
                    ],
                    [
                        'pagePath' => '/pages/mine/mine',
                        'text' => '我的',
                        'iconPath' => '/assets/images/mine_unactived.png',
                        'selectedIconPath' => '/assets/images/mine_actived.png',
                    ]
                ];
            }
        }
29409 次点击
所在节点    程序员
298 条回复
lhx6538665
2020-09-27 14:14:38 +08:00
你都能看懂了,说明代码很好理解,是好代码
xuewuchen
2020-09-27 14:19:10 +08:00
代码挺清晰的,缺点可能就是可维护可扩展性差点
对于我个人来说,会把经常需要维护的一些功能做成泛型类。反正可能写了就不咋动的就咋简单方便怎么来了。
在于我看来代码没有所谓的垃圾代码,因为所有没有核心数学模型算法的只是单纯功能实现的代码都是垃圾代码,一个培训 1 个月就能 CODER 的代码都是垃圾代码,什么界面布局,什么按钮命名,什么数据查询。。
啊。。不好意思。负能量了
yanghuaqiang
2020-09-27 14:19:42 +08:00
看了你的附言,更难懂了,原代码在逻辑上更加清晰,只是不够优雅。
要我优化的话:
- 首先定义一个默认返回的数组
- 保留原逻辑 if else
- 再在默认数组中做操作 unset 函数就够了
想说的是:不要为了优化而优化。
a719031256
2020-09-27 14:20:23 +08:00
@EscYezi 楼主应该没分清楚作业跟工作的区别
skinny
2020-09-27 14:24:52 +08:00
虽然不是程序员,不过看一圈下来,算是理解为什么很多程序员 30+就被淘汰了,还真不全是因为不够资本家压榨,就是活该。
jokeqf
2020-09-27 14:27:15 +08:00
上面的评论看完了,没人对代码里的硬编码有疑问吗?特别是如果没有注释,可维护性极差。
ylsc633
2020-09-27 14:28:26 +08:00
清晰明了 看看楼上多少不是写 php 的都能看懂,说明确实很清晰

唯一不太好的就是 if 太大了 if 太大了会影响视觉判断 这个 else 是对应哪个的

可解决办法两个

1. 大方法上面写清注释

比如:

// 如果 A = B
// 如果 A > C
// 或者 A <= C
// 或者 A
.....


2. 把 if 里大方法摘出来, 再放到 if 里 这样 if 特别清晰明了,后者修改也知道需要修改那块

比如 a = xxx b = xxx
if 条件
a
else
b



我个人觉得 web 应用千万不要过度封装, 性能不好再说, 后者维护也真的麻烦, 看了半天才能看懂啥意思,还特别特别容易出现 bug
Wincer
2020-09-27 14:28:47 +08:00
“一个工作了 6 年的同事写的代码,大家都来看看自己和他的差距在哪”,楼主要是这么起标题,楼里大部分说这代码好的人估计就会开喷这代码 xx 了。
xpfd
2020-09-27 14:28:55 +08:00
看了一圈下来发现很多年轻的小盆友没被现实毒打过, 还理解了为啥 30+的程序员就被淘汰,哎,年轻真好,无知无畏的,挺好的
sevenzhou1218
2020-09-27 14:31:27 +08:00
我只想说写代码|打补丁和 review 代码心态就不一样.
lepig
2020-09-27 14:35:14 +08:00
KPI 下的产物 不奇怪
anerevol
2020-09-27 14:39:08 +08:00
静态的看待这个问题,同事的代码是有点啰嗦
但是事情发展一般都是动态的

[
'pagePath' => '/pages/mine/mine',
'text' => '我的',
'iconPath' => '/assets/images/mine_unactived.png',
'selectedIconPath' => '/assets/images/mine_actived.png',
]
要不要把这个抽出来封装这个事情还真不好说 也许只是恰好各种条件都是这样的 没有更多的上下文条件不好定论

等楼主见过运行了 5678 年,换过 345 波人的项目代码,肯定会觉得现在同事的代码好像也不算非常糟糕了
fengmumu
2020-09-27 14:45:55 +08:00
@kera0a 哈哈哈哈哈哈
kanepan19
2020-09-27 14:46:21 +08:00
你以为大厂里业务代码有好多少呢 .
除了核心代码, 很多边缘的业务代码比这个 ifelse 还要多
afx
2020-09-27 14:51:54 +08:00
@soulmt #155,你跟复制粘贴党谈维护,人家跟你谈工资啦。
afx
2020-09-27 14:55:22 +08:00
@jiankaikey 要这么说的话为什么不把键盘上除了 0 和 1 之外的键都抠掉
kidlfy
2020-09-27 14:55:48 +08:00
我竟然看懂了
ooppstef
2020-09-27 14:58:20 +08:00
只希望, 以后 lz 在未来的工作中, 任何时候都坚持这个帖子里面的态度,任何时候都避免所谓的"垃圾代码".

以后别活成自己讨厌的人就好.当然,如果真能做到,lz 成就应该会很大很大.

代码好坏不谈,任何人都会因为各种外部因素写出质量低劣的代码.但我并不认为,可以通过一段代码,做出如此帖子的评论.
blackboom
2020-09-27 14:58:26 +08:00
刚工作的时候我也喜欢批评老代码,顺带损一下老员工。工作几年后我开始明白某些项目能跑就行了,目前依旧对代码质量有要求,不过分主次和轻重了。
djoiwhud
2020-09-27 14:58:28 +08:00
完蛋了,业务代码碰到了自我感觉良好的洁癖码农。你所谓的新需求,在以前是不存在的。为不存在的业务设计代码,分分钟就背一个磨洋工的锅。

既然不能忍,赶紧辞职。

心态有问题要承认。

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

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

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

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

© 2021 V2EX