2012-10-15 6 views
4

Comme décrit sur this website,Transformer la cohésion séquentielle en cohésion fonctionnelle?

Un module avec (uniquement) la cohésion de procédure est l'une des activités de support différentes et peut-être sans rapport, dans lequel la commande passe d'une activité à l'autre. Page-Jones donne un exemple d'un module (dont le nom pourrait être quelque chose comme, `` préparer pour vacances Repas: « »

  • ustensiles propres de repas Précédent
  • Préparer la Turquie pour le rôtissage
  • Marque Appel téléphonique
  • prendre une douche
  • légumes Chop
  • Set de table

Maintenant, ma question est, si chacune de ces activités, à savoir faire appel téléphonique, sont extraits dans leur propre méthode, mais tous sont encore appelés dans ce même ordre -à-dire

private void PrepareForHolidayMeal() 
    { 
    CleanUtensilsfromPreviousMeal(); 
    PrepareTurkeyforRoasting(); 
    ... 
    SetTable(); 
    } 

cette méthode est encore un exemple de la cohésion procédurale? Ou est-ce fonctionnellement cohésif car il soutient les activités pour l'exécution d'une tâche liée au problème, dans ce cas préparant pour un repas?

Répondre

1

L'appel téléphonique est omis dans votre exemple pour une bonne raison. C'est l'une des tâches sans rapport. Si vous supposez que l'appel téléphonique est toujours en "...", l'ensemble perdra de nouveau sa cohésion. Sinon, vous pourriez faire valoir que toutes les autres activités sont nécessaires pour préparer un repas. Cela peut déclencher une discussion si "CleanUtensilsfromPreviousMeal" est réellement valide ici car cette activité peut être nécessaire seulement dans le cas où il n'y avait pas de nettoyage auparavant. Les questions de StackExchange ne sont pas pour de telles discussions ... alors nous aurions besoin d'un exemple beaucoup plus clair pour que la décision soit acceptée par plusieurs architectes de logiciel. Sinon, certaines personnes pourraient argumenter différemment des autres.

+0

Je vois ce que vous voulez dire par rapport à la validité de cleanUtensils et de makePhoneCall. Le but de ma question n'était pas tellement de faire avec le contenu même des méthodes mais avec la structure de la méthode principale prepareHolidayMeal. En supposant que toutes les opérations sont valides et nécessaires, est-ce que le fait de les déplacer dans leurs propres méthodes change le type de cohésion de procédural à fonctionnel? – x1886x

+0

cohésion signifie «collé ensemble» - si vous les dégroupez, les choses vont mieux. Dès que vous recommencez à empaqueter, vous devez faire attention.Vous pouvez toujours créer de nouveaux groupes, ce qui est au moins utile. Le problème de suivi pourrait être que la dissimulation d'informations est alors rompue. Vous avez donc besoin d'un bon équilibre. –

1

Ceci est une question très intéressante, et oui, la réponse est relative et dépend de la façon dont nous comprenons les choses [écrit dans l'article] et comment ils correspondent à ce que l'auteur voulait dire. Il y a une légère différence entre les cohésions procédurales et fonctionnelles: la cohésion procédurale est quelque chose qui contient des étapes sans rapport, c'est-à-dire qu'il n'y a pas de "but" pour la procédure qui soit répétable et nécessaire pour l'obtenir " fixe défini "et réutilisé. Considérant que la cohésion fonctionnelle est fondamentalement une fonction (acceptant probablement l'entrée et donnant une sortie) qui peut être utilisée pour différentes entrées et produira la sortie correcte (en fonction de l'entrée) lors de la réutilisation. Conclusion, selon votre question: non, mettre chacun dans des méthodes séparées et les appeler dans le même ordre ne le change pas de procédural à fonctionnel, à moins que votre procédure ne devienne une fonction qui a vraiment un "but".

Questions connexes