(以下都是我个人主观看法,受我个人经历的影响。仅供参考)
如标题所示,我的真实意思表达就是,“前端新人要多写烂代码”。不管在学习中,还是在工作中。
为什么?因为不写足够量的烂代码,你就无法进化到写好代码的阶段。
因为烂代码之所以“烂”,是因为它不抽象。而抽象正是计算机语言的特征之一。高度的抽象、封装、可重用、松耦合..等,只要做到了这几个要求,,无KlRdnDEpn论多么复杂的应用都可以搞得定。这种能力需要开发者具有高度的强逻辑性思维方式,那么这种强逻辑的思维方式,从何而来呢?
它是天生的吗?
是的。有些人,天生的就有原由网很强的逻辑思维。
^_^
而我,你,及尔等凡人,也想拥有很强的逻辑思维,咋整?
一个字,多写。
写啥?
烂代码。
为啥写烂代码,能锻炼逻辑思维?
这就先要说说,我眼中的烂代码是什么样的了。烂代码,不是说写的像屎一样的,排版混乱,相互牵制,毫无条理,到处留坑,随时报错的东西。
我所指的烂代码,是“不够抽象、重用性差,紧耦合,封装差”...,等这类代码。这类代码的特征就是,“啰嗦”。明明写一个公共方法,接收几个参数,方法体内判断,给出不同逻辑分支就可以了。但开发者非要写几个不同名字,但功能相同的方法出来。
为什么要这样写?
我真的问过这样写的同事。“每个方法对应不同的步骤,我好维护,我知道哪个bug对应哪个方法”,这是我得到的回答。
于是我明白了,这其实是面向过程的思维方式所反映出来的写法。开发者把实现的思路和步骤想清楚之后,就一步一步的开始写,每一步做一个事情。就像走路一样,第三步和第五步明明都是同一个脚印,但在他看来,这二个脚印的位置不同,所以不一样。
这样写出来的代码不够抽象,没什么封装,而且像链条一样环环相扣,以后当需求变化了,代码会极难修改,这种代码时间长了除作者之外没人敢动。但写这样的代码有一个最大的好处!就是开发者可以用代码来验证自己的思路。
当他面对一个需求,例如购物车模块吧,如果我用这种“烂”代码思路,会先在纸上把各条业务线都写出来KlRdnDEpn,
1,当点击某商品加减号的时候,单独商品的总价变化;
2,当取消或选中某个商品的时候,所有商品的数量和总价变化;
3,当点击某商品加减号的时候,所有商品的数量和总价变化;
4,当直接输入某商品数量的时候,所有商品的数量和总价变化;
5,当直接输入某商品数量的时候,其单项总价变化;
6,当删除某商品的时候,所有商品总价和数量变化;
7,当购物车商品全选按钮处于未选中状态时,而所有未选中的商品都被删除,那么全选按钮自动变为选中状态;
8...
9..
就这么着,一条条的操作路径都在纸上写出来。这都是需求,是操作过程,是线。就这样一条条业务线的js开始写,每写完一条操作路径,如果运行测试没问题,能实现需求文档中的要求,那么这个开发者就可以认为,自己对于这个需求的分析的思路,至少到目前为止是没有问题的。需求分析能力就是这么练出来的。
这样的代码,烂吗?如果格式良好,命名规范,那肯定不烂。但从“架构与设计”的角度来看,这就是标准的烂代码。
但这是每个前端开发的必经之路,这样的代码写完了。开发者自己也清楚,自己只是实现了业务需求,一次二次,三次四次之后,他也会审视自己,也会要求自己,也会问自己,“开发的流程,是不是可以优化一下?”
从这个开发者第一次对自己问出这个问题的那一刻开始,他就再也不会写这种烂代码了。因为他对自己的要求提高了,不是仅实现就行,而是从整体与全局上来看待需求。
最开始的时候,他也没办法,新人入行,心中没底,压力山大,只求能做出来就Ok,不被公司开掉。这个时期是求生存,求活命,能留下就是一切。但当他KlRdnDEpn问自己“能不能再优化一下”的时候,他就进入求发展的阶段了。
而这种原由网过渡是怎么发生的呢?他的烂代码写到了一定的数量,产生质变了。
刚开始的时候就是没有思路,js写的很随心,想到哪写到哪。当你好不容易把一个功能写完了,回头一看代码自己也觉得乱。但它是你思考的结果。
写一次思考一次,写十次思考十次。用力想,用力写,要相信“大力出奇迹”。