我们在整理阶段解决了一些意外的问题。但是这些问题仅仅只是被解决而已,我们并没有去思考过这些问题是为什么产生的?以及在以后我们如何去避免这些问题的产生?

方法所在类的命名问题,最后我们通过方法分类解决了,并且学习了类的第一作用:方法的集合。

解决之后导致了大量的弃用代码,为了标记弃用代码,我们又简单学习了 System.Obselete 这个 API。

这样的意外问题真是好啊,可以让我们一下学习很多东西。不过如果在工作中或者做项目中全是意外问题,而身边又没人知道这么解决,那么每天肯定都会过得非常辛苦。

那么究竟是什么导致我们类的命名问题呢?

笔者的答案就是知识面少、知识量少、加上经验少。不过这个答案,只是一个设定而已。假定读者和笔者都不知道类的第一作用,并且是刚入门不久的 Unity 开发者,刚入门不久之后开发者肯定知识面少经验也少这是很正常的。所以按照这个设定走剧本的话,那么遇到这么多意外的问题就是很自然的事情。

知识面少

知识面少,很容易理解,就是如果只会写 MenuItem,那么可以自己写出来示例一到示例七的代码。如果会好好运用访问权限,并且会设计方法,那么可以自己写出来示例八到示例十三的代码。如果知道类可以是方法的集合,那么就不会遇到这个方法所在类命名的问题了。

但是这个类可以是方法的集合这个观点,是笔者的观点,是直接在文章告诉大家的,是笔者产生的知识。虽然我们都知道类可以封装、继承、多态,并且还有静态类还能有访问权限甚至类可以进行拆分实现(partial),而且还可以用静态 this 扩展。但是对于方法所在类命名这个问题,我们只要知道类可以是方法的集合这个知识就可以解决了。当然在 C# 中结构体 (struct) 也可以是方法的集合。

知识量少

到目前为止呢,我们积累了 13 个示例,而又通过这 13 个示例学习了很多知识,这些就是我们的知识量总和,很少了。

经验少

经验少,就是解决过的问题少,不过这是很正常的。按照设定,我们是第一次搭建库和框架,在这方面经验完全是零,所以说经验少也没有错。

不过没关系,这些呢都有应对策略的 :

  1. 知识面少,主要是遇到的问题类型少,在本专栏的后续,会把笔者在搭建框架的过程中解决的所有能扩展知识面的问题都一个不落的进行分析解决。
  2. 知识量少,我们搭建知识库的目的,就是为了多增加知识量。
  3. 经验少,解决策略同 1.知识面少。

我们只要多解决一个类的命名问题,我们的知识面就广了一点,知识量就多了一点,经验就多了一点。

不过到此,还没有回答,如何避免”方法所在类命名“的这种问题。

要如何避免,这种问题遇到一次下次就知道如何解决了。那就多遇到这样的问题,这样在进行编码的时候就会有更多的设计工具来避免这样的问题。

当然也可以不用每次都遇到问题才去接触新的东西,可以先知道个大概的方向,根据这个方向去学习新的东西,在学习新的东西的时候去思考下能用在库的什么地方,用了是不是会更好?这样思考之后,在某一天遇到适用 的场景的时候,自然就会想到学到的东西了。

而学到的东西要记录下来,我们的知识库,有一个功能就是把新的知识点记录下来。

类似的问题,其实还有“产生了很多弃用的代码”等,这些是问题诞生的背后原因是和这个问题是一样的。

产生了很多弃用的代码,本质上是徒增了很多工作量。但是任何对代码的整理都离不开工作量的增加的,不过笔者认为这点工作量还是值得的。

小结

通过问题分析,我们得到了一种全新的学习思路。以往我们是为了解决问题才去接触新的知识,新的 API,并把这个新的知识和 API 收录到我们示例里。而现在的思路呢,则是先学习新的东西,学习之后去思考,新的东西,能否用在我们的库中?用了是不是会让库变得更好?

而这是另一个学习思路。前者是被动接触新东西,是遇到了问题才去学习,后者是主动学习,学习之后再思考他的适用场景。两种各有优劣,前者的学习效率会比较高,就是会在最短的时间内学习最需要学的内容,缺点是一般会学得比较浅。后者是主动学习,学习之后知识不一定能够解决问题,但是呢,如果思考知识的适用场景,会让我们更深刻地理解知识。两者缺一不可。

以上这两点,就是今天这篇文章的核心。

  1. 根据问题去学习,并收集。
  2. 主动学习,并思考适用场景。

今天的内容就这些,我们在下篇接着解决问题。

转载请注明地址:凉鞋的笔记:liangxiegame.com

更多内容

Unity 游戏框架搭建 2019 (二十九) 方法所在类命名问题诞生的原因的更多相关文章

  1. Unity 游戏框架搭建 2019 (二十五) 类的第一个作用 与 Obselete 属性

    在上一篇我们整理到了第七个示例,我们今天再接着往下整理.我们来看第八个示例: #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; ...

  2. Unity 游戏框架搭建 2019 (二十六) 第一轮整理完结

    昨天呢我们把第八个示例整理完了.整理之后学习了类的第一作用:方法的集合,还有 Obselete 这个 API.并且在进行整理的时候贯彻了我们新的约定和规则:先确保功能有效,再去做变更和删除. 今天我们 ...

  3. Unity 游戏框架搭建 2019 (三十九、四十一) 第四章 简介&方法的结构重复问题&泛型:结构复用利器

    第四章 简介 方法的结构重复问题 我们在上一篇正式整理完毕,从这一篇开始,我们要再次进入学习收集示例阶段了. 那么我们学什么呢?当然是学习设计工具,也就是在上篇中提到的关键知识点.这些关键知识点,大部 ...

  4. Unity 游戏框架搭建 2019 (二十七、二十八)弃用的代码警告解决&弃用的代码删除

    在前两篇,我们把所有的示例重头到尾整理了一遍. 当前的状态如下: 要做的事情: (完成) 备份:导出文件,并取一个合理的名字. 遗留问题: (完成) 第八个示例与之前的示例代码重复,功能重复. (完成 ...

  5. # Unity 游戏框架搭建 2019 (三十四、三十五) 9 ~ 10 示例整理

    第九个示例 目前代码如下: using UnityEngine; #if UNITY_EDITOR using UnityEditor; #endif namespace QFramework { p ...

  6. Unity 游戏框架搭建 2019 (二十三) 备份与版本号&危险的操作

    先列出上一篇的总结: 要做的事情: 备份:导出文件,并取一个合理的名字. 遗留问题: 第八个示例与之前的示例代码重复,功能重复. 约定和规则: 每个示例在 QFramework 目录下创建一个文件夹, ...

  7. Unity 游戏框架搭建 2019 (二十七) 弃用的代码警告解决

    在前两篇,我们把所有的示例重头到尾整理了一遍. 当前的状态如下: 要做的事情: (完成) 备份:导出文件,并取一个合理的名字. 遗留问题: (完成) 第八个示例与之前的示例代码重复,功能重复. (完成 ...

  8. Unity 游戏框架搭建 2019 (四十四、四十五) 关于知识库的小结&独立的方法和独立的类

    在上一篇,我们完成了一个定时功能,并且接触了 Action 和委托.lambda 表达式这些概念. 到目前为止,我们的库作为知识收录这个功能来说,已经非常好用了,由于使用了 partial 关键字,所 ...

  9. Unity 游戏框架搭建 2019 (二十一、二十二) 第三章简介&整理前的准备

    整理前的准备 到目前为止,我们积攒了很多示例了,并且每个示例也都贯彻了最的约定和规则. 在上一篇的小结也说了一个比较新的东西:编程体验优化. 在之前我们还积攒了一个问题:代码重复问题. 我们可是忍住整 ...

随机推荐

  1. leetcode 945. 使数组唯一的最小增量

    题目 给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1. 返回使 A 中的每个值都是唯一的最少操作次数. 示例 1: 输入:[1,2,2] 输出:1 解释:经过一次 mov ...

  2. 什么是CPU load

    最近经常收到告警,CPU load大于阈值告警.查看系统的CPU是12核,告警阈值设置的是8.对于CPU load一直有个模糊的概念,具体是什么意思还真搞不明白,趁这个机会好好搞搞究竟. 1.查看CP ...

  3. PyTorch ImageNet 基于预训练六大常用图片分类模型的实战

    微调 Torchvision 模型 在本教程中,我们将深入探讨如何对 torchvision 模型进行微调和特征提取,所有这些模型都已经预先在1000类的Imagenet数据集上训练完成.本教程将深入 ...

  4. 树莓派3B+之Raspbian系统的安装

    概述 因为之前一段时间在研究物联网的原因,所以对树莓派这个东西早就有所耳闻.在我的印象里,树莓派几乎无所不能,它可以用来学编程. 搞物联网. 做服务器,甚至还能用它来进行渗透测试.终于,没禁的住诱惑, ...

  5. qq,新浪分享

    var _title,_source,_sourceUrl,_pic,_showcount,_desc,_summary,_site; // 新浪微博分享$('.xlwb-share').on('cl ...

  6. jsonp跨域的原理及实现

    1,什么是跨域? 跨域跨域,跨过域名,笼统来说就是一个域名区请求另外一个域名的数据,但实际上,不同端口.不同域名.不同协议上请求数据都会出现跨域问题.浏览器出于安全考虑会报出异常,拒绝访问. 2,js ...

  7. 基于STM32F030F4P9和STM32 CUBEMX 输出PWM波形

    STM32F030F4P9定时器功能比较丰富,在此记录项目中使用其自动输出PWM波形(频率:50HZ).CubeMX配置定时器如下图说明. 在此定时器基础时钟为48MHZ,配置中不做分频处理,预分频系 ...

  8. k8s删除namespace一直处于terminating状态

    k8s删除namespace一直处于terminating状态 当遇到删除ns是一直处于terminating情况可以用调k8s api进行删除. 1.创建api proxy. [root@node1 ...

  9. 为何关键字static在面试中频频被问?

    关键字static的神奇妙用在今天的学习中,我了解到关键字static的作用,下面我来给大家分享一下.①static 修饰局部变量只改变了变量的生命周期,让静态局部变量出了作用域依然存在,到程序结束生 ...

  10. 1019 General Palindromic Number (20 分)

    A number that will be the same when it is written forwards or backwards is known as a Palindromic Nu ...