2024年最新程序员,为什么千万不要重写代码?_代码重写,Web前端面试2024

跳槽是每个人的职业生涯中都要经历的过程,不论你是搜索到的这篇文章还是无意中浏览到的这篇文章,希望你没有白白浪费停留在这里的时间,能给你接下来或者以后的笔试面试带来一些帮助。

也许是互联网未来10年中最好的一年。WINTER IS COMING。但是如果你不真正的自己去尝试尝试,你永远不知道市面上的行情如何。这次找工作下来,我自身感觉市场并没有那么可怕,也拿到了几个大厂的offer。在此进行一个总结,给自己,也希望能帮助到需要的同学。

面试准备

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

面试准备根据每个人掌握的知识不同,准备的时间也不一样。现在对于前端岗位,以前也许不是很重视算法这块,但是现在很多公司也都会考。建议大家平时有空的时候多刷刷leetcode。算法的准备时间比较长,是一个长期的过程。需要在掌握了大部分前端基础知识的情况下,再有针对性的去复习算法。面试的时候算法能做出来肯定加分,但做不出来也不会一票否决,面试官也会给你提供一些思路。

对技术领导者来说,重写项目的代码也是一个异常艰难的决定。因为从公司层面说,重现代码甚至会威胁产品的市场竞争力。一旦决定重写代码,那么与竞品相比,你可能落后了2~3年——在软件行业,这时间可够长的。

你理想中的新代码会带来产品功能的提升▼

但事实上,即便重写的新代码可以实现旧代码的所有功能和需求,但是为产品带来的市场竞争力只有边际提升。因为重写用的新技术、新语言、新框架并没有给产品带来质的飞跃。

更不用说在重写的漫长过程中可能会遇到一些意外情况,比如:

1、缺钱:资金链的断裂

2、缺人:核心程序员离职

最终导致效果不佳:达不到原产品应有的所有功能和需求,白白浪费了时间和金钱,也丢掉了市场竞争力。

所以重写代码意味着,你在把自己置身于非常危险的境地,可能几年后你也写不出比以前更好的代码。你只是花了一大笔钱把已经存在的代码又写了一遍。

当你觉得眼前的旧代码很烂时,该怎么办?

你觉得旧代码写的很烂,那又怎样呢?它们已经上线,已经在实际运行中经受住了考验。所以当你发现前任留下的代码乱七八糟的时候,不妨冷静下来,从以下三个方面入手理解代码、改善代码:

1、代码的结构有问题

如果一段网络代码突然弹出了自己的对话框,应该是UI代码需要被处理。这些问题可以被解决掉,你要一次次小心地移动代码,重构,改变接口。还需要一位细心的工程师立马仔细地检查这些改变是否有问题,从而不打扰到其他人。事实上,甚至比较大的结构变化也可以不扔掉代码来完成。

大牛程序员Joel Spolsky回忆说,曾经在某个项目中,他和他的团队花了好几个月重新架构在一点上:把代码动来动去、清理、创建有意义的基类,并创建了模块之间的完美接口。但是他们始终非常小心翼翼,并没有产生新的bug、也没有丢掉任何旧代码。

2、代码的效率不高

曾经,Netscape的渲染代码被传非常缓慢。但事实上,这只会影响该项目的一小部分,这部分是你可以优化甚至重写的。你完全不必重写全部代码。优化速度的1%工作量,会让你获得99%的爆炸性提高。

3、代码写得很丑

有些代码真的写的很丑,比如Joel曾参与一个项目,开始用下划线做开始的成员变量约定,但后来改用更标准的「M_」。所以一半的功能用「_」开始,一半用「M」开始,这看起来真的很丑陋。但这个问题5分钟就能解决,而不用从头开始写全部的代码。

最后,你要记住,从头开始再写一遍并不意味着你会写出比以前更好的代码。因为你没有参与到上一个版本的创建,所以你其实根本就不算有经验。一旦你准备推倒重写,你可能会再犯一遍版本一犯过的错,甚至会产生更多的新问题。

面对糟糕的旧代码,Keep Calm & Carry On !

在大型商业项目中,推倒重来是非常危险的行为。当然,如果你是在做实验,想到新算法可以随时重写。

如果你跳槽、或刚接手一个新项目,面对看上去异常混乱的旧代码,请冷静下来,忍住推倒重写的冲动,想想上面这些经验之谈。

分享一个程序员的面试题库小程序   MST题宝库

专业技能

一般来说,面试官会根据你的简历内容去提问,但是技术基础还有需要自己去准备分类,形成自己的知识体系的。简单列一下我自己遇到的一些题

最近得空把之前遇到的面试题做了一个整理,包括我本人自己去面试遇到的,还有其他人员去面试遇到的,还有网上刷到的,我都统一的整理了一下,希望对大家有用。

其中包含HTML、CSS、JavaScript、服务端与网络、Vue、浏览器等等

由于文章篇幅有限,仅展示部分内容

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中,`equals()`和`hashCode()`方法是用于比较对象的两个重要方法。`equals()`方法用于判断两个对象是否相等,而`hashCode()`方法用于返回对象的哈希码。在使用集合类(如HashSet、HashMap等)时,需要重写`equals()`和`hashCode()`方法来确保对象能够正确地被比较和存储。 如果不重写这两个方法,那么默认情况下,比较的是对象的引用,而不是对象的值。这意味着即使对象的属性相同,如果它们的引用不同,它们也会被认为是不相等的。这显然不符合我们的预期。 因此,重写`equals()`和`hashCode()`方法可以确保对象能够正确地被比较和存储,并且能够在集合类中正常工作。在重写`equals()`方法时,需要注意以下几点: - 对称性:如果a.equals(b)返回true,那么b.equals(a)也应该返回true。 - 自反性:a.equals(a)应该返回true。 - 传递性:如果a.equals(b)返回true,b.equals(c)也返回true,那么a.equals(c)也应该返回true。 - 一致性:多次调用a.equals(b)应该返回相同的结果,前提是两个对象没有发生变化。 - 对null的处理:a.equals(null)应该返回false。 在重写`hashCode()`方法时,需要确保: - 如果两个对象相等,它们的hashCode()方法返回的值应该相同。 - 如果两个对象不相等,它们的hashCode()方法返回的值应该尽可能不同,以提高哈希表的性能。 总之,在Java中,重写`equals()`和`hashCode()`方法是程序员必须掌握的基本技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值