Skip to content
  • bader y's avatar
    Defensive Programming in Substrate Reference Document (#2615) · b686bfef
    bader y authored
    
    
    _This PR is being continued from
    https://github.com/paritytech/polkadot-sdk/pull/2206, which was closed
    when the developer_hub was merged._
    closes https://github.com/paritytech/polkadot-sdk-docs/issues/44
    
    ---
    # Description
    
    This PR adds a reference document to the `developer-hub` crate (see
    https://github.com/paritytech/polkadot-sdk/pull/2102). This specific
    reference document covers defensive programming practices common within
    the context of developing a runtime with Substrate.
    
    In particular, this covers the following areas: 
    
    - Default behavior of how Rust deals with numbers in general
    - How to deal with floating point numbers in runtime / fixed point
    arithmetic
    - How to deal with Integer overflows
    - General "safe math" / defensive programming practices for common
    pallet development scenarios
    - Defensive traits that exist within Substrate, i.e.,
    `defensive_saturating_add `, `defensive_unwrap_or`
    - More general defensive programming examples (keep it concise)
    - Link to relevant examples where these practices are actually in
    production / being used
    - Unwrapping (or rather lack thereof) 101
    
    todo
    -- 
    - [x] Apply feedback from previous PR
    - [x] This may warrant a PR to append some of these docs to
    `sp_arithmetic`
    
    ---------
    
    Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
    Co-authored-by: default avatarGonçalo Pestana <[email protected]>
    Co-authored-by: default avatarKian Paimani <[email protected]>
    Co-authored-by: default avatarFrancisco Aguirre <[email protected]>
    Co-authored-by: default avatarRadha <[email protected]>
    b686bfef