ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

关于最近烦闷的工作

2022-09-02 23:02:20  阅读:119  来源: 互联网

标签:缓存 烦闷 一个 代码 项目 恶心 最近 关于 方法


关于恶心人的屎山代码

最近在维护公司以前的代码,准确来说应该是重构,之前看这个项目的时候我还以为这玩意儿应该至少是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 查询上面去。

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

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有