Rhino follows the tidyverse
style guide,
with specific additional rules for box::use
statements to enhance readability and maintainability of code.
These rules are designed to work alongside tidyverse
conventions, providing clarity and consistency when using box
modules.
For more details on how to use box::use
statements, see Explanation: Box modules.
For more details on how to configure linter rules in the .lintr
file, see Configuring linters.
For clarity and ease of tracking function origins, avoid using [...]
for imports. Explicitly declare all packages, modules and functions.
# Good box::use( infer[specify], shiny, ) # Bad box::use( infer[...], shiny[...], ) observe() # Is it from {infer} or {shiny}?
Trailing commas in box::use
statements are encouraged. They simplify line additions and reordering.
# Good box::use( shiny, ) # Bad box::use( shiny )
Use separate box::use
statements for importing packages and modules (R scripts) for better structure and readability.
# Good box::use( rhino[log], shiny, ) box::use( path/to/module, ) # Bad box::use( rhino[log], shiny, path/to/module, )
Order imports alphabetically to ease locating a specific import. This applies to both packages/modules and functions within them.
# Good box::use( rhino, shiny[div, fluidPage], ) # Bad box::use( shiny[fluidPage, div], rhino, )
Aliases can be useful for long package/module and function names. Imports should still follow the alphabetical order of package/module names and function names.
# Good box::use( z_pkg = rhino, shiny[div, a_fun = fluidPage], ) # Bad box::use( a_pkg = shiny, rhino[a_fun = react_component, log], )
Limit the number of functions imported from a module or package to 8.
If more than 8 functions are needed, import the entire package and reference functions using package$function
.
Aliases can be used for convenience. Check box::use
documentation for more details.
# Good box::use( rhino[log], shiny, ) # Bad box::use( rhino[log], shiny[div, fluidPage, navbarPage, sidebarPanel, sidebarLayout, mainPanel, tabPanel, tabsetPanel, titlePanel], )
box::use()
callsAs of Rhino version 1.10.0, format_r()
includes styling for box::use()
calls. This is provided by {box.linters}
version >= 0.10.4. As with {styler}
, carefully examine the styling results after performing automated styling on your code.
Automated styling covers some of the topics described above such as:
box::use()
calls for packages and local modules# Original box::use(stringr[str_trim, str_pad], dplyr, app/logic/table) # Styled box::use( dplyr, stringr[str_pad, str_trim], ) box::use( app/logic/table )
box.linters
version >= 0.10.4treesitter
packagetreesitter.r
packagebox::use()
call styling is included when running format_r()
.box.linters::style_*
functions.For more information on the abilities of {{box.linters}}
styling functions refer to the styling functions documentation.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.