【写作能力提升】系列文章:
一、前言
Hello,我是小木箱,今天主要分享的内容是: 5种搭建⽂章架构的⽅法!
大家普遍有一个共同的疑惑——如何写作? 其实是一个很难回答的问题。因为问题比较空泛,好比别人问你怎样赚钱一样难回答。
如果问我如何写好一篇文章?需要具备的核心的技能是什么?我可能会说: 搭建框架,框架是文章的根基,能不能搭好文章的框架决定了文章的质量。
想要写好一篇文章,最先要做的便是搭建文章框架。为什么这么说呢?因为如果写文章不搭建框架,那么写作会出现以下三种情况。
二、三种情况
2.1 第⼀种情况:写着写着思路断了
第一种情况: 写着写着思路断了 ,断了也不要紧,接不回来了才尴尬。刚刚明明想得很清楚,上了个厕所,就忘了接下来应该怎么写了。
2.2 第⼆种情况:写着写着就跑题了
第二种情况: 写着写着就跑题了,写得很嗨,写得很快。一顿操作猛如虎,行云流水 30000 字,写完一看,完了,跑题了,BBQ了。
2.3 第三种情况:逻辑处理不够严谨
第三种情况: 思路也没断,也没跑题,逻辑处理的不太严谨,大大影响了内容的质量。
三、搭建文章框架
这三种情况是因为没有搭建文章框架导致的。框架是写文章时的指路灯。这条指路灯是你的逻辑。它确保你的内容不会冲出跑道,第一读者读起来没有压力,第二写的时候会更容易,所以说搭建文章框架是写作最关键的一步,那怎么搭建文章框架呢?我总结了五种搭建文章框架的方法。
3.1 时间的顺序
第一种,按照时间的顺序布局,在自媒体写作中,第一种常见的逻辑顺序是: 按照时间的顺序来写时间自带的逻辑,从昨天到今天,从今天到明天,这是时间逻辑;年终总结,从年初到年中,从年中到年终,这是时间逻辑;从过去到现在,从现在到未来,这也是时间逻辑。
3.1.1 Activity的生命周期案例分析
Activity的生命周期从onCreate
、onStart
、onResume
、onPause
、onStop
和 onDestroy
是时间逻辑,按照时间的顺序布局每一个生命周期方法具体行为,是比较好写的一种方法。
3.1.2 推荐信材料申请案例分析
比如之前兼职帮别人写院校推荐信的时候,文章的脉络就是从对方的教育经历、职业经历和创业经历中去寻找经历难点和解决思路,然后按照时间顺序做串联。关键时间节点加上具体故事情节增强说服力,营造出真实且跌宕起伏的氛围。
推荐信通过时间顺序的写法抓住了老教授们的注意力。因为老教授们很关心下一步发生了啥?学生的学习能力是否很强?未来发展潜力是否很大?
按照时间的顺序搭建框架,有几点要注意: 首先是时间点必须要准确,按照时间的顺序写文章,时间是一个不能模棱两可的因素。
什么时间做了什么事? 必须有比较高的可信度。按照时间顺序写文章,一旦搞错时间被读者抓到了,那么就属于重大事故。其次选择的时间点必须有意义,也就是说每个时间点要有可以表达的内容。
3.1.3 《人物传记袖珍馆4:马云》案例分析
比如在 《人物传记袖珍馆4:马云》 中,就挑了几个重要的节点。第一是马云在北京黄页创业失败历程,第二是阿里进军C2C领域电商打败eBay创业成功历程,最后是阿里收购雅虎建立电商生态的经历。
之所以找重要节点,主要是因为时间节点有故事可写,这些故事会帮助你提升文章的效果。然后时间的顺序可以正着写,可以反着来写,可以由过去到现在来写,可以由现在到过去来写。
只要以时间为主线,正反可以根据实际情况来写。但大多数情况下由老及新的。以上就是按照时间的顺序来搭建文章框架,难度低且对新手比较友好。
3.2 空间的顺序/结构的顺序
第二种,搭建框架的方法是按照空间的顺序或者是按照结构的顺序。所谓空间的顺序就是由上到下,由前到后,由左到右,由内而外,由外而内等等。
3.2.1 JVM内存结构案例分析
比如: 你要写JVM内存结构的文章的时候,首先可以按照空间的顺序分别介绍JVM结构每个空间结构。然后再描述每个空间结构的具体特征,最后再梳理一下Java7到Java8特定空间结构版本的差异点以及为什么会有这样的差异点。
3.2.2 设计模式案例分析
比如: 你要写设计模式的文章的时候,设计模式根据功能可以分为创建型、结构型和行为型。
其次,介绍创建型特征、类型和本质。
然后,介绍结构型特征、类型和本质。
这样逻辑性会更强,讲得也会更清楚,如果内容过多,那么可以按章节拆开来写。
3.2.3 集合容器案例分析
再比如: 你要写集合容器的文章的时候,你可以按照数据结构的依次介绍集合的几个重要结构: List、Set、Map、Queue、并发包五大基本结构。
然后再挑选几个有代表性的集合逐个介绍简介、数据结构、具体使用、源码分析、不同版本差异性、扩容机制和常见的面试题等。
无论是掘金优秀知识博主去讲解集合框架的基础知识还是腾讯课堂优秀讲师录制集合框架的视频,咱基本能捕捉到空间顺序或结构顺序的影子。
3.3 ⾃上向下搭建⾦字塔结构
第三种,是自上向下的搭建金字塔结构方式。自上向下搭建金塔结构首先要做的就是确定塔尖,这个塔尖通常是你要表达的结论,这种写法也通常被称为: 结论先行,以上统下。塔尖确定后,以此向下层展开。从第二层开始,每一层的目标都是为了说清楚这一层的塔尖所代表的结论。
3.3.1 今日头条适配方案案例分析
我举个例子,在 JessYan 骚年你的屏幕适配方式该升级了!-今日头条适配方案 一文中,文章开头首先通过当下android开发屏幕适配框架面临的历史问题,其次通过外链进行简单对比,阐明其他历史屏幕适配框架的缺陷,然后建议开发选择适合自己项目的屏幕适配方案。最后引申出了今日头条屏幕适配方案。
那么为什么建议大家去选择今日头条屏幕适配方案?
作者首先讲解了一下今日头条适配方案的原理,然后利用申请类的写作场景在两种不同的终端验证今日头条屏幕适配方案可行性。
其次,分析今日头条屏幕适配方案的优势和缺陷,让开发以客观的视角看待今日头条屏幕适配方案。
然后,根据今日头条屏幕适配方案的缺陷,寻找合适的方案解决其框架痛点。
最后,为了让开发更加顺滑的使用今日头条屏幕适配方案,作者将今日头条适配方案在实际项目中遇到的每个坑都逐一复现和修复。
文章的末尾,作者对整个文章构建思路进行了归纳总结,并且回复了评论区开发人员的具象问题。文章行文看起来逻辑清晰、结构鲜明和内容得体。
这是典型的自上向下的搭建金字塔结构,首先告诉你写作主旨,然后逐字展开表达,最后搭建以结论为塔尖的金字塔结构,表达效果非常好。这种写作手法通常比较适合传达一些大家共有的认知。
3.3.2 FlutterWeb性能优化探索与实践案例分析
比如在美团技术团队的一篇文章FlutterWeb性能优化探索与实践中,开头首先,以生态帝国Google对FlutterWeb的支持和美团外卖商家端期待MTFlutterWeb存在的提效空间来描述FlutterWeb的性能背景。
然后,通过FlutterWeb编译流程产物,客观分析了美团FlutterWeb 在缺失静态资源的优化策略和复杂的架构设计、编译流程方向面临的挑战。
接着,美团研发人员通过SDK瘦身、编译优化和加载优化三个方向设计技术方案。
其次,到了实践落地环节了,在精简SDK维度上,第一步,便是分析包文件优化空间,第二步,便是对SDK进行裁剪,二次剔除Dead Code。第三步,便是建立长效机制,为FlutterWeb 依赖的环境定制 Docker 镜像,集成接入 CI/CD。
在JS分片维度上,主要是从懒加载、Runtime Manifest抽离和main.dart.js 切片进行优化。
在预加载维度上,先是在Flutter的编译、监听、运行三个阶段进行技术方案的设计,然后通过观察效果展示与数据对比,最后确定结果正向还是反向决定是否上线。
在图标字体精简维度上,因为美团大前端业务是双端对齐的,所以需要对FlutterWeb进行分平台打包,剔除各自平台的无用代码,解决包体积过大问题。
为了解决字体文件过大带来的包体积问题,美团技术人员通过全量扫描Icon,保留需要使用的Icon。
为了论述FlutterWeb性能优化探索与实践观点,作者对美团的FlutterWeb优化收益做了一下总结与展望,其收益是降低 Web 端适配成本和完善 FlutterWeb 容灾体系。未来期望可以持续推进FlutterWeb的性能优化。
如果你想要写的文章观点,让读者读起来觉的条理清晰和重点突出,可以采用类似先说结论然后说内容最后总结复盘的自上向下的构建方式。
3.4 自下向上搭建⾦字塔结构
第四种是自下向上的搭建框架结构,自下向上的搭建金字塔结构很明显的特征是先说过程再说结论。如果你写的观点需要很多内容来解释过程,强烈建议你使用这种方式构建文章架构。在我们开发领域里面常见的写作场景是踩坑指南。
3.4.1 Matrix增量编译构建失败案例分析
比如:在程序员徐公 耗时一周,我解决了微信 Matrix 增量编译的 Bug,已提PR 一文中就采用了上述的写作手法。
作者引入Matrix过程中,发现如果开启trace插件且在增编编译过程中,那么必然出现ClassNotFoundException。
第一步,查询gradle详细日志信息发现,NullPointerException和UnsupportedOperationException是增量编译出现的两个明显的error级别日志信息。进行防空判断后,没有解决此类问题,排除事故原因。
第二步,针对UnsupportedOperationException降低ASM版本,依然没有解决此类问题,排除ASM版本原因。
第三步,通过MethodTracer,判断是否是windows文件占用了fd ,该异常在Windows会出现,但mac不会出现,用try catch处理了此问题,不过没有解决ClassNotFoundException本质问题,算是意外之喜。
第四步,zip file is empty
预测生成jar产物的时候,文件路径存储map对象里,文件路径一致,导致的内容错误。
第五步,在MethodTracer的CollectJarInputTask任务执行阶段,只有输入的文件路径和目标的文件路径不一致,才去执行该任务。产物生成阶段,只有文件路径存储map对象里,文件路径不一致,才进行文件路径拷贝。
最后,验证后,异常问题解决了,Matrix增量编译Bug的本质原因就是上述第四、五步,然后表达了自己解决此类问题的方法论。这样结尾起到升华主题的作用,也是一套完整自下向上搭建金字塔结构的过程。
先设置悬念,把结论后置。这种写作手法通常适合道理简单但过程繁琐的文章。因为你一开始就讲结论,读者可能不会读完整篇文章。所以作者才一开始先说过程,最后才引出结论。
3.4.2 Java9特性编译失败案例分析
比如:在虾哥的 一个Java9特性导致的编译失败 | 疑难杂症 这篇文章。如果一开始就解释遇到Java9编译失败这个问题的原因,然后怎么解决的?读者肯定不愿意看,直接讲结论而非引导读者去思考,是最低级的写作手法。
那虾哥是怎么做的呢?
首先,虾哥梳理了一下问题发生背景,引导式的打开话匣子,针对dexBuilderRelease任务构建失败问题,了解到了问题的4个痛点。
然后,根据日志信息定位到了 module-info.class模块描述信息,结合该模块描述信息和官方文档。断定该文件是java9新增的模块。
接着,因为查询发现该类文件来源是其他业务组引入的jar文件,所以只能被迫使用Transform
来操作jar文件从而修改字节码了。
通过Transform
,把module-info
的输入路径打印出来,发现真实获取到依赖关系是Gson库,于是尝试降低Gson的版本从而间接降低JDK版本,终于问题解决了。
最后,作者把自己做好的Transform
进行了开源,大家可以关注一下,上手即用。是一套操作字节码的技术方案,因为这个方案,为java9引入Bug进行排查提供了好的思想指南。
这篇文章在掘金有超过 3k的阅读量,在android细分领域算是不差的成绩,作者以先说过程再说结果的自下向上金塔结构搭建方式进行写作。
3.5 ⽆招胜有招
第五种,搭建框架的方法,叫无招胜有招。什么意思呢?技术文章看得多了,会发现有一种文章,文章看起来也没有什么套路,看不出来什么逻辑,他感觉读起来很顺。
这种文章的框架我称之为无招胜有招。文章看起来制作粗糙,行句全部使用默认字体,没有小标题,没有一张图片。看似无招,实际上是作者极强的写作功底在做支撑。
比如某橙大佬的有些文章,没有排版,没有图,没有明确的结构,什么都敢写,写完也敢发,最后还录制视频。把读者当做知心朋友,把写作功力发挥得淋漓尽致。不过,对于写作新手还是不要尝试了。
想写这种风格的文章有一个大前提,就是你在技术方面有了长期的积累,创作表达欲望非常强烈,刚好写作平台给了你表达自己的机会,于是你的专业技能像压抑了很久的喷泉一样喷涌而出。如果你能在专业方面做到这种程度,那你大可以尝试这种无招胜有招的风格。
但是你不知道的是某橙大佬其实已经讲课五六年了,然后每年读二三十本书,专业方面他积累了大量关于framework源码和ndk相关的知识。即使不去写作,他的即兴表达能力也非常强,看过他的文章,感觉被称作全网最励志的android仔也不为过,成功绝不是偶然。
所以如果能力没有达到某橙大佬的高度,一定要沉下心好好打磨自己的这个技巧,90% 好文章都是按照今天列举的时间顺序、空间顺序或结构顺序、自下向上和自上向下这四种方法去写的。
四、总结
本文首先和大家分享了五种搭建文章框架的方法,五种方法每一种都有不同的特点和适用的文风。建议你在构思时多想想应该用哪种方式,写作效果才会更好。
没有明确规定说哪种方法适合哪种文章,需要多学习勤练习。看别人文章时,不能只顾着看热闹,要把自己当成内行,要把优秀文章当作文档一样精读。如果你打算学习写作,那么不能只以读者的视角读文章。需要思考好文章用了哪种技巧和结构,先通过看标题和目录预测文章内容,然后进行对比复盘。
如果你能长期坚持刻意练习,那么写作能力会有质的飞跃。希望今天我免费赠送的搭建金字塔结构的方法论可以帮助你。文字创作中,如果文章框架一旦搭建了,那么文章已经成功了一半。记住要想写好文章,先把结构想清楚!
五、关于我
我是小木箱,擅长使用结构化思维、费曼学习法、PDCA、5W2H分析法、MECE原则、SMART模型产品思维解决学习和工作痛点,欢迎关注我的公众号 小木箱成长营,感谢相遇,见证彼此成长。