重构引发的思考
研一时注册了github,上传过几个课程作业,研二时去看那些代码,自己都不忍直视, 研三毕业时整理研二的项目代码,不断有推到重来的冲动……
不少朋友也有类似的情况,我一直以为这是自身编码水平的提升的体现,最近跟两位资深专家聊过这个问题,有些新的认识。
关于重构
一个人编码水平提高之后是一定会鄙视其之前的项目,因为老项目作者的水平低于新项目作者的水平(同一个人提升前后)
但是一个鄙视其之前项目的人水平不一定提升了太多,其中一个原因可能是其看到过优秀的代码,学到一些皮毛就想重构自己的项目
这里指的个人独立项目,排除有大神导师带领入门的项目,排除大神导师严格code review下的项目。
如果把一个软件项目比做一栋房子,房子落成两年后不满意了,能去铲平重建吗,不现实。社会在进步,建筑行业在发展,能在建造时避免所有已知问题,设计的尽可能好一点,尽可能超前一点,保证10年不过时就很不错了,这就需要房屋设计者足够牛逼,水平领先。
软件不同于建筑的一点是,它给予我们不断试错的机会,但又不对,对于用户规模庞大的项目,一旦发布/上线,重构难度几乎等同于重建一座大厦
总结下
- 对老项目不顺眼的点的多少,和能力水平不成正比
- 重构不见得是一个技术成长的好方法,只代表了你的当前水平
- 为了减少重构冲动,要快速提升技术
- 怎么有效的提高水平,要掌握一个叫做“道”的东西
技术成长
这个“道”是什么,我也不清楚,因为我还没到那种境界,没有验证我的道
我在学校里学到的方法是
- 多做项目、多写代码,能熟练掌握
编程语言
和算法/数据结构
- 学习底层的实现,操作系统、编译器、网络等,知晓系统背后的原理
- 订阅高质量的牛人博客,向榜样学习,刚开始写博客也是受组里大神的影响
进入工业界,从同事朋友那学到
- code review,提升代码质量,技巧
- 开源社区,架构之美,系统设计,多思考why
- 减少碎片化学习:博客、公众号,增加系统性学习:书箱、系列教程
- 尽可能去看一手资料,少看极不客观的N手资料
- 要去造轮子,虽然有更好的开源产品可用,但是
看懂->能写
还有一定距离 - 涉猎技术之外的领域,思想碰撞,为了到达更远的位置
欢迎comment, challenge !!!
留下评论