I ask about some of the best practices for programming expl3 code.
Section 4 of interface3.pdf describes functions that define new control sequences that prohibit \par in their function parameters (#1, #2, etc.).
These functions have _nopar in their name (e.g. \cs_new_nopar:Npn, \cs_new_protected_nopar:Npn, \cs_new_nopar:Nn, etc.)
My question is: When should the programmer instead use the nopar alternatives when defining new functions in LaTeX3?
A related question has been discussed here (Why don't we always use \long\def instead of \def?), but I would like an answer that is more related to expl3.