一个工作了 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',
                    ]
                ];
            }
        }
29376 次点击
所在节点    程序员
298 条回复
dethan
2020-09-27 11:02:33 +08:00
恕我直言 他好就好在好他****
wxsm
2020-09-27 11:03:20 +08:00
相信我,这个算是不错的。真的,十几年的码农写出来的东西不如实习生的,比比皆是。我见得多了。
zxcslove
2020-09-27 11:03:23 +08:00
原代码的写法有个大坑,就是参数里面的字符串有少许变化时,如何减少不一致的错误。而且修改时不注意发生了不一致,也很难看出来。
busymilk
2020-09-27 11:12:15 +08:00
最烦各种抽象,各种封装,除了作者本人,没有任何人能改的动.抽象调抽象,根本找不到实例化的地方,一会就绕懵逼了
tailf
2020-09-27 11:12:17 +08:00
# 我的经验


刚学会封装的工作一年的新手最喜欢多层封装,而有经验的程序员都懂:

代码是写给人看的,只是恰好能运行。
jwenjian
2020-09-27 11:13:01 +08:00
duplication is more cheap than wrong abstraction
Biebe
2020-09-27 11:17:37 +08:00
特别是那种所谓“全栈”工程师
dc25b
2020-09-27 11:18:45 +08:00
我也很奇怪为什么提一句封装这么多人急得跳脚,什么叫封装一下就看不懂了?这段代码如果是长期慢慢累积的还能理解,这要是在一个 PR 里面在我组里 review 是绝对过不了的。
jsjjdzg
2020-09-27 11:20:26 +08:00
年轻精英员工和 敲了多年看了多年代码的 2 群人的碰撞,往往是精英看不上别人的
fangcan
2020-09-27 11:20:34 +08:00
你有看下他的其他代码么
opengps
2020-09-27 11:21:16 +08:00
有些老旧代码,仅仅是因为一次配置不需要再次使用,我不懂前端代码,不确定这个是不是这一类
ccraohng
2020-09-27 11:21:49 +08:00
我会把 url, icon 等等配置写在写在一个文件里,直接组合引用。过长的静态数据最好不要放在逻辑里, 反正我是不会这样,反正也就几分钟的事。说写得好我是没想到的
zoffy
2020-09-27 11:22:25 +08:00
@wizardoz #3 这波你在第五层
kimqcn
2020-09-27 11:26:26 +08:00
可以干掉提需求的人
Rorysky
2020-09-27 11:28:04 +08:00
手动 编译器优化,你再怎么封装,最后 都是展开的
Inside
2020-09-27 11:30:54 +08:00
这波我站楼主,没有意识要做到 single point of truth 的还可以理解,但已经有这个意识了不想做、懒得做、嫌麻烦的,还是别写代码坑人了。
在我的团队里,这种问题第一次发现我会给个黄牌警告,再有下次直接红牌下场了。
myzyq
2020-09-27 11:33:21 +08:00
擦汗。忙起来还顾得了这么多。最少逻辑清楚,问题解决,后续其他人开发可以快速入场。
ps: 自己封装了,还要很多测试,不能保证功能正常,后续别人接手还要先搞清楚你的封装内容,理解也需要花时间。

不明白这个跟工作时间长短有什么关系。。。。
时间更长的人可能还会考虑,开发效率,接手难易,逻辑是否清晰。至于是否封装,不影响效率的情况下,封装不封装有区别?
Reapper
2020-09-27 11:33:43 +08:00
非 php 人员,除了$tablist 没有抽出去,感觉其他问题不大,能看懂是什么意思
cumshot
2020-09-27 11:35:45 +08:00
六年的同事还这样写,你以为他在第一层,你在第四层,其实人家在平流层,自己琢磨去吧。
fenglangjuxu
2020-09-27 11:37:31 +08:00
@tabris17 #5 你是对 php 有多大偏见啊 语言无优劣 能力有高低

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

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

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

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

© 2021 V2EX