
一个项目中控制器命名能出现好几种变形,一个对的都没有:
UserContol 、UserControl 、UserContoler 、UserControler 包括模型也是:
UserMode 、UserModle 、UserModol 变量命名更是离谱,单字母和语言关键字乱用:
a 、b 、c 、class 、string 、byte 再然后就是缩写和语意不符合的:
数据表和模型名称不一样的:
因为命名不规范,他后面出现了很多删除 A 表的数据,却用了 B 表的模型来操作,导致错删~
字段名称和值不统一的:
如果说命名混乱就算了,至少比较好改,但是业务实现也混乱:
数据库设计更混乱不多说了,就说几点:
公司同事写的代码,是我这么多年来见到的最烂的代码,但是因为人家来的年限资历比较长,也不好意思去提这个事情,有没有啥好的办法,自己重构吗?
1 wolfie Sep 3, 2021 各玩各的,项目管理不说话就装哑巴。 |
2 chendy Sep 3, 2021 反馈给管事的人解决 |
3 sonyxperia Sep 3, 2021 你不是领导就不要多嘴 |
4 ila Sep 3, 2021 不用你接手,就当做没看到 |
5 wh469012917 OP @ila 关键是我接手了,不然谁管他写的是啥玩意 |
6 bfdh Sep 3, 2021 换同事 |
7 auuuny4 Sep 3, 2021 看的我都不会写模型名了 |
8 wh469012917 OP @sonyxperia 我也不想多嘴,关键是这个项目我接手了,恶心到人了 |
9 wh469012917 OP @mu1er 看了几天我自己都写错了 |
10 ytll21 Sep 3, 2021 这么烂的代码,技术负责人如果没有发声的话,那就想一下公司给的钱,有没有足够到让你天天坐在屎边上的地步。如果没有,还呆着干吗? |
11 sonyxperia Sep 3, 2021 @wh469012917 既然交到自己手上了,那就有时间的时候一点点改过来么 |
| td width="auto" valign="top" align="left"> |
13 aragakiyuii Sep 3, 2021 快跑 |
14 AlanDSF Sep 3, 2021 领导不指示,千万别自己重构。不然最后这个屎山塌了你要负责。 |
15 AlanDSF Sep 3, 2021 和你这个一比,我突然觉得之前同事用拼音缩写命名方法变得不是那么屎了 |
16 ouyc Sep 3, 2021 我就想知道你同事怎么用关键字命名变量 |
17 tabris17 Sep 3, 2021 把吐槽的话憋在心里或者写在注释里,除非王八退房 |
18 redial39 Sep 3, 2021 我就写过很多垃圾代码,我现在也还在不断的输出垃圾代码,虽然我从不以写垃圾代码为荣为耻,但我还是依然在写垃圾代码.不为了什么.只是为了混口饭吃... 顺便看了一下 lz 帖子记录...emmmmm |
19 szuwl Sep 3, 2021 你是来搞钱的,不是来搞人的,不是你的下属最好不要乱说话,过来人经验。 |
20 HolmesYe123 Sep 3, 2021 习惯就好,我同事可以把一个功能写在几个模块里面,乱放。 |
21 wh469012917 OP @ytll21 领导注重功能完成和稳定性,其他的没怎么关心过 |
22 wh469012917 OP @sonyxperia 我现在也是,命名什么的自己慢慢调过来,但是不做大改,特别是数据库,免得背锅 |
23 wh469012917 OP @AlanDSF 对的,我也是只敢做基本的命名调整等等,数据库设计碰都不碰;那个同事倒是说要是觉得设计不合理可以改,不过我不敢动 |
24 wh469012917 OP @AlanDSF 拼音好歹是正常的命名啊,猜猜也能看得懂,我们这边直接用 class byte string 做变量名了 |
25 wh469012917 OP @ouyc string := "foo" byte := "bar" 这样,go 语言允许用关键词做变量名,但是 ide 会给你提示 |
26 wh469012917 OP @redial39 你可以学学我这个帖子里面的垃圾代码,看看能不能更上一层楼 |
27 wh469012917 OP @szuwl 那肯定的,我当然不可能傻到去说人家,也不会去找领导打小报告,反正在屎上堆屎就行了 |
28 sprite82 Sep 3, 2021 感觉像是说我的同事,idea 都有单词提示的,他就是要写错的,代码各种复制粘贴,能不公用就不公用。 一个 Controller 接口能连续写 1000 行,代码文件随随便便就是 4000+行,导致我 idea 卡到爆,打一个空格 cpu 能飙 100%持续好几秒。 注释和实际执行是相反的 try catch 不捕获异常,控制台、日志、 出参全看不到具体错误 用 JSONObject 作为 json 入参接收,如果是表单提交 那好,形参列表十几二十个家常便饭,包括 service 调用也是十几个形参 调用其他第三方接口,手写 json 字符串 + 号拼接(很多参数) 配置写死在代码里,上线出问题,就改代码继续发 分页查询:计算总条数时,select * ... 然后 list.size() 获取总条数,再计算页数(计算这段代码复制了 n 次,也没抽出来)。 还有很多不想说了 |
29 wh469012917 OP @parrotdance 差点被同化了 |
30 7gugu Sep 3, 2021 via iPhone 让大家 review 代码咯,不要干自己重构这种傻事 |
31 statement Sep 3, 2021 我觉得和自己也有关系,一般和同事的水平是上下五厘米 /狗头 |
32 wh469012917 OP @7gugu 团队人也不多,代码审核估计推行不开 |
33 whisky221 Sep 3, 2021 笑死,看的血压上来了 |
34 noe132 Sep 3, 2021 via Android 怕不是看了如何写出无人能维护的代码那篇文章正在深刻实践 |
36 NexTooo Sep 3, 2021 这不是我遇到的事情吗 大半年过去了,同事已经拍拍屁股离职好几个月了,我依然时不时还得为了他遗留的代码擦屁股。。。 反正我接手第一件事:CodeFormat,连换行、空格都不规范看着太痛苦了 第二件事就是规范命名,先把乱七八糟没根据意义起名或者拼写混乱的都改了 然后接着才是慢慢梳理代码……抽出方法,合适的时候直接重构部分模块。都是有空的时候搞搞,确定这块后续还有需求的才改,不然加班都改不完 |
37 HeyVincent Sep 3, 2021 论 code review 的重要性 [滑稽] |
38 huntagain2008 Sep 3, 2021 本人非程序员。 以前 C#代码我看着别人写 String,我就问他怎么不写成原型的 string 。他跟我说 String 比较快。 后来我知道技术领队都是让老手先检查一下那人的代码。我就释然了。实际上他会的东西比我多。 要是以前遇到你写的这样的情况,我早就跑了。 |
39 NexTooo Sep 3, 2021 代价就是有些大的模块,我只是拆了部分重构之后,屎山有点坍塌的趋势,已经出现好几个原来没有的 bug,复现规律还没找到……摊手。可能回头差不多了直接推倒重构了。 |
40 CodeJr Sep 3, 2021 解决不了问题,那就解决制造问题的人 |
41 RexG Sep 3, 2021 笑死了 同事:这样公司就离不开我了 |
42 OMGZui Sep 3, 2021 快跑 |
43 jrtzxh020 Sep 3, 2021 我一个前端写的 java 代码估计比他规范~~ |
44 back0893 Sep 3, 2021 能跑就行( |
45 shangwuli Sep 3, 2021 重构吧,这就跟定时炸弹一样,拖着拖着哪天就爆了。 |
46 zjsxwc Sep 3, 2021 via Android 重构,有 ide 在 symbol 命名替换应该容易 |
47 wh469012917 OP @zjsxwc 命名很重构,配合 IDE 搞起来很快,关键在于数据库结构和业务逻辑实现,不敢碰 |
48 chanchan Sep 3, 2021 他是不是把《如何书写不可维护代码》当圣经 |
49 tiktokxxxx2020 Sep 3, 2021 实在想不通,他代码烂和你也没太大关系,反正以后吃亏的是他.... |
50 jiebin Sep 3, 2021 要么忍要么滚,之前我前公司的一个项目就是这样的,项目在我之前 4 个人接手过,每个人的方式都一样,三套代码风格,一下子驼峰,一下子下划线,一下子又一起来,然后我干不到 1 个月就走人了 |
51 l00t Sep 3, 2021 类似问题我一般都回:能用就行。 但你这遇到的也太屎了…… |
52 lizhenda Sep 3, 2021 看到 ui 缩写惊呆了 |
53 itechify PRO 代码和人有一个能跑就行 |
54 stach Sep 3, 2021 提桶跑路 |
55 neptuno Sep 3, 2021 不改数据库,改变量名和类名吧,至少两边名字一样,数据库各种字段不一样也改不动 |
56 PerFectTime Sep 3, 2021 我的 StringBuilder 简写为 sb |
57 Brentwans Sep 3, 2021 坚持不挖屎坑给别人,也从不接别人的屎坑。 |
58 Ken9527 Sep 3, 2021 还不走? |
59 ila Sep 3, 2021 拉个群,加上你上司和你同事,有问题群里直说。 |
60 NEVERCODE Sep 3, 2021 好家伙,自带混淆。 |
61 wangyzj Sep 3, 2021 这不是代码不行 这是英文问题 |
62 liangkang1436 Sep 3, 2021 @sprite82 感觉你说的是我同事 |
63 lpbname777 Sep 3, 2021 血压升高 |
64 zxCoder Sep 3, 2021 换个公司 |
65 wh469012917 OP @tiktokxxxx2020 因为我要接手这个项目,咋就没关系了,这就好比别人拉了一坨屎,然后让你吃下去,你说有没有关系呢 |
66 wh469012917 OP @jiebin 不忍也不滚,会根据情况慢慢重构,然后委婉的提一些建设性的调整意见,如果别人能接受最好,接受不了就不提了,各干各的 |
67 wh469012917 OP @neptuno 命名问题好改啊,配合 IDE 一下子就 ok 了,关键的是数据库,这个是个大难题 |
68 wa143825 Sep 3, 2021 我一同事也是,xxxId 和 xxxid 混用,同样功能不能内容的列表字段主键用不同的,个人信息头像用 headIcon,他人的用 avatar,本来几个 model 就能搞定,结果写十来个各种继承,而且搞的我各种条件判断,最后太乱了,一模一样的页面我复制两三份。 项目开工前,我都用协作工具把字段和功能逻辑大致的确定了,结果就他框架方便,我这各种蛋疼。 |
69 wh469012917 OP @jiebin 而且你这个好歹是命名问题,不难改,数据库和业务逻辑垃圾,改都改不了这个才可怕 |
70 Varobjs Sep 3, 2021 复制粘贴这事 看公司代码中有一串数字 85399,不是很理解为什么,然后猜测了下,估计是查询一天的范围的数据 想查 今天 0 点~今天+86400-1 来着,写错成 85399 然后一堆人复制这段代码,全局搜了三四处不同人写的 |
71 xe2vherd Sep 3, 2021 头像是本人吗。 如果是本人,你说的都对。 |
72 dr1q65MfKFKHnJr6 Sep 3, 2021 这很难说,文人相轻, 码农也相轻; 代码烂一半责任在负责人,一半在程序员; |
73 darknoll Sep 3, 2021 @wh469012917 这个必须要离职啊 |
74 dqzcwxb Sep 3, 2021 |
75 wwlzz Sep 3, 2021 想一想,为什么会成为同事 |
76 jdhao Sep 3, 2021 via Android 六字真言,要么忍要么滚 |
77 ragnaroks Sep 3, 2021 @huntagain2008 估计还是没分析器的时候,现在装了分析器后会提示此处该用 Int32 还是 int 等等 |
78 dingdangnao Sep 3, 2021 就三个字:不要管。你只能控制你自己,别人你也管不了,干脆就不要看 大家都是在大山上拉小堆,哈哈哈,just works 就行了 |
79 suzic Sep 3, 2021 via Android 开会鉴赏一下 |
80 fengpan567 Sep 3, 2021 没有代码评审吗 |
81 yunluw Sep 3, 2021 心疼你 50ns |
82 leafre Sep 3, 2021 千万别离职,这岗位祸害人 |
83 potatowish Sep 3, 2021 via iPhone 这种操作很明显是外包的做法,别问我怎么知道的,各种骚操作让人又好气又好笑 |
84 howencilx Sep 3, 2021 这也太随意了吧,他自己看着不难受吗 |
85 hallDrawnel Sep 3, 2021 如果需求需要改动到旧代码,就跟 leader 说明情况,适度重构一小片代码出来,脱离原有的路径,隔离出一个范围自己开发。 如果是新的功能,做非侵入式修改,然后把逻辑嵌入到旧代码里。 然后写个文档充分说明这个情况,把风险尽量告知相关人,不然出了事情还得背锅。推动 code review,当然有的 leader 自己就很菜,他根本没办法区分什么是好代码什么是坏代码,只是风起飞了把这只猪给吹上去了。 |
86 fiypig Sep 3, 2021 via iPhone 改着改着自己变成那个风格哈哈哈哈 |
87 qiaobeier Sep 3, 2021 使用工具,不符合基本规则不让 push 。有条件上 code review 。实话说很影响效率,没见小公司执行这套方案的 |
88 sutra Sep 3, 2021 是不是键盘太脏了,有些键有时候按下去不出字符? |
感同身受 |
90 bintianbaihua Sep 3, 2021 经历过 ,建议不要随便重构。也不要随便怼人, 做好自己的事情就好了。。 |
91 JamesR Sep 3, 2021 还行,不算烂,至少能看懂。 当年他写的时候,没人教他怎么写,老板,客户又催得急,只能这样了。 |
92 friz Sep 4, 2021 怎么还看不到 有一个能跑就行( doge |
93 kuangwinnie Sep 4, 2021 ....自己复制自己的代码这种操作都不管吗????? |
94 keepfun Sep 4, 2021 这样的代码 就有点烂的过分了 |
95 gancl Sep 4, 2021 不设计外键是对的啊 |
96 crazycarry Sep 4, 2021 你就一个 crud 的,就这还指点江山,有那时间看看开源项目吧,觉得自己牛看看 flink,spark,k8s,tidb 的代码。我相信你自己就变 shutup |
97 suyuyu Sep 4, 2021 心惊胆战的点进来,怕说的就是我。还好不是-.- |
98 wh469012917 OP @Varobjs 他格式化时间成字符串,不是用语言的时间库的,而是自己计算~ |
99 wh469012917 OP @crazycarry 不积跬步,无以至千里 |
100 wh469012917 OP @crazycarry 不积跬步,无以至千里,基础的代码质量都搞不好,还能搞得好什么呢 |