重构引发的思考

少于 1 分钟读完

研一时注册了github,上传过几个课程作业,研二时去看那些代码,自己都不忍直视, 研三毕业时整理研二的项目代码,不断有推到重来的冲动……

不少朋友也有类似的情况,我一直以为这是自身编码水平的提升的体现,最近跟两位资深专家聊过这个问题,有些新的认识。

关于重构

一个人编码水平提高之后是一定会鄙视其之前的项目,因为老项目作者的水平低于新项目作者的水平(同一个人提升前后)

但是一个鄙视其之前项目的人水平不一定提升了太多,其中一个原因可能是其看到过优秀的代码,学到一些皮毛就想重构自己的项目

这里指的个人独立项目,排除有大神导师带领入门的项目,排除大神导师严格code review下的项目。

如果把一个软件项目比做一栋房子,房子落成两年后不满意了,能去铲平重建吗,不现实。社会在进步,建筑行业在发展,能在建造时避免所有已知问题,设计的尽可能好一点,尽可能超前一点,保证10年不过时就很不错了,这就需要房屋设计者足够牛逼,水平领先。

软件不同于建筑的一点是,它给予我们不断试错的机会,但又不对,对于用户规模庞大的项目,一旦发布/上线,重构难度几乎等同于重建一座大厦

总结下

  • 对老项目不顺眼的点的多少,和能力水平不成正比
  • 重构不见得是一个技术成长的好方法,只代表了你的当前水平
  • 为了减少重构冲动,要快速提升技术
  • 怎么有效的提高水平,要掌握一个叫做“道”的东西

技术成长

这个“道”是什么,我也不清楚,因为我还没到那种境界,没有验证我的道

我在学校里学到的方法是

  • 多做项目、多写代码,能熟练掌握编程语言算法/数据结构
  • 学习底层的实现,操作系统、编译器、网络等,知晓系统背后的原理
  • 订阅高质量的牛人博客,向榜样学习,刚开始写博客也是受组里大神的影响

进入工业界,从同事朋友那学到

  • code review,提升代码质量,技巧
  • 开源社区,架构之美,系统设计,多思考why
  • 减少碎片化学习:博客、公众号,增加系统性学习:书箱、系列教程
  • 尽可能去看一手资料,少看极不客观的N手资料
  • 要去造轮子,虽然有更好的开源产品可用,但是看懂->能写还有一定距离
  • 涉猎技术之外的领域,思想碰撞,为了到达更远的位置

欢迎comment, challenge !!!

分类:

更新时间:

留下评论