mini-program

✍️ Tangxt ⏳ 2020-12-17 🏷️ 开篇

开篇

★01 开篇词:为什么你觉得学编程好难?

理想必须要人们去实现它,它不但需要决心和勇敢而且需要知识。——吴玉章

1)我真得没有思路

一个有趣的现象:

在与同事共事的过程中,A 同事一点就透,甚至无师自通,而 B 同事则在代码评审被打回修改多次后,却总还是提交让人难以理解和 Bug 遍野的代码。…..

可以看到 B 同事编写代码的效率和质量是有问题的……

那如何解决之呢?让大佬:

然而并没有什么卵用……B 同事写出来的代码依旧辣鸡!

直到有一天,有一妹子说到「他们也想写出优雅的代码,可在编程的时候就是咩有清晰的思路

他们一般写代码的姿势是「搜索编程大法」,也就是「CRM」大法 -> 找到别人解决这个问题的代码,复制之,运行之,改之,得到正确的运行结果,这段代码就 OK 了!

2)如何解决没有思路的问题?

请使用编程思路梳理方法 “分类拆解法”,此方法效果不错,尤其对于前端新人来说!

3)该专栏最有价值的两个点

  1. 分类拆解法
  2. 实战商业项目「会员制社交电商小程序」,包括:
    • 如何一步一步完成整个项目的设计、开发、上线;
    • 如何使用这个实战项目作为你的小程序和 GitHub 作品,增加你的面试竞争力;
    • 当然还包括可以直接用于商业用途的完整源代码

4)小结

秘方

如果把「没有思路」类比成一种病的话,那么这可以是一种慢性疾病,它一直影响着你,但是「分类拆解法」可以慢慢调和你的病,直到康复……而不是当你病发时,你直接吃一颗治标不治本的药,表面上看,咩有困扰了,不痛了,但第二天,还是会触发……

就像是慢性胃炎那样……

总之,整个专栏内容都是以 “分类拆解法” 为基础方法论的,整个实战项目内容也是完全按照分类拆解法来一步一步实现

你往树上摘果子,那么脚下的凳子就是你的底盘,底盘越高越稳,你就越能摘到又大又好吃的果子……而不是猴急,先把能摘到的吃了再说……


一些言论:

★02 分类拆解法简介: 助你马上起飞的编程方法论

立志是事业的大门,工作是登堂入室的旅程。——巴斯德

实验对象(微信聊天页面):

页面

1)界面分析

概念:

界面类型

以前的认识:看到一个页面不好看,就说界面不好看,其实准确来说应该是页面不好看才对。通常我们说界面不好看,这指的其实是软件界面不好看。我第一次认识到可以把一小部分内容也看作是一个界面……一点疑惑:说「输入界面」还是说「表单界面」好呢?……

界面不单只是一个元素的界面,也可以是多个元素构成的界面,反正多个元素是同一类型的我们都可以整体说这是一个界面……那个顶部区域,我们整体来看似乎可以说是顶部区域界面,但这并不好,因为这划分的不够细呀……毕竟,这 3 个元素有着不一样的功能……

界面分析:

界面分析

分析完后,你会发现这样一个问题:

界面其实都应该是静态的才对,因为那些所谓的「交互界面」是由于我们点击了它或者其它姿势才促使了显示内容的变化啊!

而这就引出了我们的下一个话题了:「事件分析

我们在屏幕上对着页面指指点点的这种行为,或者说人的动作,定义为「事件」,说白了,就是你对这个页面指点江山,搞事情呀!而页面中的界面部分会因此发生某种反应(跳到某个界面、元素内容改变等)来响应你的行为……

2)事件分析

1、昵称区域

昵称区域事件分析

2、聊天内容显示区域

我们观察到的现象:

在聊天内容显示区域,我们长按一条消息,会出现复制、转发、收藏、删除等操作按钮,并且当我们此时点击空白区域,刚出现的这些操作按钮会消失掉;我们上下滑动屏幕,会显示更早或最新的聊天消息;我们点击好友头像,会打开好友的个人信息页面。

除此之外,当好友向我们发送消息,系统(系统是指人编写的计算机程序,比如 App 或者小程序。为什么要特指人?你见过动物写代码的吗,嘿嘿)会自动将好友刚发送的消息显示在聊天内容显示区域。

从中我们可以看到:

“事件” 分为两类,人的动作和系统自动执行的动作

事件的分类

因此,聊天内容显示区域的事件包括:

聊天内容显示区域分析

3、聊天内容输入区域

我们观察到的现象:

底部的聊天内容输入区域,我们点击语音输入图标,输入框会切换为 “按住 说话” 的语音输入状态,并且图标会变为键盘图标。当我们点击键盘图标,输入框会切换为文字输入框,并且图标会再次变回语音输入图标。

我们点击表情输入图标,会弹出选择表情的界面,并且图标会变为键盘图标。当我们点击键盘图标,选择表情界面会关闭,并且图标会再次变回表情输入图标。

我们点击文本输入框,会弹出文字输入键盘。

我们点击更多输入方式图标,会弹出照片、拍摄、视频通话等操作按钮,再次点击该图标,则会隐藏这些操作按钮。

所以,聊天内容输入区域包括以下事件:

聊天内容输入区域分析

以上只列举了微信聊天页面的一部分内容,还有其它一些动作,如点击语音消息、发送语音等就不一一列举了,同学们可以自己总结一下还有哪些 “界面” 和 “事件”。

动作,即人或系统对页面搞的动作,如人对页面有触摸动作,滑动动作等,而系统对页面有定时动作等……

输入框有内容,会把「更多输入方式图标」搞成是「发送」按钮……疑问 -> 这还是静态界面吗? -> 或许我们考量这个界面的标准是其内容是否发生了变化,而不是把一个元素搞成是另一个元素……

3)分析结果

总结一下微信聊天页面分析结果:

微信聊天页面分析结果

页面包含子部件,子部件包含三大区域?为啥不应该是一个子部件等于一大区域呢? -> 或许作者的本意是这样的,子部件上,子部件中,子部件下这样……

通过上述分析过程(上图从左到右的过程),我们就可以相对轻松的把一个很难靠脑袋想清楚的复杂功能(一个面),分类、拆解为多个我们可以清晰思考的多个小功能点(多个点)

分为三大类,拆解成各种小界面?还是把显示内容分为静态界面、交互界面、输入界面这三大类,然后再去拆解其中的事件?

如此一来,我们在编程的时候就可以一次聚焦实现一个小功能点。在一个个小功能点实现后,再把它们像搭积木一样组合起来(把一个个点按图从右到左进行拼装),就可以相对简单地完成整个复杂功能的代码编写。

并且,一次聚焦思考一个点该怎么实现,我们更容易想得更全面。同样的编程水平,以这样的思路编写出来的代码,BUG 会更少,代码质量会更高

4)分类拆解法简介

1、核心思想

“分类拆解法” 的核心思想就是将一个页面进行分类、拆解,理清有多少个分类,以及分类之间的相互关系,然后编写代码逐一实现它们,最后把所有分类组合起来就实现了这个页面完整的功能。

2、步骤

“分类拆解法” 简单来说分为三步:

3、分类

分类工作包括:

“分类拆解法” 的 “分类” 包括三种:我们作为用户能感知到的 “界面”、 “事件”,以及我们作为用户看不到而计算机能看到 “数据” 。今天初步讲解了我们能直观感受到的 “界面” 和 “事件”。

“分类拆解法” 的 “分类”

看不到的第三种类型 “数据”,是给计算机看的内容(人看到的是界面,是程序员编写的代码 “翻译” 后的数据),由于它较为抽象,我将在后续的内容中结合实际编程实例来具体讲解。

类似于 Vue 里边的 data 呗!

4、拆解

拆解工作包括:

理清那些需要绑定事件监听器的元素!以及明确知道自己之所以这样做的目的!

叫「拆解」,我觉得不怎么好 -> 这一步理解成「伪代码」倒是挺 ok 的!

5、如何学习

如何 “分类”,如何厘清三种类型之间的 “分类关系”,如何进行拆解的具体 “拆解步骤”,以及如何根据分类、拆解后的细化结果一步一步完成程序编写(即 “编程步骤”),是贯穿本专栏的主线每一个编程实例均使用 “分类拆解法” 的方法与步骤。

希望通过不断的重复、强化、实操,在学习完本专栏后,各位同学不仅能具备小程序开发基础能力,更能培养出系统化的编程思维与编程方法。

6、如何使用

在实际商业开发中,如果是做项目开发,一般会先由项目经理或需求分析师编写需求规格说明书;如果是做产品开发,一般会先由产品经理编写产品设计说明书。

PS:如果你是基于兴趣想自己写一个程序,或者有自己的创业项目构思,建议你先整理出需求、画出原型,并编写你自己的产品设计说明书,之后再进入开发环节。如果你不知道什么是需求、原型、产品设计,可以去 人人都是产品经理 这个网站学习一些基础知识。

我们作为开发人员,拿到上述文档后,可以使用 “分类拆解法” 的思路,梳理清楚我们要编程实现的内容包括哪些 “界面”、“事件” 和 “数据”,每一个 “界面” 是什么类型,每一个 “界面” 需要显示哪些 “数据”;每一个动作的 “事件” 响应结果是什么,每一个 “事件” 应该改变哪些 “数据”。

在厘清 “界面”、“事件” 和 “数据” 后,我们按照 “分类拆解法” 的编程步骤逐一击破每个显示元素,每个子部件,每个页面功能,就可以轻松完成整个程序的编写。

厘清指的是梳理清楚「界面、事件、数据」这三者的关系……

7、全貌

附上 “分类拆解法” 的完整思维导图以及相关概念,一览它的全貌:

分类拆解法

“分类拆解法” 相关概念:

5)下节预告

聊一聊本专栏的正确打开方式 - 专栏使用方法,专栏内容概览以及有哪些 “臣妾做不到” 的事 - 本专栏不能给你什么

如何阅读该专栏+此专栏大概会讲哪些内容+不会讲的内容

6)实践环节

实践是通往大神之路的唯一捷径。

本节实操内容:

分类拆解法就是前端 MVC 的详细版……

7)Q&A

💡:醍醐灌顶一般,用这个思路开发前端界面,简直提高了不止一个 level。但也有一个疑惑。我是一个后端程序员。可以理解运用这套方法在后端开发中吗。

后端开发当然也可以分类拆解,这个专栏主要是讲解小程序偏前端一点,完整的后端分类拆解法有机会我再开新专栏详细讲解?

后端的思路就是照着 mvc 对应职责来进行的呢?

后端也可以这么拆分:业务模型(数据),业务操作(事件相应的业务动作),接口(对前端来说就是界面),后端还有些公共基础设施多个地方会用到(日志,缓存,登录,权限等)

➹:转载:架构整洁之道,看这一篇就够了! - AI 柠檬

💡:哲学中的还原论?

分解法在多个领域(不止编程)都有他的身影,其实就是体现最开始哲学中的还原率,现在物理学的还是使用这思路。 我在练习做一个风控评分卡模型,也是这样一个个环节来分解,但显然最难的是数据部分而不是功能部分,每个函数的返回值要要怎样同一,对数据的更改是尽量在主线程里面修改还是在函数内部,我觉得最难的是数据连接的部分的涉及,像要将不同功能写成可以处理多种情况但是功能单一的类,也要考虑新数据如何重复使用特征工程的代码。慢慢的已经超过 3 个星期的业余时间,进度才 60-65%左右。 虽然我有分解,但距离老师的分解水平还是有很大距离。感到艰辛,经验也不足。

不这么做的话,我们还能怎么产生认识呢?……当任何一个外在的现象被你的感觉所捕捉到,到了你的大脑中产生了一个“想法”的时候,你敢说这个时候大脑做的工作不是一种还原?……

一般而言,现代的还原论说的是“试图找出更基本,更简单的对象和规律,凭此解释现象”,至于究竟有没有这个“最”字,内格尔(就是那个第一个规范化表达还原论的人)说“有”,但是其实也有不少人说“没有”,但无论如何,我们都只能这么不断找下去……

➹:对整体论和还原论的一点看法 - 知乎

➹:为何总有人有「还原论」的倾向,即「试图找出最基本、最简单的对象和规律,凭此解释世界」? - 知乎

💡:请问分类拆解法能适用于其他编程领域吗

专栏里讲的分类拆解法适用于各类 H5 前端和 App 前端编程,不限于小程序。

只要你用了「HTML+CSS+JS」去写页面,那就适用咯!

💡:昨天因为做项目时候思路不清晰,就让领导帮忙拆解了一下,还没有老师拆的这么细致,已经解决了我很多困惑,拆解是一项非常重要的能力,老师给的这个拆解思路和模板太厉害了。

如此聪明的你,多实践拆解,大神头衔指日可待?

★03 专栏使用指南:他们都说一开始就要敲重点

耐心是一切聪明才智的基础。——柏拉图

1)老师的编程水平

虽然我有过近 10 年的编程经验,但最近 5 年的工作内容都是技术管理,偏向宏观、整体的技术架构与技术团队管理方面,很多的具体编程技能都已经还给了 IDE 。

所以请你放宽心,我只是比你多吃了几年饭罢了,编程水平与你并没有本质区别。我能使用 “分类拆解法” 快速找回失落的开发技能,你也能使用 “分类拆解法” 在编程基础不是很过硬、编程经验不是很丰富的情况下,顺利编写出一个功能完整的商用小程序。

2)特别提示

如果你是从未接触过任何编程语言、从未写过任何代码,甚至连 Excel 中如何对一列数字求和都不知道的纯新小白一枚,我建议你在理解了“分类拆解法”后,使用这个方法论的思路,先花一些时间学习一下最基本的前端开发基础知识,比如 HTML、CSS、JS ,然后再来啃我的专栏。

步子迈大了,会扯到蛋的,你懂的。

打怪、升级,才能杀 BOSS 、掉宝,这个过程是没有捷径的(当然,如果你是 RMB 玩家当我没说,不过你要是 RMB 玩家的话,你还有必要来看我码的字么,对吧)。

纯新小白请先带着 “分类拆解法” 的思想,刷光以下 LV1 至 LV4 的地 [ ke ] 图 [ cheng ]

肃清其中的小怪,然后再来本地 [ zhuan ] 图 [ lan ] 继续升级打 BOSS 。

3)专栏使用方法

1、 练习“分类拆解法”

2、 解决碰到的问题

3、学习编程风格

4、善用项目源代码

4)专栏内容概览

1、主线

2、内容概述

3、适合人群

4、课前技术储备

5)本专栏不能给你什么

你解决过的问题数量 = 你的编程水平高低,这是编程能力提升最快的捷径,没有之一。

所以,努力通过不断“遇到问题,学习思考,最终解决问题”来提升自己的编程能力吧,骚年。

希望早日向你膜拜,未来的大神:)

6)Q&A

💡:好喜欢老师搞笑的风格

哎呀,要是写成教科书了,估计大家看两节就丢到茅坑里了,那多对不起大家花的钱呀

💡:把前端玩明白了再说吧,全栈很多时候等于前端和后台都是东一榔头西一棒槌

我的个人愚见:前端、后端、全栈什么的只是点的技能树不同,并没有高下之分。任何一个领域深入钻研到顶级水平,都是大神。

鄙视链什么的,其实只是自欺欺人罢了……

💡:你解决过的问题数量 = 你的编程水平高低,这是编程能力提升最快的捷径,没有之一。

再来一句:你挖过的坑、填过的坑有多少不重要,被挖坑埋了又诈尸复活的次数 = 你的收入水平

相同的错误重复出现,意味着你的收入水平无法更进一步……

★总结

★Q&A

1)厘清 vs 理清?

厘清是汉字词语,拼音 lí qīng,厘是极小的数量,清是清楚,两者合起来表示从最细小的方面都搞得条条有序清清楚楚了。因此可以引申出整理清楚的意思。“厘”作动词用,有“整理、治理”的意思,该词带有文言文色彩,如“厘清、厘正”。

在现代汉语中,“厘”字常用于“厘米”、“毫厘”等组合中。但是,“厘”还有“整理;治理”的意思,这一语义主要用于“厘定”、“厘正”等书面语中,在别的场合使用比较少,所以您可能对它比较陌生。

“厘清事实真相”中的“厘清”就是“澄清;查清楚”的意思。这里如果改为“理清”则是不准确的。“理清”一般用于有条理的事物,比如“理清头绪”、“理清思路”等。

“厘清”的支配对象往往是“关系” “原则” “任务 ”等。在“厘清”之前,人们或许对某个问题或现象没有分辨得很清楚,“厘清”之后,往往就划分了某种界限,使得某问题或现象的性质等得以分明地呈现出来。

由于理清这个词比厘清用得广泛得多,而厘清对不少人来说相对陌生,让他们以为厘清中的厘是错别字,其实不然,作为动宾结构的词组,理清后面一般是头绪、思想等,而“厘清”的支配对象常常是“关系” “原则” “任务 ”等,它有“澄清;查清楚”的意思。

➹:厘清是什么意思 与理清有什么区别_百度知道

➹:厘清_百度百科