糟糕的命名
整洁代码最重要的一环 就是好的名字,所以我们要深思熟虑如何给函数、模块、变量和类命名,使它们 能清晰地表明自己的功能和用法。
无意义的注释
学会只编写够用的注释,过犹不及,应当重视质量而不是数量
多层的if语句嵌套
if-else在程序设计中是不可避免的,作为程序员能做的就是减少嵌套,提升代码的可阅读性和质量
很酷却不宜理解代码
上面这种写法看起来是不是很酷,但是过一段时间再来看,你还能一眼看出这部分功能是做什么的吗?在我刚接触后端,使用python的时候写过这样的代码,结果就是在排查问题的时候相当头疼。代码写的别人看不懂并不厉害,而是写的谁都看的懂才是厉害。
❝ 调试在一开始就比编写程序困难一倍。因此,按照定义,如果你的代码写得非常巧妙,那么你就没有足够的能力来调试它。柯林汉定律 (Kernighan’s Law) ❞
不必要的继承写法
继承虽然是面向对象的四大特性之一,使用继承可以解决代码复用的问题,但也有其缺点: 继承层次过深、过于复杂会影响到代码的可维护性。如果子类中有方法依赖于父类中的 方法或属性,那么当父类发生改变时,子类很可能会发生无法预知的错误。
而组合的方式是把类中所有的接口功能单独实现,然后使用这些单独的对象组合在一起,完成和目标类一致的功能。继承是用来表示类之间的 is-a
关系,而组合是一种 has-a
的关系。使用组合
+接口
+委托
的方式可以代替大多数的继承场景。
重构代码的设计原则
开闭原则 (The Open/Closed Principle)
❝ 实体应开放扩展并关闭修改。❞
实体(可以是类、模块、函数等)应该能够使它们的行为易于扩展,但是它们的扩展行为不应该被修改。
里氏替换原则 (The Liskov Substitution Principle)
❝ 可以在不破坏系统的情况下,用子类型替换类型。❞
如果组件依赖于类型,那么它应该能够使用该类型的子类型,而不会导致系统失败或者必须知道该子类型的详细信息。
依赖反转原则 (The Dependency Inversion Principle)
❝ 高级模块不应该依赖于低级实现。❞
更高级别的协调组件不应该知道其依赖项的详细信息。
接口隔离原则 (The Interface Segregation Principle)
❝ 不应强制任何客户端依赖于它不使用的方法。❞
组件的消费者不应该依赖于它实际上不使用的组件函数。
单一功能原则 (The Single Responsibility Principle)
❝ 每个模块或者类只应该有一项功能。❞
模块或者类只应该做一件事。实际上,这意味着对程序功能的单个小更改,应该只需要更改一个组件。例如,更改密码验证复杂性的方式应该只需要更改程序的一部分。
合成/聚合复用原则(Composite/Aggregate Reuse Principle)
❝ 量的使用合成和聚合,而不是继承关系达到复用的目的。❞
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
最后
小编综合了阿里的面试题做了一份前端面试题PDF文档,里面有面试题的详细解析
CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
img.cn/20210419193354991.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tlcGxlcl9JSQ==,size_16,color_FFFFFF,t_70)
虽只说了一个公司的面试,但我们可以知道大厂关注的东西并举一反三,通过一个知识点延伸到另一个知识点,这是我们要掌握的学习方法,小伙伴们在这篇有学到的请评论点赞转发告诉小编哦,谢谢大家的支持!