淘宝网站建设,各类软件代理加盟,昆山网站开发,软件工程要学什么以Google的代码规范为主#xff0c;稍加改动 https://google.github.io/styleguide/csharp-style.html
书写规范
基础写法
Pascal和驼峰混用#xff0c;参数用驼峰写法#xff0c;除参数外#xff0c;都以Pascal写法为主。括号建议用换行方式书写Code
类, 方法, 枚举, …以Google的代码规范为主稍加改动 https://google.github.io/styleguide/csharp-style.html
书写规范
基础写法
Pascal和驼峰混用参数用驼峰写法除参数外都以Pascal写法为主。括号建议用换行方式书写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顺序按SytemUnity自定义的命名空间以及字母顺序排序类成员的顺序: 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 /// returnsctrue/c, 场景名字设置成功, cfalse/c 场景名字设置失败./returns /// param namesceneName场景名字./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如果一行能写下不需要括号Funcint, int increment x x 1;// 对于复杂一些的lambda多行书写.Funcint, 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);}}
}