为什么有人可以堂而皇之的写出如此难维护的代码??
1
as94boy 2019-03-01 09:40:34 +08:00
在错误的时间,错误的人做了错误的事,然后就这样咯。
|
2
ThirdFlame 2019-03-01 09:44:15 +08:00
另外 开发工具、技术的革新 带来很多的变化
|
3
nicevar 2019-03-01 09:45:20 +08:00
不仅仅是时间关系,还有语言其他因素有关,五年前十年前的 c/c++项目变化能有多大
|
4
crist 2019-03-01 09:54:43 +08:00
因为这个世界上垃圾程序员太多了。属于那种赚一笔是一笔的人。
|
5
ayase252 2019-03-01 09:54:50 +08:00 via iPhone
五年前的 JavaScript 和今天的理念都变了不少
|
6
MuscleOf2016 OP @as94boy
@ThirdFlame @nicevar 其实想知道的是一些编程思想的变化,比如前端的模板,哪怕 10 年也有这样的思想。10 年的模板代码 放到现在的话,绝对比那些拼接字符串的好维护多,比较好奇那些拼接一大串字符串的人怎么想的。 |
7
zwh2698 2019-03-01 09:57:22 +08:00 via Android 1
代码好不好真的不重要,重要的是功能要求满足了,这就是好代码。因为你不是搞学术,你是工程师。
|
8
MuscleOf2016 OP @zwh2698 只是好奇为什么不写出容易维护的代码,也不是多优秀 搞学术 优化什么的
|
9
aaahhh123 2019-03-01 10:00:50 +08:00
不知道为啥,我看以前的一些项目,看起来还更直接简洁,没这么多复杂的框架,但是确实维护起来有时候会烦会很花时间
|
10
aaahhh123 2019-03-01 10:02:20 +08:00
写不好维护的代码,我想的是,一个可能是懒,不想按照标准规范格式去写,二是不想别人插手?这样自己可以一直跟下去?
|
11
MuscleOf2016 OP @aaahhh123 像现在前端框架多了,带来的学习成本稍微高点。不过总比各种垃圾代码写满了,没文档什么都没有的好
|
12
MuscleOf2016 OP @aaahhh123 之前有时候自己写垃圾代码的时候,就是不想动脑子,怎么简单怎么来。一个 if 不行就两个,无脑撸,以多自然就不好维护了。
|
13
lijunbo 2019-03-01 10:06:06 +08:00 1
“容易维护”其实是一个很高的要求了,大多数代码的诞生仅仅是为了能运行,能运行多久是没人管的
|
14
learnshare 2019-03-01 10:09:34 +08:00
取决于写的人有没有意识,以及有没有能力写好这段代码。跟年代关系不大
|
15
index90 2019-03-01 10:12:22 +08:00 5
十年前的前辈,代码能一直留到现在,能让你看得到,从某种角度上来说已经很了不起了。
五年前十年前是什么情况?不先了解就直接开喷以前的人写的代码烂。十年前会写快排就进大厂了,现在只能算是基本技能。 抛开时间维度来讨论问题,只能说明你太嫩了。 不是贬低楼主,这是普遍现象,没经历过十年的职业生涯,很难自己就能深刻理解。普遍都是用现在的目光,去看待“古代”的问题。 自问一句,你如今写的代码,不管优不优雅,能让两三年后的人看到吗? |
16
Light3 2019-03-01 10:12:51 +08:00
你要想清楚 他那个时间写代码的目的 很多的时候 都是能运行就行了..
|
17
daimen 2019-03-01 10:13:15 +08:00
以前我也是调侃以前的人,直到领导要我一个月写个 数据接收 + 事件调度 + 规则引擎 + 具体业务实现 + 自己看专业书籍整理业务规则 + 可部署可热更新+直接上线 的系统的时候,我就能理解之前的人为什么代码是这么个吊样子。 领导不懂啊,他觉得对你们写程序的来说,不是 so easy 么。
|
18
MuscleOf2016 OP @index90 手上也没有十年前的代码 ,五年 十年只是好奇,因为工作年限才两年多,比较好奇工作的时间长的人看以前久的代码什么感觉。
|
19
nicevar 2019-03-01 10:17:08 +08:00
@MuscleOf2016 你要说 web 前端的话这就更正常了,10 年前前端的代码在大家的脑海里应该是算“字符串”,不是代码,那时候前后端代码基本上都是同一人写的。
|
20
cstj0505 2019-03-01 10:20:55 +08:00
和语言有关系,不过更多是写代码的人的素养问题。
你看看一些 glibc,postgresql 这些大神十来年前的代码,照样是好代码 |
21
janxin 2019-03-01 10:21:21 +08:00
我们只是临时实现一个功能-》哎呀这功能反馈不错,我们完善一下-》哎呀怎么这么复杂,我们还是打打补丁吧-》卧槽!祖传屎山!
|
22
MuscleOf2016 OP @cstj0505 另外 有什么网站公开一下久远的代码的?
|
23
smeraldo 2019-03-01 10:33:22 +08:00
反正 gang of four 是二十几年前的东西了🙃
code smell 也是上世纪 90s 开始流行的概念 |
24
index90 2019-03-01 10:33:26 +08:00
@cstj0505 拿 glibc 和 postgresql 来比有点欠妥,这些都是基础软件。现在大部分国内开发者都是互联网开发者。
过去的是软件产品,现在是产品软件。过去能开发软件的没有几家公司,软件就摆在那,用户自己来用,是用户适应软件。而现在是把软件包装成产品,送到用户面前,软件去适应用户。 前者可以按照瀑布模式或者小瀑布模式开来发,软件在编写之前就已经设计好了,过程不接受变更,自然容易写出规范的代码。而后者则需要快速响应用户的需求变化,快速开发(不能说是快速迭代),快速发布是关键。 产品如果活不下来,你代码再优美,也只剩下程序员自嗨罢了。 |
25
iamsheep 2019-03-01 10:38:43 +08:00 via Android
破窗效应,可维护性又不会计入绩效,又没有 code review,加班都是在写新需求(新 bug ),代码转个几手就根本没眼看了,这种事要预防根本不能依赖个人自觉,还是要优化流程。
|
26
wee911 2019-03-01 10:56:22 +08:00
@zwh2698 就因为是搞工程才要考虑代码写的好不好, 以后好维护,搞工程就是这样, 搞学术的反而是无所谓代码写的好不好,他们更关注实现算法
|
27
Banxiaozhuan 2019-03-01 11:11:04 +08:00
其实不是代码垃圾,而是维护这个代码的人一波又一波的换。
新上的人在没有完全熟悉这款业务的时候又不敢随便改,等熟悉了以后,又想着跳槽,或者偷懒。 除非遇到一个极其负责的人维护,但是这种人很少。 所以不要喷以前的老代码写的很差,如果差,请你把他改好。 |
28
zhenizhui 2019-03-01 11:19:46 +08:00
我估计需求都没搞清楚
|
29
gamexg 2019-03-01 11:20:03 +08:00
有些是菜,有些是懒,还有一些是需求的变更逼得代码结构越来越烂。
|
30
dorentus 2019-03-01 12:02:40 +08:00
十年前不就是才 2009 年吗,Stack Overflow 和 Github 都有了……
|
31
inrenping 2019-03-01 13:00:22 +08:00
能稳定运行十年的代码还是有可取之处的,不要只看缺点。
|
32
mingl0280 2019-03-01 13:19:23 +08:00
五年十年这个时间有点短了,我司 99-05 年的代码到现在都还是很易于维护的,规范的代码很重要……
|
33
cstj0505 2019-03-01 13:21:38 +08:00
@MuscleOf2016 搜一下吧,很容易找到的,包括 linux 内核的。pg 的代码在官网能找到
|
34
sugars 2019-03-01 13:21:49 +08:00
有些人为了实现功能而写代码,都不往长远地考虑
|
35
k9990009 2019-03-01 13:24:00 +08:00 via Android
开发时需求不明确,开发后需求变更,时间又逼着紧,当然代码堆砌来的快咯。给时间啥都好说
|
36
x86 2019-03-01 13:25:43 +08:00
你敢保证你写的东西 5 年,10 年后还在被使用吗
|
37
passerbytiny 2019-03-01 13:29:04 +08:00 1
设计模式可以十年不变,但成品代码 3 年不变就没前途,5 年不变就可以扔垃圾箱了。一个 5 年不变的代码,如果能用,那绝对是过度超前设计,开发成本要数倍于垃圾代码推到重做。
|
38
jrtzxh020 2019-03-01 14:52:16 +08:00
能稳定运行这么多年,代码已经很好了吧。。。
|
39
MuscleOf2016 OP @jrtzxh020 我哭了,append 已经解释了,不是说我遇到五年十年前的代码,是讨论下五年十年前的设计模式
|
40
gulili 2019-03-01 15:31:03 +08:00 1
@passerbytiny 说的很有道理。我们有个项目就是从十多年前继承下来的代码,到现在已经到了没办法维护的地步了,不得不整体重构。在我看来,如果是设计模式问题,很可能是因为产品定位和需求变更,这么多年,可能产品经理,架构,开发都换了几波了,公司的业务结构重心也变化很多。之前设计的人不可能预见到 10 年后的需求是怎么样的。并且像很多大佬说的,作为工程师,设计的架构主要是满足需求,over-design 一样会给项目带来不好的结果。
|
41
yongzhz 2019-03-01 16:11:10 +08:00
因缺思厅
哈哈哈哈哈啊哈哈 |
42
berumotto 2019-03-01 16:12:58 +08:00
5 年后维护你现在写的代码的人也会发出这样的抱怨。。。。(逃
|
43
wemore 2019-03-01 16:22:25 +08:00
接替我项目的人:“为什么有人可以堂而皇之的写出如此难维护的代码??”
|
44
yongzhz 2019-03-01 16:22:25 +08:00
稳定压倒一切啊,革新需要莫大的勇气。
不是每个人都有这种勇气和毅力去革新的。 |
45
PainSwim 2019-03-01 16:30:16 +08:00
很多时候,需求不明确,然后今天写好,明天又要改掉了,但是重写又赶上不进度,然后写出很多难以维护的代码,现在我自己都嫌弃自己写的代码。
|
46
Kaiv2 2019-03-01 16:35:32 +08:00
最近在重构前两年的代码。。。
|
47
Mohanson 2019-03-01 16:52:55 +08:00 via Android
人家代码已经跑了 10 年了,这就是好代码
|
48
saulshao 2019-03-01 17:00:30 +08:00 1
我知道模板这个概念,大约是 3 年前的事情。
最早我写代码是大约 15 年之前了。那个时候我是一个网站的 ASP 程序员。我记得步骤如下: 1. 连接数据库(可以共享代码),所有的页面用同样的数据库连接代码 2. 拼接 SQL 3. 执行 SQL 4. 拼接 HTML 字符流。 上面的所有步骤我记得都是用 VB 脚本完成的。当时一个页面文件里的代码分成 2 个部分,一个部分是 VB script,这部分在服务器端执行,另外一部分则是 HTML 和 Jscript,则在客户端执行。但是这两部分代码可以用<%%>一起混用,于是导致的后果就是自己写的代码,过 2 周再回去看的时候,弄不清楚某一行到底是 VB 还是 HTML....一定要在脑子里把程序过一遍。 后来.net 出现了,我当时的感觉简直就是一个新天地,虽然没实际用于生产环境,但是确实引入了很多新的概念。 再后来我作为 BA 开始了解 JSP,当时的想法就是:这和 ASP 没啥差异,就是把 VB 换成 Java 而已。 其实代码架构的演化,这些年一直都是在为程序员服务,主要目标是提高代码复用程度,减少单个文件的复杂度。但是带来的后果就是整个项目的文件结构复杂度是在增加的。现在的 Flask 或者 Django 那样的框架,对于项目文件结构的要求其实比以前是提高了。 |
49
MuscleOf2016 OP @saulshao 感谢回答,只能点击下感谢了,很多年轻的程序员 其实很难了解到这样的经历。
|