Unity 游戏框架搭建 2019 (二十九) 方法所在类命名问题诞生的原因
我们在整理阶段解决了一些意外的问题。但是这些问题仅仅只是被解决而已,我们并没有去思考过这些问题是为什么产生的?以及在以后我们如何去避免这些问题的产生?
方法所在类的命名问题,最后我们通过方法分类解决了,并且学习了类的第一作用:方法的集合。
解决之后导致了大量的弃用代码,为了标记弃用代码,我们又简单学习了 System.Obselete 这个 API。
这样的意外问题真是好啊,可以让我们一下学习很多东西。不过如果在工作中或者做项目中全是意外问题,而身边又没人知道这么解决,那么每天肯定都会过得非常辛苦。
那么究竟是什么导致我们类的命名问题呢?
笔者的答案就是知识面少、知识量少、加上经验少。不过这个答案,只是一个设定而已。假定读者和笔者都不知道类的第一作用,并且是刚入门不久的 Unity 开发者,刚入门不久之后开发者肯定知识面少经验也少这是很正常的。所以按照这个设定走剧本的话,那么遇到这么多意外的问题就是很自然的事情。
知识面少
知识面少,很容易理解,就是如果只会写 MenuItem,那么可以自己写出来示例一到示例七的代码。如果会好好运用访问权限,并且会设计方法,那么可以自己写出来示例八到示例十三的代码。如果知道类可以是方法的集合,那么就不会遇到这个方法所在类命名的问题了。
但是这个类可以是方法的集合这个观点,是笔者的观点,是直接在文章告诉大家的,是笔者产生的知识。虽然我们都知道类可以封装、继承、多态,并且还有静态类还能有访问权限甚至类可以进行拆分实现(partial),而且还可以用静态 this 扩展。但是对于方法所在类命名这个问题,我们只要知道类可以是方法的集合这个知识就可以解决了。当然在 C# 中结构体 (struct) 也可以是方法的集合。
知识量少
到目前为止呢,我们积累了 13 个示例,而又通过这 13 个示例学习了很多知识,这些就是我们的知识量总和,很少了。
经验少
经验少,就是解决过的问题少,不过这是很正常的。按照设定,我们是第一次搭建库和框架,在这方面经验完全是零,所以说经验少也没有错。
不过没关系,这些呢都有应对策略的 :
- 知识面少,主要是遇到的问题类型少,在本专栏的后续,会把笔者在搭建框架的过程中解决的所有能扩展知识面的问题都一个不落的进行分析解决。
- 知识量少,我们搭建知识库的目的,就是为了多增加知识量。
- 经验少,解决策略同 1.知识面少。
我们只要多解决一个类的命名问题,我们的知识面就广了一点,知识量就多了一点,经验就多了一点。
不过到此,还没有回答,如何避免”方法所在类命名“的这种问题。
要如何避免,这种问题遇到一次下次就知道如何解决了。那就多遇到这样的问题,这样在进行编码的时候就会有更多的设计工具来避免这样的问题。
当然也可以不用每次都遇到问题才去接触新的东西,可以先知道个大概的方向,根据这个方向去学习新的东西,在学习新的东西的时候去思考下能用在库的什么地方,用了是不是会更好?这样思考之后,在某一天遇到适用 的场景的时候,自然就会想到学到的东西了。
而学到的东西要记录下来,我们的知识库,有一个功能就是把新的知识点记录下来。
类似的问题,其实还有“产生了很多弃用的代码”等,这些是问题诞生的背后原因是和这个问题是一样的。
产生了很多弃用的代码,本质上是徒增了很多工作量。但是任何对代码的整理都离不开工作量的增加的,不过笔者认为这点工作量还是值得的。
小结
通过问题分析,我们得到了一种全新的学习思路。以往我们是为了解决问题才去接触新的知识,新的 API,并把这个新的知识和 API 收录到我们示例里。而现在的思路呢,则是先学习新的东西,学习之后去思考,新的东西,能否用在我们的库中?用了是不是会让库变得更好?
而这是另一个学习思路。前者是被动接触新东西,是遇到了问题才去学习,后者是主动学习,学习之后再思考他的适用场景。两种各有优劣,前者的学习效率会比较高,就是会在最短的时间内学习最需要学的内容,缺点是一般会学得比较浅。后者是主动学习,学习之后知识不一定能够解决问题,但是呢,如果思考知识的适用场景,会让我们更深刻地理解知识。两者缺一不可。
以上这两点,就是今天这篇文章的核心。
- 根据问题去学习,并收集。
- 主动学习,并思考适用场景。
今天的内容就这些,我们在下篇接着解决问题。
转载请注明地址:凉鞋的笔记:liangxiegame.com
更多内容
QFramework 地址:https://github.com/liangxiegame/QFramework
QQ 交流群:623597263
Unity 进阶小班:
- 主要训练内容:
- 框架搭建训练(第一年)
- 跟着案例学 Shader(第一年)
- 副业的孵化(第二年、第三年)
- 权益、授课形式等具体详情请查看《小班产品手册》:https://liangxiegame.com/master/intro
- 主要训练内容:
关注公众号:liangxiegame 获取第一时间更新通知及更多的免费内容。

Unity 游戏框架搭建 2019 (二十九) 方法所在类命名问题诞生的原因的更多相关文章
- Unity 游戏框架搭建 2019 (二十五) 类的第一个作用 与 Obselete 属性
在上一篇我们整理到了第七个示例,我们今天再接着往下整理.我们来看第八个示例: #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; ...
- Unity 游戏框架搭建 2019 (二十六) 第一轮整理完结
昨天呢我们把第八个示例整理完了.整理之后学习了类的第一作用:方法的集合,还有 Obselete 这个 API.并且在进行整理的时候贯彻了我们新的约定和规则:先确保功能有效,再去做变更和删除. 今天我们 ...
- Unity 游戏框架搭建 2019 (三十九、四十一) 第四章 简介&方法的结构重复问题&泛型:结构复用利器
第四章 简介 方法的结构重复问题 我们在上一篇正式整理完毕,从这一篇开始,我们要再次进入学习收集示例阶段了. 那么我们学什么呢?当然是学习设计工具,也就是在上篇中提到的关键知识点.这些关键知识点,大部 ...
- Unity 游戏框架搭建 2019 (二十七、二十八)弃用的代码警告解决&弃用的代码删除
在前两篇,我们把所有的示例重头到尾整理了一遍. 当前的状态如下: 要做的事情: (完成) 备份:导出文件,并取一个合理的名字. 遗留问题: (完成) 第八个示例与之前的示例代码重复,功能重复. (完成 ...
- # Unity 游戏框架搭建 2019 (三十四、三十五) 9 ~ 10 示例整理
第九个示例 目前代码如下: using UnityEngine; #if UNITY_EDITOR using UnityEditor; #endif namespace QFramework { p ...
- Unity 游戏框架搭建 2019 (二十三) 备份与版本号&危险的操作
先列出上一篇的总结: 要做的事情: 备份:导出文件,并取一个合理的名字. 遗留问题: 第八个示例与之前的示例代码重复,功能重复. 约定和规则: 每个示例在 QFramework 目录下创建一个文件夹, ...
- Unity 游戏框架搭建 2019 (二十七) 弃用的代码警告解决
在前两篇,我们把所有的示例重头到尾整理了一遍. 当前的状态如下: 要做的事情: (完成) 备份:导出文件,并取一个合理的名字. 遗留问题: (完成) 第八个示例与之前的示例代码重复,功能重复. (完成 ...
- Unity 游戏框架搭建 2019 (四十四、四十五) 关于知识库的小结&独立的方法和独立的类
在上一篇,我们完成了一个定时功能,并且接触了 Action 和委托.lambda 表达式这些概念. 到目前为止,我们的库作为知识收录这个功能来说,已经非常好用了,由于使用了 partial 关键字,所 ...
- Unity 游戏框架搭建 2019 (二十一、二十二) 第三章简介&整理前的准备
整理前的准备 到目前为止,我们积攒了很多示例了,并且每个示例也都贯彻了最的约定和规则. 在上一篇的小结也说了一个比较新的东西:编程体验优化. 在之前我们还积攒了一个问题:代码重复问题. 我们可是忍住整 ...
随机推荐
- 【2019多校第一场补题 / HDU6578】2019多校第一场A题1001Blank——dp
HDU6578链接 题意 有一串字符串,仅由 {0,1,2,3}\{0, 1, 2, 3\}{0,1,2,3} 组成,长度为 nnn,同时满足 mmm 个条件.每个条件由三个整数组成:l.r.xl.r ...
- [单调栈]小A的柱状图
链接:https://ac.nowcoder.com/acm/problem/23619来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...
- OpenCV-Python 理解K近邻 | 五十三
目标 在本章中,我们将了解k近邻(kNN)算法的原理. 理论 kNN是可用于监督学习的最简单的分类算法之一.这个想法是在特征空间中搜索测试数据的最近邻.我们将用下面的图片来研究它. 在图像中,有两个族 ...
- FaceBook 发布星际争霸最大 AI 数据集
简介 我们刚发布了最大的星际争霸:Brood War 重播数据集,有 65646 个游戏.完整的数据集经过压缩之后有 365 GB,1535 million 帧,和 496 million 操作动作. ...
- mysql的Ft_hints: no_ranking
是不是发现找遍全网也没有找到相关资料? 巧了,我也是,所以我这里来进行一次大胆分析(基本靠猜) 在使用mysql的fulltext索引(全文索引)时,使用explain则会在extra中出现这句提示: ...
- 【JavaScript】要点知识的个人总结(1)
米娜桑,哦哈哟~ 该篇章主要基于链接中的参考内容和代码测试得出的结论,面向具有一定基础的前端开发者.如有错误,请指出与包涵. 原型链的解释 https://juejin.im/post/5aa78fe ...
- 一夜搞懂 | JVM 字节码执行引擎
前言 本文已经收录到我的 Github 个人博客,欢迎大佬们光临寒舍: 我的 GIthub 博客 学习导图 一.为什么要学习字节码执行引擎? 代码编译的结果从本地机器码转变为字节码,是存储格式发展的一 ...
- 【Ubuntu】常用命令汇总,整理ing
Ubuntu 常用命令(在此页面中Ctrl+F即可快速查找) 在Ubuntu系统使用过程中,会不断地接触到命令行操作,下面对一些常用的命令进行汇总,方便查找. 1.文件操作 1.1 文件复制拷贝 cp ...
- K-Folds cross-validator-K折交叉验证实现
源码: import numpy as np from sklearn.model_selection import KFold X = np.array([[, ], [, ], [, ], [, ...
- Mybatis中的# 与 $
我们说MyBatis有两种注入参数的方式, - 一种是#{} - 另一种是${} 这两种从使用功能来看差距不大,那为什么会强推使用#? ${}使用的是拼接字符串,#{}使用的是占位符的方法,经过了处理 ...