mirror of
https://github.com/valitydev/thrift.git
synced 2024-11-07 02:45:22 +00:00
20205b85fa
Patch: Pooja Chandak This closes #2271
49 lines
2.2 KiB
Markdown
49 lines
2.2 KiB
Markdown
# Thrift Coding Standards
|
|
|
|
Any fool can write code that a computer can understand.
|
|
Good programmers write code that humans can understand.
|
|
-- Martin Fowler, 1999
|
|
|
|
The purpose of this document is to make everyone's life easier.
|
|
|
|
It's easier when you read good, well-formatted, with a clearly defined purpose, code.
|
|
But the only way to read clean code is to write such.
|
|
|
|
This document can help achieve that, but keep in mind that
|
|
those are not silver-bullet, fix-all-at-once rules. Just think about readability while writing code.
|
|
Write code like you would have to read it ten years from now.
|
|
|
|
## General Coding Standards
|
|
|
|
Thrift has some history. Not all existing code follows those rules.
|
|
But we want to improve over time.
|
|
When making a small change / bugfix - like a single line fix - do *not* refactor the whole function.
|
|
That disturbs code repository history.
|
|
Whenever adding something new and / or making bigger refactoring
|
|
- follow those rules as strictly as you can.
|
|
|
|
When in doubt - contact other developers (using dev@ mailing list or IRC).
|
|
Code review is the best way to improve readability.
|
|
|
|
### Basics
|
|
* Use spaces, not tabs
|
|
* Use only ASCII characters in file and directory names
|
|
* Commit to the repository using Unix-style line endings (LF)
|
|
On Windows:
|
|
git config core.autocrlf true
|
|
* Maximum line width - 100 characters
|
|
* If not specified otherwise in language specific standard - use 2 spaces as indent/tab
|
|
|
|
### Comments
|
|
* Each file has to start with a comment containing [Apache License](http://www.apache.org/licenses/LICENSE-2.0)
|
|
* Public API of a library should be documented, preferably using format native for language-specific documentation generation tools (Javadoc, Doxygen etc.)
|
|
* Other comments are discouraged - comments are lies. When one has to make comment it means one failed to write readable code. Instead of "I should write a comment here" think "I should clean it up"
|
|
* Do not leave "TODO/FIXME" comments - file [Jira](http://issues.apache.org/jira/browse/THRIFT) issue instead
|
|
|
|
### Naming
|
|
Finding proper names is the most important and most difficult task in software development.
|
|
|
|
## Language-Specific Coding Standards
|
|
|
|
For detailed information see `lib/LANG/coding_standards.md`
|