• 重构博客写作


    重构博客写作

    李笑来老师说

    我们从计算机上可以学到的,其实是极少数极少数聪明人的思维方式和方法论。

    吴军老师最近提出的「计算机思维」也很好的诠释了这句话。

    作为一名教程序设计、信息安全类课程的老师,读到这句话时我真是深深打动了。我上课跟同学们常说,你们上课学到的思维方式和方法论跟你当不当程序员没关系,学好了,不论从事什么工作,这些思维方式和方法论都有利于解决你的问题的

    一名合格的程序员应该都读过一本书《重构》

    代码重构是一名合格程序员的必备技能。什么是「Refactor(代码重构)」呢?

    名词:对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。

    动词:使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。

    也就是说在不改变程序功能的前提下改进代码质量。我的概念里不会重构或从不重构代码的程序员是合格的,在我的程序设计课程里是要求同学们必须学习掌握的。你可以简单类比:写篇博客,然后排排版,美化一下,内容不变,但是让文章更易读了。

    写了近三年的博客,我一直感到自己的写作有问题,用「重构」的术语来说就是发现了自己写作中的「坏味道(Bad Smell)」。最近听和读了不少书,特别是写作系列,读了这些书才发现自己写作中的「坏味道(Bad Smell)」:自己写的东西都是自顾自己表达,没有用户思维

    比如,我很长一段时间都主观的认为:所有人都像我一样,看到一个好东西,会按图索骥学习相关知识。所以在我的博客中我给出大量交叉引用。这篇文章如果在以前,我就期望不知道 「重构」的读者读到这会主动点击链接学习的,我的统计数据发现大多人不会。

    还有我博客中引用了大量图书,遇到好书,我会尽快买来阅读的。我引用的书我自以为是的给出图书豆瓣网的链接,最近我鼓吹读书当读电子书,这些书有电子版的,我也会给出多看Kindle异步社区图灵版的电子书链接,另外鉴于我对英语学习重要性的认知,有英文版的,我也会给出英文版的链接,建议读英文版。所以我博客中图书的链接都是这样的:

    看似体贴,从读者的角度来说阅读体验并不好。积极主动的读者总会找来读的,不主动的读者,我认为提供的信息,对他们来说都是噪声。

    同样的问题是,遇到值我得学习的优秀的业界士、老师、同学,我提到的时候也是这样的:

    潜台词是:这么牛的人,他的博客要常看啊,微博什么的要关注啊!并且我都帮你找好了,你只要点一下就行了。同样的问题,积极主动的读者总会找来关注的,不主动的读者,我认为提供的信息,对他们来说都是噪声。

    这篇讲写作重构文章不会有这样的问题了。比如我拿吴军老师的事做例子讲事情,按我以前的风格会写成这样:

    吴军老师(微博,知乎专栏)XXXXXXXXXXXXXXXXXX

    重构后,我今天会写成这样:

    吴军老师XXXXXXXXXXXXXXXXXX

    重构博客写作的另外一个原因是由于我沟通技能的欠缺,引发一个极大的误会,收到一个修改博客的要求。我从这个需求出发,嗅到自己博客写作中的两个「坏味道」:

    • 重复代码 (Duplicated Code)
    • 过大的类 (Large Class)

    为了解决「重复代码 (Duplicated Code)」的写作问题,我重构出来一系列常用博客书单。这样经过我刻意练习沟通技巧,博客如果可能改回去时,我只要修改一个地方就可以了。

    这同时解决了另外一个引用更新的问题。如果选一本近三年对我影响最大的书,毫无疑问是《《构建之法》》了,以前我用Markdown会这么引用:

    [构建之法](http://book.douban.com/subject/26577755/)([电子版](http://www.duokan.com/book/101164))

    问题是《《构建之法》》几乎年年出新版,上面的链接是第二版的,我总是想推荐最新版,这怎么办?要么全改,要么全不改。现在不是问题了。你点《《构建之法》》总会指向最新版的链接。

    「过大的类 (Large Class)」的写作问题是有时候我要花一周,甚至一学期才写一篇博客,里面承载的内容太多,当然有的是长期积累,有的是考虑访问量的问题。
    这篇博客按我以前的习惯我会讲程序设计中「DRY(Don't Repeat Yourself)」原则、「高内聚,低耦合」,现在不在这讲了,单列博客写吧,这样就解决了程序设计中的「上帝类」的问题,我也尽量不写「上帝博客」,象这篇一个早上就可以写完了。

    通过程序设计中的「重构」我改进了自己的文风,我们同学毕业后很重要的技能是「公文写作」,选修过我课程的同学都会比较容易的看懂这篇文章,重申一下,我想让大家理解课上的知识学好了,工作中总会有用。


    欢迎关注“rocedu”微信公众号(手机上长按二维码)

    做中教,做中学,实践中共同进步!

    rocedu



    如果你觉得本文对你有帮助,请点一下左下角的“好文要顶”和“收藏该文


  • 相关阅读:
    [Effective C++]条款01:视C++为一个语言联邦
    DOTNET
    simulation
    掩码
    motorsimsrc
    Unprivileged User's Account
    LAN WAN
    calloc malloc realloc
    useradd
    change user ID and group ID
  • 原文地址:https://www.cnblogs.com/rocedu/p/8035877.html
Copyright © 2020-2023  润新知