2018年前端工作小结,个人改变之旅,前端学习者的杂谈

1,004 阅读4分钟

2019·杭州

前端,两年缺六个月。

换了一次工作,多了三两个朋友。

也更懒了,但过去整整一年,或多或少要给出一个交代。

不再学习新的框架/工具

都9102年了,小孩子才做选择,成年人都是all in。

或许是之前走的太仓促,光记得拍照发朋友圈炫耀了,来不及欣赏旖旎风光。

是时候故地重游了。

开始持有一些原则。

原则,风格,以代码的形式体现。做什么,不做什么,如何做,怎么做更好。自始而终,贯穿全局,并通过持续的反馈来校准。

每一行代码都存在理由。

开始纠结命名

截图

开始被业务开发所困惑

写好业务代码比想象的更难

截图

开始思考怎么写好业务代码的可能性

可读性 > 性能

截图

开始考虑对错之外的事情,什么是更好的,写对=>写好=>更好。

截图

截图

开始考虑代码质量的控制

截图

开始相信方法论,并用方法论来量化学习进度。

截图
截图

以及

  • 开始认识到基础的重要性,进而从零开始去学习计算机基础知识。
  • 开始重新学英语

阅读

分享一下最近半年翻看次数最多的几篇文章

好像都是图,字数有些少,我就摘录点文字假装很多字:)。


一、什么是复杂性 Ousterhout 教授认为,软件设计的最大目标,就是降低复杂性(complexity)。所谓复杂性,就是任何使得软件难于理解和修改的因素。

复杂性的来源主要有两个:代码的含义模糊和互相依赖。

  • 模糊指的是,代码里面的重要信息,看不出来。
  • 依赖指的是,某个模块的代码,不结合其他模块,就会无法理解。

复杂性的危害在于,它会递增。你做错了一个决定,导致后面的代码都基于前面的错误实现,整个软件变得越来越复杂。"我们先把产品做出来,后面再改进",这根本做不到。

二、复杂性的隔离

降低复杂性的基本方法,就是把复杂性隔离。"如果能把复杂性隔离在一个模块,不与其他模块互动,就达到了消除复杂性的目的。"

改变软件设计的时候,修改的代码越少,软件的复杂性越低。 复杂性尽量封装在模块里面,不要暴露出来。如果多个模块耦合,那就把这些模块合并成一个。

--如何降低软件的复杂性?


逻辑就是问题的定义,比如,对于排序问题来讲,逻辑就是“什么叫做有序,什么叫大于,什么叫小于,什么叫相等”?控制就是如何合理地安排时间和空间资源去实现逻辑。逻辑是程序的灵魂,它定义了程序的本质;控制是为逻辑服务的,是非本质的,可以变化的,如同排序有几十种不同的方法,时间空间效率各不相同,可以根据需要采用不同的实现。

程序的复杂性包含了本质复杂性和非本质复杂性两个方面。套用这里的术语, 程序的本质复杂性就是逻辑,非本质复杂性就是控制。逻辑决定了代码复杂性的下限,也就是说不管怎么做代码优化,Office程序永远比Notepad程序复杂,这是因为前者的逻辑就更为复杂。如果要代码简洁优雅,任何语言和技术所能做的只是尽量接近这个本质复杂性,而不可能超越这个理论下限。

--程序的本质复杂性和元语言抽象


写在最后

回顾2017,时间能改变很多 2017年前端工作小结,个人踩坑之旅,前端学习者的杂谈

对于2019,并没有多少期望,只希望遇到更好的自己。