-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Artūras Šlajus edited this page Dec 15, 2016
·
43 revisions
This document outlines development practices and design patterns used in Tiny Lab Productions.
We use tlplib to provide a lot of data structures and utilities mentioned in this document.
This is not a bible. Discussion is welcome and encouraged. If you have better ideas and arguments to support them - we are listening. If you need clarification on something - you are welcome to ask as well.
Following notation is used throughout this wiki:
-
#foo
is instance method namedfoo
. -
Player#foo
is instance method ofPlayer
namedfoo
. -
.foo
is static method namedfoo
. -
Player.foo
is static method ofPlayer
namedfoo
.
- General Style
- Using formatting to ease code understanding
- Using var
- Naming boolean parameters in call sites
- Do not duplicate meaning in names
- Handling Warnings
- Namespace Naming
- Library Project Namespaces
- DRY - Don't Repeat Yourself
- Single Responsibility Principle
- Communicating Developer Intent
- Partial Initialization
- Boilerplate
- Use intermediate structures
- Lying Type Signatures
- Functional Programming
- Reactive Extensions
- Garbage Collection
- Unit
- Option
- Either
- These
- OneOf
- Try
- Lazy
- Future
- Validation
- Tuples
- Data Struct
- Immutable Collections
- SList
- IObservable
- Subject
- RxRef
- RxVal