这个观点害死了很多人。。
说一段我自己的经历吧:
2010年加入创业时期的360,担任高级工程师,负责一个远控软件,同时要跟操作系统底层打交道。
入职后才发现在Leader的神操作下,部门的代码耦合成了一个大泥球,一个主类就有几万行,主类里的一个函数就有几千行。。
那个Leader最常说的就是:能跑起来不要想着去改,跑起来就行!
后来因为副总裁要求一个大功能,这哥们直接卡壳了,他带着我们几个小弟想改改上线,发现怎么都改不出来,,硬是delay了1个月都做不出来。
副总裁直接怒了,快速给他转岗到其他部门,让我先暂代技术经理职位,同时开始招聘。。。
面对前任Leader留下来的数十万行耦合严重的代码和框架(大白话:代码屎山),压力巨大。360素来以打仗凶猛著称,发版以天计,那段时间一天好几个版本。面临的最大困境是:如何在高速迭代的过程中重构整个旧的框架。至今还记得,面对那个主类的心情,那是崩溃和无力的。但越大的压力,你扛下来往往是更高的成长速度。
一瞬间,又回到了大三的那种疯狂状态,每天极限Coding,甚至接近入定的状态,上班往那一坐基本不动弹,就靠几瓶水几个面包,一天的三餐就对付了。
我们将代码组件化、模块化,实现了一边飞奔一边换轮子。就带了两个实习生,花了3个月搞定了这一堆恐怖的代码。
当系统彻底被改造完毕之际,那种兴奋难以言表。
因为成功完成了技术改造,同时还满足了副总裁的各种需求,副总裁直接给我晋升技术经理,招技术经理也再没提过了。
那段时间为了更好的重构代码,我还看了很多计算机经典书籍,包括《重构》、《代码整洁之道》《高性能Web编程》等等,把书本上的知识应用于工程实践,这种成长真的是难以言表的舒爽。
顺便送大家一份非常宝贵的计算机经典书籍资料,我把工作中用的经典电子书库(包含代码重构、数据结构、操作系统、C++/C、网络经典、前端编程经典、Java相关、程序员认知、职场发展)、面试找工作的资料汇总都打包放在这了,学完进大厂很容易:
我已经帮大家打包好了,点击下方链接直接获取:
这段时间,我的架构思维开始突飞猛进,我们在每一次的重构之前,都会先画出业务时序图、类结构图、工程关系图,然后按图索骥,每每在实现的那一刻,不由得惊叹:程序世界,太奇妙了。
所以你看看,带着代码能跑就不要动的观点,真的会害死人的,程序员有的时候就得直面大泥球,不断重构,不光锻炼能力还能保证后续需求的迭代。
干这一行的老兵都知道,稍微上一点规模的代码库,都是很复杂的,多年积累下来的各种奇奇怪怪的需求,导致了各种代码补丁和Hack,这些复杂度是外行难以真正体会的,在这种复杂度下,看起来人畜无害的一个修改,很可能导致连锁反应,然后代码屎山会爆炸的!
但不全是坏消息,好消息是——软件这玩意没有磨损!
换句话说,只要软件现在能运行,在外界环境不干扰的情况下,软件会持续运行下去!
就拿网上这张著名的图来说,大家很可能觉得这真是凑合,因为这个红绿灯已经坏了,不去修的话,风吹雨打,最后红绿灯肯定会彻底坏掉的。
但是,在软件的世界里,和硬件不一样,软件是没有磨损的,管他风吹雨打,软件还是一样的0-1序列,硬件坏了,换一个同样规格的硬件就是了,软件继续运行。
所以,真的,只要代码能跑的起来,能不动就不要动了,此乃经验之谈!
在实现鸽子飞行功能的过程中,程序员使用传统技能ctrl+c复制了百度/谷歌搜索到的CSDN上直升机类中旋转螺旋桨的飞行方法,并抱着实践出真知,跑起来就不算错的心态,直接粘贴到项目中鸽子类飞行功能中,并将符合方法参数类型的鸽子头绑定到了一起,代码顺利运行!
发现效率和控制方法上有些许差异,于是减小了头的旋转周期并给脖子添加了控制飞行方向的方法,随后更新了代码文档。
数日后,负责鸽子程序的程序员鸽子了程序,新来的程序员吐槽了老员工后,将飞行代码的参数由鸽子头修正为鸽子翅膀:
有一个原因其他回答没有提到:
因为在国内互联网大厂,主要产品的程序靠谱与否、流畅与否,消费者都只能买账,特别是那些动辄上百MB的巨型聊天、购物软件。流畅也得用,不流畅也得用,崩溃了你都得硬着头皮重启用。
每个应用都越来越卡,卡到你受不了,只能换新手机。国外程序员代码是写的好,可你我总不能在国内用eBay日常购物上Uber叫车上电报日常汇报工作吧?
既然跟计划经济时代的自行车一样不愁你不买涨,程序员还优化干啥?自然有各种困难理由。
就说健康码吧,最新款的iPhone13ProMax,开支付宝+开健康码竟然也要二三十秒,前两年的旗舰更是快1分钟,查询流量大的时候还白屏。
嘿,人家就是不优化,人还觉得30秒能查出健康码老厉害了,你有本事把防疫人员物理说服了,不然就乖乖憋着。
假如苏联的某个汽车厂厂长说:汽车能开的动,就不用更新换代,那的确计划经济,大家只能买他们的车,但这种言论会被做成苏联笑话在中文互联网上传承;
到简中IT行业,这就成了屎山动不得了。
这就和为啥钢铁厂和电站有一本厚厚的安全手册一样。。那本安全手册中的每一句都是人命累积而成的。
你以为这些代码写在哪里,看起来很蠢。。但是他们都是为了满足某一个时间上的一个需求写出来的。只不过,电脑程序有特殊性,你改了代码,大不了程序跑不起来。没啥大危险性。
你要这么喜欢系统重构,建议你下次去钢铁厂和电站进行这种工作。你去看看知乎上生产事故中的那些二货,有看汽轮机皮带斜了,用脚矫正,直接截肢的。有看炼钢炉出水口歪了,手欠去拨动,直接化灰的。
首先,这句话显然不是程序员专属的,而是一句著名美国俗语的意译。
if it ain't broke, don't fix it
不要跟我争论语法。
也不要跟我争论说明明你是在某本技术书上看到这种说法的,毕竟这句话在 1970 年代就流行了,被后来的技术书籍反复引用难道不是很正常么……
反过来,正是因为技术书和技术讨论中会引这句话,所以你看到的时候它已经被意译得不那么接近原貌了。
然后,这句话本身流行开来的背景也很简单,就是一个政府官员 (Bert Lance) 表达了反对某些类型的改革的立场:
Bert Lance believes he can save Uncle Sam billions if he can get the government to adopt a simple motto: "If it ain't broke, don't fix it." He explains: "That's the trouble with government: Fixing things that aren't broken and not fixing things that are broken."
但是各位习惯键政的可能立刻就看出来问题了。
Lance 也不是真的字面意义上的反对一切改革。他纯粹是反对那些他反对的改革,支持那些他支持的改革——就像那些他这样的政客一样。(废话体在这里还真好用)
这个政治版本的俗语,其实关键点根本不是这个近乎语意重复的因果关系,而是“什么是 broke,谁来规定哪些东西 broke 了”。 Bert Lance 可能觉得政策 A 是 broken 的,得改,而觉得政策 B 是不 broken 的,不应该改。换一个人说同样一句话,可能他其实想表达的意思是完全相反的。
翻译到这里,你就会发现这就是最最最平常的政治辩论,“我说得对,你说得不对”。仅此而已。
既然说完了这句话本身的来源,那么我们再看软件。那么上面的政治版问题直接翻译过来,就是这些:
什么叫“代码能跑”呢?
谁来定义“代码能跑”呢?
一份代码是否“能跑”,取决于哪些条件?这些条件何时会变化?
这几个问题其实并没有通用的回答,而我觉得回答这几个问题,比纠结这句话本身在说什么要有意义。
而这句话本身,大概就是一种把自己的观点包装在废话体后面的话术吧。
你是刚入职的程序员, 发现公司的代码一团糟. 你在想"这是谁写的烂代码". 你决定尝试优化清理下.
优化需要产品测试运维的配合. 他们推脱没有收益? 你成功的用"追求卓越"勾起了他们曾经的激情
经过一个月的努力, 优化版本上线了.
这里有两种结果:
让我们总结下. 最好的结果是你们辛苦一个月没有物质收益. 更可能的结果是你们辛苦一个月最终被处罚. 现在你大概开始认识到这是多么愚蠢的投入了吧.
什么? 你还是认为这种尝试是有价值的? 小伙子你精神可嘉, 如果幸运遇到个好的平台一定是个不错的程序员. 但是好的平台太少了. 我这里说的好的平台是指:
想想就明白, 这种平台万中无一
这就是,字面意思理解就行吧。
所以,你是不理解属性,还是不理解堆区开辟,还是不理解拷贝构造,还是不理解浅拷贝?
我给题主一个思路,去学习下浅拷贝的含义,估计应该问题就解决了。
我真搞不懂为什么上网买个球拍,还能牵扯出来这种糟心的事?有规定必须双一流学校才能买吗?还是说我们河南人不能买?
听完老板的回应,我这个河南人火更大了:
客服他们20多岁做这个工作不容易,因为别人投诉,情绪不好才说出这话的。
明显是这个客服素质不行,就别在这装委屈。
好多人还会说断章取义,那我先把事情说清楚:
一个学生买了球拍,对赠送的礼物不满意,过来询问,之沟通中客服就开始魔幻操作。
地域歧视,这句话没得解释,但是常年经受地域黑的我已经习惯了,我还真是感恩,谢谢你让大家知道我们河南人很穷;
河南是一个农业大省,河南人就只知道种地,每年调出 400 亿斤原粮和加工制成品,为保证国家粮食安全做贡献,可偏偏发展最不好、最不受重视、最不怎么见起色的就是农业。
河南是一个人口大省:1,搞不动教育,全省仅有一个211的高校,好几个从河南大学独立出去的院系都已经是211高校了,河南省委屈啊,没有好的教育资源,所以河南每年高考都是数一数二的内卷大省;
2,不懂得搞经济,没有好的教育环境,就留不住人才,人口外流严重,自己没有人才就缺少经济头脑,就更难以发展经济。
所以河南确实穷,大家都知道,没必要专门讽刺我们,只会让大家觉着你这个人没素质。
除了这些,恐怕作为名校毕业的你,早就忘记了初中历史书上说的“得中原者得天下”。
没错,四川大学作为双一流学校,确实比河南理工大学好,但是买东西没有必要歧视一本的学生?并且人家现在已经考上郑州大学的研究生。
大学是一个对学生综合素质的教育,没有任何大学教育可以说是浪费时间的大学,你没学好,只能说是你自己的问题。
四川大学马克思毕业的,真是验证:不管受过什么样的高等教育,学过多少理论思想,永远启蒙不了屁股歪的人。
话说:阿迈威运动专营店的客服,为什么我都给你主动发信息一个多小时了,你还不回复我??
去打游戏