首页 > 其他分享 >关于最近烦闷的工作

关于最近烦闷的工作

时间:2022-09-02 22:56:30浏览次数:68  
标签:缓存 烦闷 一个 代码 项目 恶心 最近 关于 方法

关于恶心人的屎山代码

最近在维护公司以前的代码,准确来说应该是重构,之前看这个项目的时候我还以为这玩意儿应该至少是7,8年前的代码了,然后看了一下 SVN(忽略为什么现在这公司在用 SVN,我也不知道呵呵).

呵呵,大部分的代码都是 2019 年的代码,我实在不能够想到 2019 年能将代码写成那个样子。

2019年,C# 8 也已经发布了吧(先忽略,我为什么又跑去写 C# 了),实在搞不能够为什么代码能够写成那个样子。

下面列举一下我个人举的非常恶心的地方,欢迎各位对号入座,包括我自己(因为我已经开始摆烂了)。

  • 无处不再的魔法常量,WTF, 116 是什么东西,9 又是什么东西,「咕噜咕噜」(一个中文字符串)又是什么东西
    我真是吐了,定义一个静态类将这些东西收敛在一起整理干净不好吗,鬼知道这都是啥啊

  • 恶心人的各种方法名函数名变量名,xgschool, xgylschool是什么东西?xxwz又是什么东西?你要是说两个三个中文关键字不好翻译也就算了,满屏的 xyz 是什么意思?
    还不带注释,尼玛好一个不可替代(不得不说牛逼)好的,这些我都忍了,我直接看实现就好了。xgschool 看起来是 xgulschool 的反向操作,他们是互反的。也就是将
    一些指定的名称替换成为外部名称。
    好的,我大概明白了,可是你这也不对呀。然后来告诉你为什么很恶心,这两个方法都是接口一个字符串,然后一直链式调用Replace方法
    大概像是这样 str.Replace("张三", "李四").Replace("王无", "二百五"),然后这俩方法是互反的替换,然后还缺,对不上我真是
    服了,线上系统是怎么跑起来的?

  • 恶心人的 SQL 拼接,你实在是难以想象这里拼接 SQL 的方法,抽象一段方法,然后这个方法拼前面的一截,大概像是 "select x, y from table",
    然后该方法接受一个字字符串参数拼后面一截,它可能是 "where z > 0" 或者其他什么东西(这里简化了一下例子,明白意思就好)。
    调用开起来像是这个样子 GetXYZ("where z > " + i + "and n != " + name)
    WTF,你不能把他抽象成根据条件拿对象吗?请问你这抽象是什么意思?好吧,这也不是问题,烂代码而已。

  • 。。。 不胜枚举,懒得再谈

  • 最后一条,或者说我已经懒得搬着指头数这项目代码哪些问题了。知道最大的问题是什么吗。整个项目就是一坨东拼西凑用屎糊出来的机器,逻辑这里散落一点,
    那里散落一点,而且还不一致,就好像是这个窗户漏风,然后赶快刨坨屎糊上去,结果豁口更大了。没办法只好弄一坨更大的屎把这窗户糊住。呵呵。

这是之前的代码恶心的地方,那么现在来说说问什么现在的代码一样让我感到烦躁。

首先项目是个门户网站,也就是说这些数据很少做更改,更多的是对已有的数据做一个聚合展示的作用,也就是说读很多,但是写很少。写操作永远只会在管理后台进行。
业务逻辑根本是不复杂的,或者说根本没啥也无逻辑(有什么业务逻辑呢?)。这个是项目背景,也就是解释,为接下来的吐槽做一个铺垫。

然后现在的代码设计要求是,对于部分表的数据都做一个缓存,然后对一些聚合的查询做一些缓存(直接放到 redis 中)。我们肯定知道是吧,知道用到缓存就一定存在
怎么处理缓存一致性的问题,而这也是一个恶心的问题,如果能够不处理这个问题,那么当然是不处理得好。对部分表的数据做缓存不是不行,可是这不是将事情复杂化了
么。我的想法是直接缓存页面数据,URL 作为 Key,设置一个过期时间,根本就不需要考虑缓存一致性的问题,用实时性换响应速度,然而这个问题很大吗?

而且比他这样做表数据的缓存要快得多,一次 Redis 请求和多次 Redis 请求谁快?而且更加简单。

而且就算按他的想法来,代码设计也有问题啊。如果按他的想法(或者说明确指定),那么有两个缓存层级,一个是表(或者你叫他领域对象,不过我羞于启齿),一个
是聚合查询的方法,而实际代码的编写又将他们混在了一起,也就是说在一个相同的层级上有的方法用了缓存,而有的没有。

这样子一个问题是可能不一致(现在想象好像也不是什么大问题,不一致也没什么问题),再就是很丑。

这个是代码让我不喜欢,在一个就是现在这个工作基本上就是我一个人在做。其他人他们都有其他的项目,也都不想碰这个项目,于是这个大责任自然也就来到了我这个新人
手里。呵呵哒。

而已我到现在也没梳理清楚原来的代码怎么搬到现在这里来,一个是原来的项目我是实在没搞懂他是怎么正常跑起来的?再一个就是这个新的重构项目他们创建的模型(我更宁
愿称之为表)我没法直接对应到原来对应的 SQL 查询上面去。

关于原来那个狗屎项目的表设计又是一个值得吐槽的地方,然而已经很晚了,就此打住。

标签:缓存,烦闷,一个,代码,项目,恶心,最近,关于,方法
From: https://www.cnblogs.com/freesfu/p/16651592.html

相关文章

  • 关于vue接口的一些东西
    js文件中url:'/openOrganization/openOrgList',对应的是接口文档那边的链接method:'post',请求方式data数据vue文件中import{xxxxx}from'@/a......
  • 关于pycharm打开时很卡,一直加载中的解决办法~
    相信很多刚开始使用pycharm不太熟练的小伙伴,每天一开机打开pycharm总是卡半天,不知道的还以为是电脑卡了或者啥问题的。莫慌,其实并不是…今天我们就来解决一下这个问......
  • 关于『数论』:整除理论
    「一本书上每多一个公式,就会死掉减少一半读者。」——霍金「这上面每多一个公式,我就会失明一次。」——JQ序言  数论真有趣(弥天大雾。  (投放Myblogscsdn......
  • 关于VMware-在线vMotion-vmware vcenter migrate-的操作记录
    因其中一台ESXI的本地磁盘损坏,替换上的磁盘未进行正常的Raid重组,于是准备关机再进行手动Raid重组,定位原因但毕竟还是有一定风险的,于是决定将这台ESXI上的主机全部迁移到其......
  • 关于ag-grid-vue导出excel表格 进行内容valueFormatter
    最近在写ag-grid-vue的项目,用到了导出Excel功能,但是导出的数据是原始数据,不怎么理想,后来找了点方法进行处理,导出效果很好 <AgGrid...:defaultE......
  • 关于微信支付API证书LINUX安装问题
    什么是ssl证书  SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为SSL服务器证书。SSL证书就是遵守SSL协议,由受信任的数字......
  • 关于SM专用服务器磁盘挂载-银河麒麟V10
    图形界面挂载方式不太好使的样子。使用命令:直接配置:查看硬盘的UUIDfdisk-lvim/etc/fstab配置的时候注意:查看到的UUID为大写字母,我们需要转化为小写,不然识别不到。......
  • :- 关于本地存储和会话存储...
    :-关于本地存储和会话存储...大家好,我们将学习2个主题。什么是本地存储和会话存储以及存储容量等等......让我们阅读并享受博客......介绍...本地存储和会话存储对......
  • 开始一个关于出于自私原因学习编码的博客
    开始一个关于出于自私原因学习编码的博客Photoby阿尔图代码on不飞溅也许“让自己更有责任感”是一个更好的标题,但无论措辞如何,写一篇关于学习之旅的博客都是跟踪......
  • 最近在学日语
    对比了一些B站的日语教学视频,觉得这个挺不错:视频在这里 昨天开始学的,50音图平假名全记住了,片假名还有点磕巴。现在开始学语法了。【动力这种东西,真是来得莫名奇妙。......