{admiral} ManifestoFor {admiral} and all extension packages, we prioritize
providing our users with a simple to adopt toolkit that
enables them to produce readable and easily
constructible ADaM programs. The following explains our
philosophy, which we try to adhere to across the {admiral}
family of packages. There isn’t always a clear single, straightforward
rule, but there are guiding principles we adhere to for
{admiral}. This manifesto helps show the considerations of
our developers when making decisions.
We have four design principles to achieve the main goal:
All {admiral} functions should be easy to use.
All {admiral} functions have a clear purpose.
We try not to ever design single functions that could achieve numerous very different derivations. For example if you as a user pick up a function with >10 different arguments then chances are it is going to be difficult to understand if this function could be applied for your specific need. The intention is that arguments/parameters can influence how the output of a function is calculated, but not change the purpose of the function.
We try to combine similar tasks and algorithms into one function where applicable to reduce the amount of repetitive functions with similar algorithms and to group together similar functionality to increase usability (e.g. one study day calculation rather than a function per variable).
We strive to design functions that are not too general and trying to fulfill multiple, complex purposes.
Functions should not allow expressions as arguments that are used as code snippets in function calls.
We recommend to avoid copy and paste of complex computational algorithms or repetitive code like checks and advise to wrap them into a function. However we would also like to avoid multi-layered functional nesting, so this needs to be considered carefully to keep the nesting of 3-4 functions an exception rather than the rule.
All {admiral} functions are easily findable.
{admiral} family package website is searchable.{admiral} package.All {admiral} functions follow the Programming
Strategy that all our developers and contributors must follow, so
that all our code has a high degree of consistency and readability.
{admiral} developers.