Explicando Variáveis
Seu caso é um exemplo da introdução da variável explicativa da refatoração. Em suma, uma variável explicativa é aquela que não é estritamente necessária, mas permite que você dê um nome claro a algo, com o objetivo de aumentar a legibilidade.
Código de boa qualidade comunica intenção ao leitor; e como legibilidade de desenvolvedor profissional e mantenabilidade são seus objetivos # 1.
Como tal, a regra prática que eu recomendaria é esta: se o propósito do seu parâmetro não for imediatamente óbvio, sinta-se à vontade para usar uma variável para dar um bom nome. Eu acho que isso é boa prática em geral (a menos que seja abusada). Aqui está um exemplo rápido e artificial - considere:
editButton.Enabled = (_grid.SelectedRow != null && ((Person)_grid.SelectedRow).Status == PersonStatus.Active);
versus o ligeiramente mais longo, mas sem dúvida mais claro:
bool personIsSelected = (_grid.SelectedRow != null);
bool selectedPersonIsEditable = (personIsSelected && ((Person)_grid.SelectedRow).Status == PersonStatus.Active)
editButton.Enabled = (personIsSelected && selectedPersonIsEditable);
Parâmetros booleanos
Seu exemplo realmente destaca por que booleanos em APIs costumam ser uma má ideia - no lado da chamada, eles não fazem nada para explicar o que está acontecendo. Considere:
ParseFolder(true, false);
Você teria que procurar o que esses parâmetros significam; se eles fossem enums, seria muito mais claro:
ParseFolder(ParseBehaviour.Recursive, CompatibilityOption.Strict);
Editar:
Adicionamos títulos e trocamos a ordem dos dois parágrafos principais, porque muitas pessoas estavam focando na parte dos parâmetros booleanos (para ser justo, era o primeiro parágrafo originalmente). Também acrescentou um exemplo para a primeira parte.