Unity 游戏框架搭建 2019 (三十二、三十三) 类的命名 & 代码文件命名

昨天我们完成了第八个示例的第二个 MenuItem 菜单顺序的调整。

我们今天再往下接着调整。

我们来看下接下来的 MenuItem

代码如下:

[MenuItem("QFramework/8.总结之前的方法/3.生成文件名到剪切板")] private static void MenuClicked3() { CommonUtil.CopyText(Exporter.GenerateUnityPackageName()); }

CommonUtil 已经提取成第二个示例了。
Exporter.GenerateUnityPackageName() 这个方法的定义在第八个示例 PreviousFunctions 类的上方。它属于专门为导出功能定制的代码,也就是在其他情况下不适用的。

而这个 MenuItem 本身呢,现在没有太大的用处。有用的部分是 Exporter.GenerateUnityPackageName 的方法定义和所在的类。

所以这个 MenuItem 就直接删除了。

删除之后,我们把 Exporter 这个类移动到第一个示例里,因为第一个示例是导出功能所在的地方,Exporter 类呢本身就是一个导出功能的一部分。

第一个示例原来的代码如下:

using System.IO; #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; namespace QFramework { public class CustomShortCut : MonoBehaviour { #if UNITY_EDITOR [MenuItem("QFramework/1.导出 UnityPackage %e",false,1)] private static void MenuClicked() { var generatePackageName = Exporter.GenerateUnityPackageName(); EditorUtil.ExportPackage("Assets/QFramework",generatePackageName + ".unitypackage"); EditorUtil.OpenInFolder(Path.Combine(Application.dataPath, "../")); } #endif } }

移动 Exporter 类之后变成如下:

using System; using System.IO; #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; namespace QFramework { public class Exporter { public static string GenerateUnityPackageName() { return "QFramework_" + DateTime.Now.ToString("yyyyMMdd_hh"); } } public class CustomShortCut : MonoBehaviour { #if UNITY_EDITOR [MenuItem("QFramework/1.导出 UnityPackage %e",false,1)] private static void MenuClicked() { var generatePackageName = Exporter.GenerateUnityPackageName(); EditorUtil.ExportPackage("Assets/QFramework",generatePackageName + ".unitypackage"); EditorUtil.OpenInFolder(Path.Combine(Application.dataPath, "../")); } #endif } }

到这里,我们发现,Exporter 类可以和 CunstomShortCut 类进行合并,合并之后的类名是 Exporter,而代码的文件名改成了 Exporter.cs。

代码如下:
Exporter.cs

using System; using System.IO; #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; namespace QFramework { public class Exporter { #if UNITY_EDITOR [MenuItem("QFramework/1.导出 UnityPackage %e",false,1)] private static void MenuClicked() { var generatePackageName = Exporter.GenerateUnityPackageName(); EditorUtil.ExportPackage("Assets/QFramework",generatePackageName + ".unitypackage"); EditorUtil.OpenInFolder(Path.Combine(Application.dataPath, "../")); } #endif public static string GenerateUnityPackageName() { return "QFramework_" + DateTime.Now.ToString("yyyyMMdd_hh"); } } }

目录结构如下:

006tNc79gy1fzfrcaihnsj30km0ikjud.jpg

这样第八个示例的第三个 MenuItem 就整理完毕了。

小结

其实在整理第一个示例的时候,第一个示例的类的名字 CustomShortCut 就有很大的问题。我们第一个示例的功能是 导出 UnityPackage,类名却叫 自定义快捷键,这样比较奇怪。但是当时没有发现,因为只去关注菜单名是否和文件夹名是否一致了,没有考虑类名是否合理。

所以呢,我们的规范和约定要加入上一个条例:

要给类/代码文件取合适的命名

加上之后如下:

约定和规则:

每个示例在 QFramework 目录下创建一个文件夹,文件夹的格式是: 数字.示例的功能

每个示例写一个脚本,脚本中包含可复用的静态方法和 MenuItem 方法。

每写一个示例进行一次导出,导出的文件名后边加上日期和时间,这个功能已经在导出功能里内置了。

每次有 API 变更的时候做一次备份,备份的名字采用 QFramework_vX.Y.Z 格式。

每次进行整理的时候要确保是在功能有效的情况下进行删除和变更。

确保菜单名和文件夹名一致(新增)

要给类/代码文件取合适的命名(新增)

在删除弃用代码的步骤:

消除弃用警告。

搜索弃用方法的引用,并逐个升级为最新的方法。

全局搜索方法名,并根据情况逐个升级为新的方法。

在上面 我们通过第八个示例的第三个 MenuItem 方法,我们更新了约定和规则。

我们接着往下整理。

第八个示例的第四个 MenuItem 方法 [MenuItem("QFramework/8.总结之前的方法/4.导出 UnityPackage")] private static void MenuClicked4() { EditorUtil.ExportPackage("Assets/QFramework",Exporter.GenerateUnityPackageName() + ".unitypackage"); }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsffds.html