J'ai également les méthodes suivantes:Le contenu de C# lambda ne se produira pas avant d'être appelé, n'est-ce pas? , Le nettoyage de code
protected static void updateExistingSection(XmlDocument doc,
XmlNode rootNode, string sectionTag, CreateSection createSection,
Func<XmlNode[]> createChildNodes, Action<XmlNode> firstSection)
{
IEnumerable<XmlNode> sections =
getChildNodesByName(rootNode, sectionTag);
if (sections.Count() < 1)
{
rootNode.AppendChild(createSection(doc, createChildNodes()));
return;
}
removeSubsequentNodes(sections, rootNode, firstSection);
}
private static void updateExistingCredentialsSection(XmlDocument doc,
XmlNode rootNode, string newUser, string newPassword, string newHost)
{
updateExistingSection(doc, rootNode, CREDENTIALS_SECTION_TAG,
createCredentialsSection,
() => new[] {
createNode(USER_TAG, doc, newUser),
createNode(PASSWORD_TAG, doc, newPassword),
createNode(HOST_TAG, doc, newHost)
},
credentialsNode =>
{
updateExistingLeafNode(USER_TAG, doc, credentialsNode, newUser);
updateExistingLeafNode(PASSWORD_TAG, doc, credentialsNode,
newPassword);
updateExistingLeafNode(HOST_TAG, doc, credentialsNode, newHost);
});
}
Ma question concerne le cinquième paramètre passé dans updateExistingCredentialsSection
-updateExistingSection
, l'un () => new[] { createNode(USER_TAG, doc, newUser), ... }
. Je crois comprendre que ces appels createNode
ne se produiront pas à moins que cette expression lambda ne soit appelée dans updateExistingSection
, n'est-ce pas? De même pour les appels updateExistingLeafNode
dans le dernier paramètre donné à updateExistingSection
.
D'un point de vue conceptuel, est-ce que l'une ou l'autre méthode est ridicule? Voyez-vous un moyen de réduire la taille de l'une de ces méthodes ou d'exiger moins de paramètres? J'ai essayé de sécher les choses, ce qui a conduit à écrire updateExistingSection
en premier lieu, puisque j'avais plusieurs méthodes faisant la même fonctionnalité.
En termes de lisibilité, il serait peut-être préférable que les deux lambdas soient déclarés comme des méthodes séparées, surtout si elles sont utilisées plusieurs fois, comme cela vous avez trop de});} blocs – SWeko