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

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

解决之后导致了大量的弃用代码,为了标记弃用代码,我们又简单学习了 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. 「SWTR-04」Sweet Round 04 游记

    比赛链接 由于 \(\texttt{Sweet Round}\) 比赛挺好的(关键不知道为啥\(Unrated\) 开篇总结(大雾):这次比赛题目不错(有思维含量) 尽管我不会做. 我一看 \(T1\ ...

  2. 吴恩达最新TensorFlow专项课程开放注册,你离TF Boy只差这一步

    不需要 ML/DL 基础,不需要深奥数学背景,初学者和软件开发者也能快速掌握 TensorFlow.掌握人工智能应用的开发秘诀. 以前,吴恩达的机器学习课程和深度学习课程会介绍很多概念与知识,虽然也会 ...

  3. [AI开发]一个例子说明机器学习和深度学习的关系

    深度学习现在这么火热,大部分人都会有‘那么它与机器学习有什么关系?’这样的疑问,网上比较它们的文章也比较多,如果有机器学习相关经验,或者做过类似数据分析.挖掘之类的人看完那些文章可能很容易理解,无非就 ...

  4. Consul+Nginx部署高可用

    1. Consul Server 创建consul server虚拟主机 docker-machine create consul 出现如下内容即创建成功 Running pre-create che ...

  5. Flutter Weekly Issue 49

    插件/Librarys flutter_date_pickers Allows to use date pickers without dialog. Provides some customizab ...

  6. 图解JVM类加载机制和双亲委派模型

    我们都知道以 .java 结尾的 Java 源文件,经过编译之后会变成 .class 结尾的字节码文件.JVM 通过类加载器来加载字节码文件,然后再执行程序. 什么时候加载一个类 那么,什么时候类加载 ...

  7. 20175314 实验五 Java网络编程

    20175314 实验五 Java网络编程 一.实验报告封面 课程:Java程序设计 班级:1753班 姓名:薛勐 学号:20175314 指导教师:娄嘉鹏 实验日期:2018年5月31日 实验时间: ...

  8. 关于HashSet与HashMap

    package com.test; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; i ...

  9. Codeforces Global Round 7

    A. Bad Ugly Numbers 思路 题意: 给我们一个k,让我们用 0-9 之间的数字构成一个 k位数a,a不能被组成a的每一位数字整除. 分析:首先 k等于1,无论我们怎么配都会被整除:当 ...

  10. Java反射(六)纯面向接口编程的简单框架实践

    我们知道在使用MyBatis开发时,只需要添加DAO接口和对应的映射XML文件,不需要写DAO的实现类,其实底层是通过动态代理实现. 本文将使用前几篇文章的知识点实现一个纯面向接口编程的简单框架,与M ...