Unity项目代码书写规范

以Google的代码规范为主,稍加改动 https://google.github.io/styleguide/csharp-style.html

书写规范

基础写法

  1. Pascal和驼峰混用,参数用驼峰写法,除参数外,都以Pascal写法为主。
  2. 括号建议用换行方式书写

 

Code

  • 类, 方法, 枚举, public 字段, public 属性, 命名空间的命名规则用: PascalCase.
  • 局部变量,函数参数命名规则用: camelCase.
  • private, protected, internal and protected internal 字段和属性的命名规则用: _camelCase.
  • 命名规则不受const, static, readonly等修饰符影响.
  • 对于缩写,也按PascalCase 命名,比如 MyRpc而不是MyRPC.
  • 接口以I,开头..

Files

  • 文件和文件夹 命名规则为PascalCase, 例如 MyFile.cs.
  • 文件名尽量和文件中主要的类名一直, 例如 MyClass.cs.
  • 通常,一个文件中一个类.

 

Organization

  • 如果出现,修饰符按下列顺序书写: public protected internal private new abstract virtual override sealed static readonly extern unsafe volatile async.
  • 命名空间在最顶部,using顺序按Sytem,Unity,自定义的命名空间以及字母顺序排序,
  • 类成员的顺序:
    • Group按下列顺序:
      • Nested classes, enums, delegates and events.
      • Static, const and readonly fields.
      • Fields and properties.
      • Constructors and finalizers.
      • Methods.
    • 每个Group内,按下列顺序:
      • Public.
      • Internal.
      • Protected internal.
      • Protected.
      • Private.
    • 接口的实现尽可能安排写在一起

注释规范

代码头部注释
文件名称:文件的名称。
功能描述:文件的功能描述与大概流程说明。
作者:创建并编写的人员。
日期:创建并编写的日期。
修改记录:若类有所修改,则需要有修改人员的名字、修改日期及修改理由。

// 文件名称:UserInput.cs

// 功能描述:玩家输入按键的定义

// 编写作者:张三

// 编写日期:2017.7.16

// 修改记录:

//      R1:

//          修改作者:李四

//          修改日期:2017.7.17

//          修改理由:使玩家可以自定义输入按键

 

Using System;

方法注释

采用 /// 形式自动产生XML标签格式的注释。包括方法功能,参数含义,返回内容

    /// <summary>

    /// 设置场景的名字.

    /// </summary>

    /// <returns><c>true</c>, 场景名字设置成功, <c>false</c> 场景名字设置失败.</returns>

    /// <param name="sceneName">场景名字.</param>

    public bool SetSceneName(string sceneName)

    {

}

类变量注释

采用 /// 形式自动产生XML标签格式的注释变量含义。

    /// <summary>

    /// 场景的名字

    /// </summary>

    private string mSceneName;

局部变量注释

在变量声明语句的后面注释,与前后行变量声明的注释左对齐,注释与代码间以Tab隔开。

string firstName;   //姓

string lastName;    //名

代码行注释

注释位于代码上行,与代码开始处左对齐,双斜线与注释之间以空格分开

//设置场景的名字。

this.mSceneName = sceneName;

书写示例

using System;                                           //using写在整个文件最前,多个using按下面层级以及字母排序
using System.Collections;                               //1.system提供的
using System.Collections.Generic;
using UnityEngine;                                      //2.unity提供的
using UnityEngine.UI;
using GameDataModule;                                   //3.自定义的namespacenamespace MyNamespace 								    // Namespaces 命名规则为 PascalCase.  
{      public interface IMyInterface                       // Interfaces 以 'I' 开头{          public int Calculate(float value, float exp);   // 方法函数 命名规则为 PascalCase }public enum MyEnum                                  // Enumerations 命名规则为 PascalCase.{                                  Yes = 0,                                        // Enumerations 命名规则为 PascalCase,并显示标注对应值No = 1,}public class MyClass 								// classes 命名规则为 PascalCase.{                          public int Foo = 0;                             // Public 公有成员变量命名规则为 PascalCase.public bool NoCounting = false;                 // 最好对变量初始化.private class Results {public int NumNegativeResults = 0;public int NumPositiveResults = 0;}private Results _results;                       // Private 私有成员变量命名规则为 _camelCase.public static int NumTimesCalled = 0;private const int _bar = 100;                   // const 不影响命名规则.private int[] _someTable =                  {       2, 3, 4,                 }public MyClass()                                // 构造函数命名规则为 PascalCase.{_results = new Results                      // 对象初始化器最好用换行的方式赋值.{NumNegativeResults = 1,                 // 操作符前后用个空格分割.  NumPositiveResults = 1,           };}public int CalculateValue(int mulNumber) {      var resultValue = Foo * mulNumber;              // Local variables 局部变量命名规则为camelCase.NumTimesCalled++;Foo += _bar;if (!NoCounting)                                // if后边和括号用个空格分割.{                                                                          if (resultValue < 0){                                                                  _results.NumNegativeResults++        } else if (resultValue > 0){         _results.NumPositiveResults++;}}return resultValue;}public void ExpressionBodies() {//对于简单的lambda,如果一行能写下,不需要括号Func<int, int> increment = x => x + 1;// 对于复杂一些的lambda,多行书写.Func<int, int, long> difference1 = (x, y) => {long diff = (long)x - y;return diff >= 0 ? diff : -diff;};}void DoNothing() {}                             // Empty blocks may be concise.void CallingLongFunctionName() {int veryLongArgumentName = 1234;int shortArg = 1;// 函数调用参数之间用空格分隔AnotherLongFunctionNameThatCausesLineWrappingProblems(shortArg, shortArg, veryLongArgumentName);// 如果一行写不下可以另起一行,与第一个参数对齐AnotherLongFunctionNameThatCausesLineWrappingProblems(veryLongArgumentName, veryLongArgumentName, veryLongArgumentName);}}
}

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246135.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python常用的包_Python3之常用包汇总

原博文 2020-06-04 10:53 − Python包网站: https://pypi.org/ 1. 繁体与简体转换(https://github.com/berniey/hanziconv.git) pip install hanziconv 示例: from hanziconv impo... 相关推荐 2019-12-09 20:32 − [TOC] # 1. 模块 ## 1.1 模块是什么&#xff1f; - 模块就是个…

vue如何获取年月日_BootstrapVue——Vue和Bootstrap的相结合,构建响应式应用更简单...

介绍BootStrap是世界上最受欢迎的构建响应式移动优先网站的框架&#xff0c;Vue是当前最流行的前端框架之一&#xff0c;BootstrapVue则是将两者相结合&#xff0c;使用BootstrapVue&#xff0c;可以使用Vue.js和前端CSS库--Bootstrap v4在Web上构建响应式&#xff0c;移动优先…

cpu队列长度太长解决方法_CPU中的调试算法对比

批处理系统中采用的调度算法重要指标(吞吐量&#xff0c;周转时间&#xff0c;CPU利用率&#xff0c;公平平衡)非抢占式的先来先服务算法(FCFS)&#xff1a;按照进程就绪的先后顺序使用CPU特点&#xff1a;公平&#xff0c;实现简单&#xff0c;但是长进程后面的短进程需要等待…

Mono,CLR,.net,Net Framework之间的关系

先粗略看下各自的意义&#xff1a; .Net&#xff1a;以下这些技术的统称。是一个平台&#xff0c;而.NET平台有一个实现标准&#xff0c;叫做.Net Standard&#xff1b;.Net Framework/.Net Core/Mono&#xff1a;实现了这个标准&#xff0c;其选择的组件不一定相同CLR&#x…

c++矩阵类_数据结构-JavaScript矩阵类的设计与实现

矩阵是线性代数课学习的重点内容之一&#xff0c;也是线性代数常见工具之一&#xff0c;在应用数学、统计分析、计算机科学、计算机图像处理级物理等多学科中均有应用。矩阵主要是指数据的行列排列的形式&#xff0c;由行row与列col所组成&#xff0c;在数学中M*N矩阵是指具有M…

GPU Skin

转自&#xff1a;http://geekfaner.com/unity/blog4_GPUSkin.html GPU Skin这门技术在端游时代属于标配&#xff0c;特别是MMO游戏&#xff0c;但是手游时代就要case by case了&#xff0c;因为手机的GPU资源还是很珍贵的&#xff08;后处理之类的&#xff09;。作为技术人员&…

button按钮onclick触发不了_单按钮启停:测试模拟脉冲发生器的动作

灯闪烁所模拟是PLC单方面向控件输出信号的过程&#xff0c;控件也可以向模拟PLC输出信号。做一个带反馈灯的按钮&#xff0c;被按下后点亮&#xff0c;再按一下熄灭&#xff0c;且使按钮自保需要一定的接触时间。对应的PLC程序需要一个脉冲发生器(假设地址为L602) 把按钮触点信…

图形学教程Lecture 2: Review of Linear Algebra知识点总结

视频链接&#xff1a;https://www.bilibili.com/video/BV1X7411F744?p2 课程主页链接&#xff1a;http://games-cn.org/intro-graphics/ 课件PPT链接&#xff1a;http://games-cn.org/graphics-intro-ppt-video/ 1. 点乘 2. 点乘应用 获得两个向量的夹角&#xff1a;衡量两…

code换取微信openid_「干货」微信支付前后端流程整理(Vue+Node)

作者&#xff1a;河畔一角转发链接&#xff1a;https://mp.weixin.qq.com/s/ANLjtieWELr39zhgRAeF1w前言最近有不少同学希望我能够把微信支付的前后端流程整理一下&#xff0c;"虽然买了课程&#xff0c;依然看的比较晕"。实际上&#xff0c;我在2019年下半年出了一篇…

Games101现代图形学入门Lecture 3: Transformation知识点总结

视频链接&#xff1a;https://www.bilibili.com/video/BV1X7411F744?p3 课程主页链接&#xff1a;http://games-cn.org/intro-graphics/ 课件PPT链接&#xff1a;http://games-cn.org/graphics-intro-ppt-video/ 1. 缩放矩阵 2. 反射矩阵 3. 切变矩阵 4. 旋转矩阵 5. 线性…

pytorch forward_pytorch使用hook打印中间特征图、计算网络算力等

0、参考https://oldpan.me/archives/pytorch-autograd-hookhttps://pytorch.org/docs/stable/search.html?qhook&check_keywordsyes&areadefaulthttps://github.com/pytorch/pytorch/issues/598https://github.com/sksq96/pytorch-summaryhttps://github.com/allensll…

Games101现代图形学入门Lecture 4: Transformation Cont知识点总结

视频链接&#xff1a;https://www.bilibili.com/video/BV1X7411F744?p4 课程主页链接&#xff1a;http://games-cn.org/intro-graphics/ 课件PPT链接&#xff1a;http://games-cn.org/graphics-intro-ppt-video/ 1. 3D变换 缩放和平移矩阵 旋转矩阵 欧拉角&#xff1a;rol…

Hash和红黑树以及其在C#中的应用

参考资料&#xff1a; .Net 中HashTable&#xff0c;HashMap 和 Dictionary<key,value> 和List<T>和DataTable的比较 - 王若伊_恩赐解脱 - 博客园 c#HashSet源码解析_fdyshlk的博客-CSDN博客_c# hashset 红黑树和哈希表的区别 - 安全技术 - 亿速云 一、基本概念…

networkx 标签_networkx绘制BA无标度网络

step1: 导入networkx复杂网络库、matplotlib.pyplot、pandasimport networkx as nximport matplotlib.pyplot as pltimport pandas as pdstep2: 绘制BA无标度网络Gnx.barabasi_albert_graph(1000,1) #generate BA networkposnx.spring_layout(G) #set layoutnodecolorG.degree(…

Unity URP中的多Pass Shader和Planer shadow

一 .Unity移动端软阴影技术总结&#xff1a; https://blog.csdn.net/jxw167/article/details/82422891 二. 平面阴影的原理 https://zhuanlan.zhihu.com/p/42781261 https://zhuanlan.zhihu.com/p/31504088 王者荣耀游戏使用的就是该方法&#xff0c;已经有上线产品验证过…

java连接mongodb_第78天: Python 操作 MongoDB 数据库介绍

MongoDB 是一款面向文档型的 NoSQL 数据库&#xff0c;是一个基于分布式文件存储的开源的非关系型数据库系统&#xff0c;其内容是以 K/V 形式存储&#xff0c;结构不固定&#xff0c;它的字段值可以包含其他文档、数组和文档数组等。其采用的 BSON(二进制 JSON )的数据结构&am…

URP中的2D Light光照在移动端不生效的问题

最近在尝试用URP推出的还在preview阶段的2D Render系统&#xff0c;发现2D光照在打成APK后失效&#xff0c;尝试了些方法后发现把2d光照用到的shader放进设置中的built in shader后可以解决问题&#xff1a;

大连开发区取暖费能微信支付吗_下半年教资报考人数增加,那到底能不能异地报考呢?...

想要每周获取两篇群文件快扫码进群吧~因为教师资格证认定的问题&#xff0c;最近教师资格证备考又被广大考生提上了日程&#xff0c;由于“先上岗&#xff0c;后考证”政策&#xff0c;小编预测下一年教师资格证考试的通过率肯定没有以前那么高了&#xff0c;不少人就想选择异地…

python3项目源代码下载_2019年最值得关注的34个Python开源项目——Let's go!

踏着人工智能、区块链的东风&#xff0c;近年来一路“横冲直撞”的 Python 在实现了从小众语言到主流的完美转身后&#xff0c;一头扎进了 2019&#xff0c;依旧没有透出丝毫停下来的架势&#xff0c;反倒有些越烧越热的味道。本文将为你介绍 2019 年最值得关注的 34 个 Python…

Unity 音频优化方案

参考资料&#xff1a; https://www.cnblogs.com/bearhb/p/11210136.html https://blog.csdn.net/chenfujun818/article/details/81710895 文件格式 mp3:失真小&#xff0c;适合音质要求高的文件&#xff0c;例如BGM wav:资源大&#xff0c;不推荐 ogg:压缩比高&#xff0c;适…