mirror of
				https://github.com/flame-engine/flame.git
				synced 2025-11-04 04:47:13 +08:00 
			
		
		
		
	Add the very beginnings of a styleguide (#672)
* Add the very beginnings of a styleguide * Update STYLEGUIDE.md * Add some considerations about trailing commas Co-authored-by: Erick <erickzanardoo@gmail.com>
This commit is contained in:
		
							
								
								
									
										74
									
								
								STYLEGUIDE.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								STYLEGUIDE.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,74 @@
 | 
				
			|||||||
 | 
					# Style Guide
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This is WIP! It is definitely not complete. We just starting putting this together.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Trailing Commas and Wrapping
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					List of elements must always be all in one line or one element per line. This includes parameters, arguments, collection literals, etc. Furthermore, if multiline, the last element must have a trailing comma.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For the sake of example, let's use a function invocation (the same apply for all cases):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					// good
 | 
				
			||||||
 | 
					foo(p1, p2, p3)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// good
 | 
				
			||||||
 | 
					foo(
 | 
				
			||||||
 | 
					    p1,
 | 
				
			||||||
 | 
					    p2,
 | 
				
			||||||
 | 
					    p3,
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// bad: missing trailing comma
 | 
				
			||||||
 | 
					foo(
 | 
				
			||||||
 | 
					    p1,
 | 
				
			||||||
 | 
					    p2,
 | 
				
			||||||
 | 
					    p3
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// bad: mixed argument lines
 | 
				
			||||||
 | 
					foo(
 | 
				
			||||||
 | 
					    p1, p2,
 | 
				
			||||||
 | 
					    p3,
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// bad: mixed argument lines
 | 
				
			||||||
 | 
					foo(f1,
 | 
				
			||||||
 | 
					    f2)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Imports
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Never include unused or duplicated imports.
 | 
				
			||||||
 | 
					* You must always use relative imports for imports within the Flame library.
 | 
				
			||||||
 | 
					* Omit `./` for relative imports from the same directory.
 | 
				
			||||||
 | 
					* TODO Do/Do not use the imports grouping internally (like component.dart, extensions.dart, etc).
 | 
				
			||||||
 | 
					* Order your imports by:
 | 
				
			||||||
 | 
					* * Three main blocks, each separated by exactly one empty line:
 | 
				
			||||||
 | 
					* * * Dart SDK dependencies,
 | 
				
			||||||
 | 
					* * * External libraries/Flutter imports,
 | 
				
			||||||
 | 
					* * * Internal (same library) imports.
 | 
				
			||||||
 | 
					* * Then, for each block, order alphabetically.
 | 
				
			||||||
 | 
					* * * For relative imports, that means further away (more `../`) imports will be first.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					import 'dart:math';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import 'package:flutter/foundation.dart';
 | 
				
			||||||
 | 
					import 'package:flutter/rendering.dart';
 | 
				
			||||||
 | 
					import 'package:flutter/widgets.dart' hide WidgetBuilder, Viewport;
 | 
				
			||||||
 | 
					import 'package:ordered_set/comparing.dart';
 | 
				
			||||||
 | 
					import 'package:ordered_set/ordered_set.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import '../../extensions.dart';
 | 
				
			||||||
 | 
					import '../components/component.dart';
 | 
				
			||||||
 | 
					import '../components/mixins/has_game_ref.dart';
 | 
				
			||||||
 | 
					import '../components/mixins/tapable.dart';
 | 
				
			||||||
 | 
					import '../components/position_component.dart';
 | 
				
			||||||
 | 
					import '../fps_counter.dart';
 | 
				
			||||||
 | 
					import 'camera.dart';
 | 
				
			||||||
 | 
					import 'game.dart';
 | 
				
			||||||
 | 
					import 'viewport.dart';
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
		Reference in New Issue
	
	Block a user