| Home | ConditionsAndLoops.cs |
1 /****************************************************************************** 2 Style Guidelines: 3 * Readability - code is easy to read and to understand 4 * Standardisation - all team members are aligned with same code style 5 * Self-descriptive code - code is easy to understand without comments 6 * Debuggable - code is easy to debug (IDE friendly) 7 ******************************************************************************/ 8 9 // using (import) of other namespaces will be wrapped with region "Using" 10 #region Using 11 using System; 12 using System.Collections.Generic; 13 using MyNameSpace.Enums; 14 using UnityEngine; 15 16 #endregion 17 18 // types are defined within the scope of namespace 19 // space name starts with Upper case letter 20 // each following word starts with upper Case letter 21 // sub-spaces are divided by '.' (dot) 22 // here "MyNameSpace" is main space and "Conditions" is sub-space 23 namespace MyNameSpace.Conditions 24 { 25 /// <summary> 26 /// type name starts with Upper case letter 27 /// each following word starts with Upper case letter 28 /// <remarks> 29 /// type = class, enum, struct, delegate. interface, etc 30 /// </remarks> 31 /// </summary> 32 public static class Extensions 33 { 34 /// <summary> 35 /// function name starts with Upper case letter 36 /// each following word starts with Upper case letter 37 /// </summary> 38 /// <remarks> 39 /// boolean functions/properties usually start with "Is" word 40 /// </remarks> 41 /// <param name="myEnum"> 42 /// parameter name starts with lower case letter 43 /// each following word starts with Upper case letter 44 /// </param> 45 /// <param name="enumMember"> 46 /// parameter name starts with lower case letter 47 /// each following word starts with Upper case letter 48 /// </param> 49 /// <returns> 50 /// specification of what will be returned is very useful in function comment header 51 /// </returns> 52 /// <exception cref="ArgumentOutOfRangeException"> 53 /// exception(s) thrown in function are specified in it's comment header 54 /// </exception> 55 public static bool IsSame(this MyEnum myEnum, MyEnum enumMember) 56 { 57 // since 'result' is initialized with 'false' value, 'var' can be used here 58 var result = false; 59 switch (myEnum) 60 { 61 case MyEnum.EnumMember1: 62 if (enumMember == MyEnum.EnumMember1) 63 { 64 result = true; 65 } 66 break; 67 68 case MyEnum.EnumMember2: 69 if (enumMember == MyEnum.EnumMember2) 70 { 71 result = true; 72 } 73 break; 74 75 default: 76 throw new ArgumentOutOfRangeException(nameof(myEnum), myEnum, null); 77 } 78 return result; 79 } 80 81 /// <summary> 82 /// function name starts with Upper case letter 83 /// each following word starts with Upper case letter 84 /// </summary> 85 /// <param name="string"> 86 /// parameter name starts with lower case letter 87 /// each following word starts with Upper case letter 88 /// if parameter name collides with type name(s) '@' character predicate can be used 89 /// </param> 90 /// <returns> 91 /// specification of what will be returned is very useful in function comment header 92 /// </returns> 93 public static bool IsNullOrEmpty(this string @string) 94 { 95 // 'var' can be used here instead of 'bool' since it is clear 96 // what value type is returned from 'string.IsNullOrEmpty(@string);' 97 var result = string.IsNullOrEmpty(@string); 98 // result variable is used here to capture the value for better debugging experience 99 return result; 100 } 101 102 /// <summary> 103 /// function name starts with Upper case letter 104 /// each following word starts with Upper case letter 105 /// </summary> 106 /// <param name="array"> 107 /// parameter name starts with lower case letter 108 /// each following word starts with Upper case letter 109 /// </param> 110 /// <typeparam name="T"> 111 /// generic type parameter name starts with Upper case letter 112 /// each following word starts with Upper case letter 113 /// in case of single parameter, single letter 'T' can be used 114 /// </typeparam> 115 public static void Reset<T>(this T[] array) 116 { // <- opening parenthesis, new line after method name 117 for (var i = 0; i < array.Length; i++) 118 { // <- opening parenthesis, new line after 'for' loop definition line 119 array[i] = default(T); 120 // alternative: array[i] = default; // no need to specify (T) 121 } // <- closing parenthesis, new line after last loop code line 122 } // <- closing parenthesis, new line after last method code line 123 124 /// <summary> 125 /// function name starts with Upper case letter 126 /// each following word starts with Upper case letter 127 /// </summary> 128 /// <param name="list"> 129 /// parameter name starts with lower case letter 130 /// each following word starts with Upper case letter 131 /// </param> 132 /// <typeparam name="T"> 133 /// generic type parameter name starts with Upper case letter 134 /// each following word starts with Upper case letter 135 /// in case of single parameter, single letter 'T' can be used 136 /// </typeparam> 137 public static void Print<T>(this IEnumerable<T> list) 138 { 139 // disposable resources will be defined within scope of 'using' statement 140 using (var e = list.GetEnumerator()) 141 { // <- opening parenthesis, new line after 'using' definition line 142 while (e.MoveNext()) 143 { // <- opening parenthesis, new line after 'while' loop definition line 144 Debug.Log(e.Current); 145 } // <- closing parenthesis, new line after last loop code line 146 } // <- closing parenthesis, new line after last 'using' code line 147 } 148 } 149 }