Add Go coding style guidelines
Signed-off-by: Stephen J Day <stephen.day@docker.com>master
							parent
							
								
									92aa378df4
								
							
						
					
					
						commit
						7bd6d6085e
					
				| 
						 | 
				
			
			@ -90,3 +90,39 @@ It's mandatory to:
 | 
			
		|||
Complying to these simple rules will greatly accelerate the review process, and will ensure you have a pleasant experience in contributing code to the Registry.
 | 
			
		||||
 | 
			
		||||
Have a look at a great, succesful contribution: the [Ceph driver PR](https://github.com/docker/distribution/pull/443)
 | 
			
		||||
 | 
			
		||||
## Coding Style
 | 
			
		||||
 | 
			
		||||
Unless explicitly stated, we follow all coding guidelines from the Go
 | 
			
		||||
community. While some of these standards may seem arbitrary, they somehow seem
 | 
			
		||||
to result in a solid, consistent codebase.
 | 
			
		||||
 | 
			
		||||
The rules:
 | 
			
		||||
 | 
			
		||||
1. All code should be formatted with `gofmt -s`.
 | 
			
		||||
2. All code should pass the default levels of
 | 
			
		||||
   [`golint`](https://github.com/golang/lint).
 | 
			
		||||
3. All code should follow the guidelines covered at
 | 
			
		||||
   https://github.com/golang/go/wiki/CodeReviewComments.
 | 
			
		||||
4. Comment the code. Tell us the why, the history and the context.
 | 
			
		||||
5. Document _all_ declarations and methods, even private ones. Declare
 | 
			
		||||
   expectations, caveats and anything else that may be important. If a type
 | 
			
		||||
   gets exported, having the comments already there will ensure it's ready.
 | 
			
		||||
6. Variable name length should be proportional to it's context and no longer.
 | 
			
		||||
   noALongVariableNameLikeThisIsNotMoreClearWhenASimpleCommentWouldDo. In
 | 
			
		||||
   practice, short methods will have short variable names and globals will
 | 
			
		||||
   have longer names.
 | 
			
		||||
7. No underscores in package names. If you need a compound name, step back,
 | 
			
		||||
   and re-examine why you need a compound name. If you still think you need a
 | 
			
		||||
   compound name, lose the underscore.
 | 
			
		||||
8. No utils or helpers packages. If a function is not general enough to
 | 
			
		||||
   warrant it's own package, it has not been written generally enough to be a
 | 
			
		||||
   part of a util package. Just leave it unexported and well-documented.
 | 
			
		||||
9. No, we don't need another unit testing framework.
 | 
			
		||||
10. Even though we call these "rules" above, they are actually just
 | 
			
		||||
    guidelines. Since you've read all the rules, you now know that.
 | 
			
		||||
 | 
			
		||||
If you are having trouble getting into the mood of idiomatic Go, we recommend
 | 
			
		||||
reading through [`Effective Go`](http://golang.org/doc/effective_go.html). The
 | 
			
		||||
[Go Blog](http://blog.golang.org/) is also a great resource. Drinking the
 | 
			
		||||
kool-aid is a lot easier than going thirsty.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue