• Stars
    star
    484
  • Rank 90,873 (Top 2 %)
  • Language
  • Created over 9 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

C# Style Guide for Game Tech tutorials

Table of Contents

The Official Kodeco C# Style Guide

This style guide is different from others you may find, because the focus is centered on readability for print and the web. We created this style guide to keep the code in our tutorials consistent.

Our overarching goals are conciseness, readability and simplicity. Also, this guide is written to keep Unity in mind.

Inspiration

This style guide is based on C# and Unity conventions.

Nomenclature

On the whole, naming should follow C# standards.

Namespaces

Namespaces are all PascalCase, multiple words concatenated together, without hyphens ( - ) or underscores ( _ ). The exception to this rule are acronyms like GUI or HUD, which can be uppercase:

AVOID:

com.kodeco.fpsgame.hud.healthbar

PREFER:

Kodeco.FPSGame.HUD.Healthbar

Classes & Interfaces

Classes and interfaces are written in PascalCase. For example RadialSlider.

Methods

Methods are written in PascalCase. For example DoSomething().

Fields

All non-static fields are written camelCase. Per Unity convention, this includes public fields as well.

For example:

public class MyClass 
{
    public int publicField;
    int packagePrivate;
    private int myPrivate;
    protected int myProtected;
}

AVOID:

private int _myPrivateVariable

PREFER:

private int myPrivateVariable

Static fields are the exception and should be written in PascalCase:

public static int TheAnswer = 42;

Properties

All properties are written in PascalCase. For example:

public int PageNumber 
{
    get { return pageNumber; }
    set { pageNumber = value; }
}

Parameters

Parameters are written in camelCase.

AVOID:

void DoSomething(Vector3 Location)

PREFER:

void DoSomething(Vector3 location)

Single character values are to be avoided except for temporary looping variables.

Actions

Actions are written in PascalCase. For example:

public event Action<int> ValueChanged;

Misc

In code, acronyms should be treated as words. For example:

AVOID:

XMLHTTPRequest
String URL
findPostByID

PREFER:

XmlHttpRequest
String url
findPostById

Declarations

Access Level Modifiers

Access level modifiers should be explicitly defined for classes, methods and member variables.

Fields & Variables

Prefer single declaration per line.

AVOID:

string username, twitterHandle;

PREFER:

string username;
string twitterHandle;

Classes

Exactly one class per source file, although inner classes are encouraged where scoping appropriate.

Interfaces

All interfaces should be prefaced with the letter I.

AVOID:

RadialSlider

PREFER:

IRadialSlider

Spacing

Spacing is especially important in kodeco.com code, as code needs to be easily readable as part of the tutorial.

Indentation

Indentation should be done using spaces — never tabs.

Blocks

Indentation for blocks uses 4 spaces for optimal readability:

AVOID:

for (int i = 0; i < 10; i++) 
{
  Debug.Log("index=" + i);
}

PREFER:

for (int i = 0; i < 10; i++) 
{
    Debug.Log("index=" + i);
}

Line Wraps

Indentation for line wraps should use 4 spaces (not the default 8):

AVOID:

CoolUiWidget widget =
        someIncrediblyLongExpression(that, reallyWouldNotFit, on, aSingle, line);

PREFER:

CoolUiWidget widget =
    someIncrediblyLongExpression(that, reallyWouldNotFit, on, aSingle, line);

Line Length

Lines should be no longer than 100 characters long.

Vertical Spacing

There should be exactly one blank line between methods to aid in visual clarity and organization. Whitespace within methods should separate functionality, but having too many sections in a method often means you should refactor into several methods.

Brace Style

All braces get their own line as it is a C# convention:

AVOID:

class MyClass {
    void DoSomething() {
        if (someTest) {
          // ...
        } else {
          // ...
        }
    }
}

PREFER:

class MyClass
{
    void DoSomething()
    {
        if (someTest)
        {
          // ...
        }
        else
        {
          // ...
        }
    }
}

Conditional statements are always required to be enclosed with braces, irrespective of the number of lines required.

AVOID:

if (someTest)
    doSomething();  

if (someTest) doSomethingElse();

PREFER:

if (someTest) 
{
    DoSomething();
}  

if (someTest)
{
    DoSomethingElse();
}

Switch Statements

Switch-statements come with default case by default (heh). If the default case is never reached, be sure to remove it.

AVOID:

switch (variable) 
{
    case 1:
        break;
    case 2:
        break;
    default:
        break;
}

PREFER:

switch (variable) 
{
    case 1:
        break;
    case 2:
        break;
}

Language

Use US English spelling.

AVOID:

string colour = "red";

PREFER:

string color = "red";

The exception here is MonoBehaviour as that's what the class is actually called.

Copyright Statement

The following copyright statement should be included at the top of every source file:

/*
 * Copyright (c) 2023 Kodeco Inc.
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * Notwithstanding the foregoing, you may not use, copy, modify, merge, publish, 
 * distribute, sublicense, create a derivative work, and/or sell copies of the 
 * Software in any work that is designed, intended, or marketed for pedagogical or 
 * instructional purposes related to programming, coding, application development, 
 * or information technology.  Permission for such use, copying, modification,
 * merger, publication, distribution, sublicensing, creation of derivative works, 
 * or sale is expressly withheld.
 *    
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */

In this repository, copy the ScripTemplates folder into your own Unity Assets folder. This way the header above will be included in new scripts.

NOTE: You may need to close and reopen Unity in order for it to start picking up the template.

Smiley Face

Smiley faces are prominent style feature of the kodeco.com site! It's important to have the correct smile signifying the immense amount of happiness and excitement for the coding topic. The closing square bracket ] is used because it represents the largest smile able to be captured using ASCII art. A closing parenthesis (":)") creates a half-hearted smile, and thus is not preferred.

AVOID:

:)

PREFER:

:]

NOTE: Do not use smileys in your scripts.

Credits

This style guide is a collaborative effort from the most stylish kodeco.com team members:

More Repositories

1

swift-algorithm-club

Algorithms and data structures in Swift, with explanations!
Swift
28,779
star
2

swift-style-guide

The official Swift style guide for Kodeco.
12,820
star
3

objective-c-style-guide

A style guide that outlines the coding conventions for Kodeco
3,092
star
4

flta-materials

The projects and the materials that accompany the Flutter Apprentice book
Dart
2,344
star
5

SKTUtils

Sprite Kit helper classes and functions. From the book iOS Games by Tutorials.
Swift
661
star
6

ios-interview

The resources and instructions for the iOS Sample Project interview question.
429
star
7

kotlin-style-guide

Kodeco's Kotlin style guide
387
star
8

met-materials

The projects and the materials that accompany the Metal by Tutorials book.
Swift
318
star
9

comb-materials

The projects and the materials that accompany the Combine: Asynchronous Programming With Swift Book
Swift
290
star
10

deprecated-books

Kodeco Deprecated Books
258
star
11

sui-materials

The projects and the materials that accompany the SwiftUI by Tutorials book
Swift
215
star
12

adva-materials

The projects and materials that accompany the Real-World Android by Tutorials book
Kotlin
213
star
13

mcon-materials

The projects and materials that accompany the Modern Concurrency in Swift book
Swift
207
star
14

mvc-modern-approach

Sample project for an article at raywenderlich.com.
Swift
170
star
15

english-style-guide

Style guide for writing in English for tutorials and articles at Kodeco.
157
star
16

alg-materials

The projects and the materials that accompany the Data Structures & Algorithms in Swift book
Swift
152
star
17

vapor-til

The TIL Application for the Vapor book
Swift
147
star
18

rxs-materials

The projects and the materials that accompany the RxSwift: Reactive Programming with Swift Book
Swift
147
star
19

java-style-guide

The official Java style guide for raywenderlich.com
Shell
146
star
20

da-materials

The projects and the materials that accompany the Dart Apprentice book
Dart
139
star
21

dsk-materials

The projects and the materials that accompany the Data Structures & Algorithms in Kotlin book
Kotlin
137
star
22

jet-materials

The projects and the materials that accompany the Jetpack Compose book
Kotlin
134
star
23

ia-materials

The projects and materials that accompany the UIKit Apprentice book
HTML
131
star
24

sa-materials

The projects and the materials that accompany the Swift Apprentice book.
Swift
124
star
25

dsad-materials

The projects and the materials that accompany the Data Structures & Algorithms in Dart book
Dart
121
star
26

vpr-materials

The projects and materials that accompany the Server-Side Swift with Vapor book
Swift
110
star
27

arch-materials

The projects and the materials that accompany the Advanced iOS App Architecture book
Swift
97
star
28

atdd-materials

The projects and the materials that accompany the Android Test-Driven Development by Tutorials book
Kotlin
95
star
29

rwf-materials

The projects and materials that accompany the Real-World Flutter by Tutorials book
Dart
93
star
30

learning-roadmaps

Learning roadmaps for students at raywenderlich.com.
82
star
31

apr-materials

The projects and materials that accompany the Apple Augmented Reality by Tutorials book
Swift
81
star
32

suia-materials

The projects and the materials that accompany the SwiftUI Apprentice book
Swift
80
star
33

itdd-materials

The projects and the materials that accompany the iOS Test-Driven Development by Tutorials book
Swift
72
star
34

rwi-materials

The projects and materials that accompany the Real-World iOS by Tutorials book.
Swift
69
star
35

ka-materials

The projects and the materials that accompany the Kotlin Apprentice book.
Kotlin
65
star
36

ana-materials

The projects and materials that accompany the Advanced Android App Architecture book
Kotlin
60
star
37

kco-materials

The projects and materials that accompany the Kotlin Coroutines by Tutorials book
Shell
59
star
38

aa-materials

The projects and the materials that accompany the Android Apprentice book.
Kotlin
59
star
39

mad-materials

The projects and materials that accompany the App Design Apprentice book
Shell
58
star
40

des-materials

The projects and materials that accompany the Design Patterns by Tutorials book
Shell
58
star
41

swiftui-example-app-koober

Porting the example app from our Advanced iOS App Architecture book from UIKit to SwiftUI.
Swift
57
star
42

cdt-materials

The projects and the materials that accompany the Core Data by Tutorials book
Swift
51
star
43

video-yfsa1-materials

Student Materials for Your First iOS and SwiftUI App: An App from Scratch.
Swift
49
star
44

kmpf-materials

The projects and materials that accompany the Kotlin Multiplatform by Tutorials book
Kotlin
48
star
45

iat-materials

The projects and the materials that accompany the iOS Animations by Tutorials book
Shell
44
star
46

dbg-materials

The projects and the materials that accompany the Advanced Apple Debugging & Reverse Engineering book
C
43
star
47

mos-materials

The projects and materials that accompany the macOS by Tutorials book
Swift
42
star
48

advs-materials

The projects and materials that accompany the Expert Swift book
Swift
41
star
49

daf-materials

The projects and the materials that accompany the Dart Apprentice: Fundamentals book
Dart
36
star
50

rxa-materials

The projects and the materials that accompany the Reactive Programming with Kotlin Book
Shell
35
star
51

MyRWTutorial

A reusable starter project for raywenderlich.com tutorials
Swift
34
star
52

video-jcomp-materials

The projects and the materials that accompany the Jetpack Compose course
Kotlin
34
star
53

sat-materials

The projects and materials that accompany the SwiftUI Animations by Tutorials book
Swift
32
star
54

dag-materials

The projects and the materials that accompany the Dagger by Tutorials book
Kotlin
31
star
55

bkk-materials

Kodeco Book Materials Template Repo
Shell
30
star
56

con-materials

About The projects and the materials that accompany the Concurrency by Tutorials book
Shell
28
star
57

RWDevCon-App

The RWDevCon app
Swift
28
star
58

sda-materials

The projects and the materials that accompany the Saving Data on Android book
Kotlin
28
star
59

wos-materials

The projects and the materials that accompany the watchOS With SwiftUI by Tutorials book
Swift
27
star
60

recipes

27
star
61

fpk-materials

The projects and materials that accompany the Functional Programming in Kotlin by Tutorials book
Kotlin
26
star
62

pasi-materials

The projects and the materials that accompany the iOS App Distribution & Best Practices book.
Swift
26
star
63

agit-materials

The projects and the materials that accompany the Advanced Git Book
Shell
25
star
64

SC_SusmitaHorrow

Swift
24
star
65

dabb-materials

The projects and the materials that accompany the Dart Apprentice: Beyond the Basics book
Dart
24
star
66

gita-materials

The projects and the materials that accompany the Git Apprentice book
Shell
24
star
67

not-materials

The projects and the materials that accompany the Push Notifications by Tutorials book
Swift
22
star
68

maca-materials

The projects and materials that accompany the macOS Apprentice book
Swift
21
star
69

RWAndroidTutorial

A reusable starter project for raywenderlich.com Android tutorials.
Kotlin
20
star
70

programmer-jokes

Sample repository for the Git Apprentice book
19
star
71

video-ps1-materials

The projects and the materials that accompany the Programming in Swift: Fundamentals course
Swift
19
star
72

alt-materials

The projects and materials that accompany the Auto Layout by Tutorials book
Swift
19
star
73

aat-materials

The projects and materials that accompany the Android Animations by Tutorials book
Kotlin
19
star
74

mlt-materials

The projects and the materials that accompany the Machine Learning by Tutorials book
Shell
18
star
75

video-insta-materials

The projects and the materials that accompany the How to Make an App Like Instagram in iOS video course
Swift
17
star
76

video-yfsa2-materials

Student Materials for Your First iOS and SwiftUI App: Polishing the App.
Swift
17
star
77

universal-links

HTML
17
star
78

video-comb-materials

The projects and the materials that accompany the Reactive Programming in iOS with Combine course
Swift
16
star
79

cat-materials

The projects and the materials that accompany the Catalyst by Tutorials Book
Swift
16
star
80

video-sdios-materials

The projects and the materials that accompany the Saving Data in iOS course
Swift
15
star
81

video-suif-materials

The projects and the materials that accompany the SwiftUI Fundamentals course
Swift
15
star
82

uapp-materials

The projects and the materials that accompany the Unity Apprentice book
C#
15
star
83

android-bootcamp-summer-2020

Homework solutions for the Android Bootcamp, class of Summer 2020.
Kotlin
15
star
84

video-nurls-materials

The projects and the materials that accompany the Networking with URLSession video course
Swift
15
star
85

kodeco-android-cookiecutter-template

A cookiecutter 🍪 template for bootstrapping new Android Tutorial projects for Kodeco!
Kotlin
14
star
86

ideas

The "ideas" repository for the raywenderlich.com book Mastering Git
14
star
87

video-ukf-materials

The projects and the materials that accompany the UIKit Fundamentals video course
Swift
13
star
88

git-materials

The projects and the materials that accompany the Mastering Git Book
Shell
13
star
89

video-tv-materials

The projects and the materials that accompany the Table Views video course
Swift
12
star
90

rwdevcon-materials

Required materials for RWDevCon attendees.
12
star
91

video-jca-materials

The projects and materials that accompany the Jetpack Compose Animations course
Kotlin
12
star
92

video-iosa-materials

The projects and the materials that accompany the UIKit Animation course
Swift
12
star
93

saf-materials

The projects and the materials that accompany the Swift Apprentice:Fundamentals book.
Swift
12
star
94

video-kf1-materials

The projects and the materials that accompany the Kotlin Flow: Getting Started video course
Kotlin
11
star
95

DadJokes

A way to improve the programmer's day.
Swift
11
star
96

video-aidp-materials

The projects and materials that accompany the Advanced iOS Design Patterns course
Swift
11
star
97

video-abp-materials

The projects and the materials that accompany the Android Background Processing video course
Kotlin
10
star
98

adf-materials

The projects and the materials that accompany the Android Debugging by Tutorials book
Kotlin
10
star
99

video-yffa-materials

The projects and the materials that accompany the Your First Flutter App: An App From Scratch course
Dart
10
star
100

video-sli-materials

The projects and the materials that accompany the SwiftUI: Layout & Interfaces video course
Swift
10
star