Skip to content

Coding Style

JinGyeong Jeong edited this page Nov 9, 2018 · 4 revisions

Imports order

Group imports into 3 groups:

  • System
  • Other Package
  • Self Package
use std::collections::HashSet;

use codechain_types::{Address, H256};
use crypto::BLAKE_NULL_RLP;
use rlp::{UntrustedRlp, RlpStream, Encodable, Decodable, DecoderError};
use triehash::ordered_trie_root;

use super::Bytes;
use super::codechain_machine::CodeChainMachine;
use super::engine::ConsensusEngine;
use super::error::Error;
use super::header::{Header, Seal};
use super::machine::{LiveBlock, Transactions};
use super::transaction::{UnverifiedTransaction, SignedTransaction, TransactionError};

Rename codechain packages

Reduce codechain_ prefix in package name to c.

extern crate codechain_crypto as ccrypto;
extern crate codechain_io as cio;
extern crate codechain_types as ctypes;

Add unique prefix to common names when exporting symbols

For example, kademlia module exports Config and Extension as KademliaConfig and KademliaExtension respectively to avoid confusion.

pub use self::config::Config as KademliaConfig;
pub use self::extension::Extension as KademliaExtension;

Formatting Tool

Make sure you run rustfmt before pushing changes to the repo. You need to install the nightly-2018-07-17 version of rustfmt.

rustup toolchain install nightly-2018-10-18
rustup component add rustfmt-preview --toolchain nightly-2018-10-18

To run rustfmt,

cargo +nightly-2018-10-18 fmt

post-commit Git Hook

It's recommended to put the below script file to .git/hooks/post-commit or another hook(such as pre-push). It will let you know the breaking points without modifying any files.

cargo +nightly-2018-10-18 fmt -- --check
You can’t perform that action at this time.