Anti-modèle

leanup-blanchisserie

Dans le de l'informatique, les anti-modèles sont des pratiques répétées spécifiques qui semblent au commencement être salutaires, mais finalement résultat dans les mauvaises conséquences qui sont supérieures aux avantages espérés.

Selon les auteurs du livre, le AntiPatterns de , là doit être au moins deux éléments clé présents pour distinguer formellement un anti-modèle réel :

un certain modèle répété d'action, de processus ou de structure qui semblent au commencement être salutaires, mais produit finalement des conséquences plus mauvaises que des résultats salutaires, et le

  • Un refactored la solution qui est clairement documentée, la prouver-dans-réel-pratique et qu'on peut répéter.

    Souvent le de manière péjoratif appelé avec les néologismes Oxymoronic , beaucoup de du intelligent des idées d'anti-modèle s'élèvent aux erreurs peu plus que seules, harangues, problèmes insolubles, ou raffinent juste de mauvaises pratiques d'être évité si possible. Les pièges parfois appelés de ou l'obscurité de modèle l'utilisation générale et sans cérémonie de la limite est cependant venus pour se rapporter à des classes de mauvaises solutions commun-réinventées aux problèmes. Ainsi, il y a toujours beaucoup plus d'anti-modèles de candidat sous la discussion qui pourrait jamais ne formellement être considérée comme anti-modèles.

    L'anti-modèle limite provient du de l'informatique, inspiré par la troupe de modèles de conception de de livre de s de quatre les ', qui ont montré des exemples des méthodes de programmation de haute qualité. Les auteurs ont appelé ces derniers les modèles de conception de de méthodes, par analogie avec le même de limite utilisé dans l'architecture . Le AntiPatterns de livre (par William Brown , Raphael Malveau , saut McCormick et Tom Mowbray , et plus récemment Scott Thomas ) décrit des anti-modèles en tant que contre-parties normales ou des suites à l'étude des modèles de conception. En décrivant formellement des erreurs répétées, on peut identifier les forces qui mènent à leur répétition et apprennent comment d'autres ont refactored par eux-mêmes hors de ces modèles cassés. des Anti-modèles ne sont pas mentionnés dans la première édition des modèles de conception de , qui ont antidaté l'anti-modèle limite ; cependant, un de la troupe originale de de quatre auteurs de , le en retard John Vlissides , offre une approbation sur la couverture arrière.

    La prévention des anti-modèles exige les diagnostiquer dès que possible dans le cycle de vie de logiciel . Le concept des anti-modèles est aisément appliqué à la technologie en général.

    Si une application de logiciel est garnie avec la combinaison malheureuse ou mélange de trop d'anti-modèles, alors il peut connaître sous le " d'expression ; plein " monty du ;.

    Anti-Modèles identifiés/connus

    Anti-modèles d'organisation

    Propriété accidentelle : L'employé est donné un système qui a été tangentiellement lié à leur système et est parti pour le maintenir mal sans formation, croissance ou foyer appropriée (commun parmi des administrateurs de phone->network vers la fin des années 90)
    Paralysie d'analyse de : Consécration de l'effort disproportionné à la phase d'analyse d'un projet
    Capitaine de dans la salle des machines : Le chef dépense son temps et attention sur les groupes techniques, et personne qui court le bateau
    Mine d'or : Un produit de legs profitable qui mène souvent à la satisfaction au sujet de nouveaux produits
    Obsolescence continue : Consacrant l'effort disproportionné à mettre en communication un système à de nouveaux environnements
    Migration de coût de : Transfert des dépenses de projet à un département ou à un associé vulnérable
    Mode (a.a mode de lutte contre l'incendie de crise de de ) : Traitant des choses seulement quand ils deviennent une crise, avec le résultat que tout devient une crise
    Conception de du comité : Le résultat de avoir beaucoup de contribuants à une conception, mais aucune vision unifying
    Escalade de de l'engagement : Ne pas retirer une décision quand il s'avère mal
    Héros-mode : Une politique de compter sans interruption sur les efforts héroïques du personnel afin de respecter des dates-limites impossibles, tout en ignorant le coût à long terme de pas construire de la qualité de logiciel dès le début.
    Le I t'a indiqué ainsi : Quand l'avertissement ignoré d'un expert s'avère justifié, et ceci devient le centre de l'attention
    Gestion de par l'espoir : Supposer que le silence signifie tout va bien
    Gestion de par la négligence : Trop de délégation
    Gestion de par les nombres : Prêtant une attention excessive aux critères de gestion quantitatifs, quand ce sont non essentiels ou coût trop pour acquérir
    Gestion de par le perkele : gestion d'Armée-modèle sans la tolérance pour la dissidence
    Gestion de en se demandant : S'attendant à ce qu'une équipe définisse leurs propres objectifs, et puis se demandant ce qu'elles font
    Risque subjectif : Isolation d'un décideur des conséquences de sa décision.
    Gestion de champignon de : Maintenant des employés non informés et mal informés (maintenu dans l'obscurité et l'engrais alimenté)
    ici non inventé (a.) : Ignorer une idée ou une exécution a commencé en dehors de l'organisation
    polissant le poli : En donnant un subalterne ou team un projet de finition pour travailler dessus, en les interdisant de faire toute autre chose, et puis de se plaindre au sujet de leur productivité
    Réincarnation-roulant le messager : Alternativement tuant le messager, et exigeant d'être maintenu au courant
    Fluage de portée de (avec le piège de complexité de de limites étroitement relatives et Featuritis de ) : Permettre à la portée d'un projet de se développer sans commande appropriée
    Stovepipe : Une structure qui soutient la plupart du temps l'écoulement d'up-down des données mais empêche la communication d'organisation en travers
    Lock-in de fournisseur de : Fabrication d'une personne à charge de système excessivement sur une fourniture extérieurement
    Organisation de corde de violon de : Une organisation fortement accordée et équilibrée sans la flexibilité
  • Anti-modèles de gestion des projets

    technologie de Balle-point de : Ajoutant des dispositifs simplement pour assortir le matériel de la vente d'un concurrent.
    Marche de la mort de : Chacun sait que le projet va être un désastre - excepté le PRÉSIDENT. Cependant, la vérité demeure cachée et le projet est artificiellement maintenu vivant jusqu'à ce que le jour zéro vienne finalement (" ; Grand Bang" ;)
    cécité de Talon-déplacement : La cécité du chef de projet au déplacement de talon. Projeter les ouvriers (ressources) tendant à ralentir leurs efforts d'étirer dehors le calendrier du projet parce qu'ils ont l'incitation à faire ainsi, par exemple s'ils deviennent payés par temps (pas résultats) et il n'y a aucun projet suivant pour eux sans couture à la transition à
    Fumée et miroirs : Démontrant à quel point les fonctions unimplemented apparaîtront
    Le logiciel de enflent : Permettre à des versions successives d'un système d'exiger jamais plus de ressources

    Anti-modèles de gestion d'équipe

    Directeur d'absent de : Toute situation dans laquelle le directeur est invisible pendant de longues périodes.
    Développement alimenté par alcool : L'équipe de développement perd le foyer sur des buts primaires dus au volume d'alcool consommé au cours des réunions régulières d'équipe, déjeuners, égalisant des événements, des réunions sociales.
    Négociateur d'allumette de camp de : Quand un directeur emploie un " ; victoire à tout cost" ; approche à la gestion.
    Doppelganger : Un directeur ou un collègue qui peuvent être gentils et faciles à travailler avec un moment, et puis méchant et peu raisonnable le prochain.
    Cercles stériles : Le directeur qui a besoin des données (souvent sans signification) sans fin avant de prendre une décision.
    Enfant d'or : Quand la responsabilité spéciale, l'occasion, l'identification, ou la récompense est donnée à un membre de l'équipe basé sur des relations personnelles ou contrairement à l'exécution réelle de la personne.
    Poulet sans tête : Le directeur qui est toujours dans un pris de panique, mode de lutte contre l'incendie.
    Directeur de chef de pas : Le directeur qui est un bon chef, mais manque dans leur capacité administrative et gestionnaire.
    Clonage gestionnaire : La location et la tutelle des directeurs à tout l'acte et fonctionnent la même chose : identiquement à leurs patrons.
    Chef de directeur de pas : Le directeur qui est compétent dans leurs fonctions administratives et gestionnaires, mais manque de la capacité de conduite.
    Abus métrique : L'utilisation malveillante ou incompétente de la métrique et de la mesure. gentil type : Le directeur qui tâche d'être chacun ami.
    Héros de prolétariat de : L'ouvrier de « everyman » qui est supporté comme idéal, mais est vraiment juste un appui vertical pour les demandes croissantes de la gestion et les cibles de rallongement de production.
    Parvenu se levant : Les étoiles de potentiel qui ne peuvent pas attendre leur temps et vouloir renoncer à l'heure requise d'apprendre, mûrir et trouver leur endroit.
    Gestion de mouette de : Les mouches dedans, fait beaucoup de bruit, chie all over tout, puis vole loin.
    Directeur invertébré : Le directeur qui n'a pas le courage de confronter des situations, de prendre la chaleur pour un échec, ou de protéger leurs subalternes.
    le Trois-a dirigé le chevalier : Le directeur indécis.
    Arme finale : Phénomènes qui sont comptés au moment tellement par leurs pairs ou organisation qu'ils deviennent le conduit pour toutes les choses.
    Corps chauds : L'ouvrier qui répond à peine aux espérances minimum du travail et est thusly manoeuvré du projet au projet, ou équipe à team.
    Béni oui-oui : Le directeur qui sera d'accord avec tout le PRÉSIDENT dit quoiqu'il ait énoncé différemment à partir de sa présence.

    Anti-modèles d'analyse

    Spécifications de serviette de : Spécifications fonctionnelles/techniques sont données à l'équipe de développement sur une serviette (c. officieusement, et avec le détail insuffisant) qui est fondamentalement équivalente à n'avoir aucune spécification du tout.
    FAUSSES conditions : Toutes les conditions sont communiquées aux équipes de développement dans une succession rapide des sessions ou des appels téléphoniques netmeeting sans spécifications fonctionnelles/techniques ou d'autres pièces justificatives.
    Rétro-spécifications : Pour écrire spécifications techniques/fonctionnelles après le projet est déjà devenue disponible.

    Anti-modèles généraux de conception

    Inversion d'abstraction de : N'exposant pas la fonctionnalité mise en application requise par des utilisateurs, de sorte qu'ils re-instrument il using des fonctions de plus haut niveau
    Point de vue ambigu : Présentant un modèle (habituellement OOAD ) sans spécifier son point de vue
    Grande boule de de la boue : Un système sans la structure reconnaissable
    Goutte : voir le Dieu de objecter
    BOMQ : " ; Groupe au-dessus de MQ" ; Utilisation trop zélée de l'intégration en temps réel de message d'exécuter des transferts périodiques peu fréquents mais à fort débit en lots.
    Base de données de comme IPC : Using une base de données à communiquer entre les processus sur un ou plusieurs ordinateurs quand l'IPC direct est plus approprié.
    Usine de gaz de : Une conception inutilement complexe
    Kludge d'entrée de : Pour spécifier et ne pas mettre en application la manipulation de l'entrée probablement inadmissible
    L'interface de enflent : Rendant une interface si puissante qu'il est extrêmement difficile de mettre en application
    Bouton poussoir magique : Logique de l'exécution de codage directement dans le code de l'interface , sans employer l'abstraction .
    Risque de course de : Ne pas voir la conséquence de différents ordres des événements
    raccordant : Présentation de la dépendance inutile d'objet
    Système de Stovepipe de : Un assemblage à peine maintenable des composants malade-connexes

    Anti-modèles de conception orientée objectivement

    Modèle anémique de domaine de : L'utilisation du modèle de domaine de sans toute logique d'affaires de qui n'est pas le OOP parce que chaque objet devrait avoir les deux attributs et comportements
    BaseBean : Héritant de la fonctionnalité d'une classe de service plutôt que lui déléguant
    Appel superbe de : Exiger des sous-classes d'appeler une méthode dépassée des superclass
    problème de Cercle-ellipse de : Variable-types de Subtyping sur la base des valeur-sous-types
    Échec vide de sous-classe de : Créant une classe qui échoue le " ; Sous-classe vide Test" ; en se comportant différemment d'une classe a dérivé de elle sans modifications
    Objet de Dieu de : Concentrant trop de fonctions dans une partie unique de la conception (classe)
    Puisard d'objet de : Réutilisant les objets dont l'état ne se conforme pas (probablement) au contrat implicite pour la réutilisation
    Objets des monstres dont l'objectif unique est de passer l'information à un autre objet
    Accouplement séquentiel : Une classe qui exige de ses méthodes pour s'appeler dans un ordre particulier
    Singletonitis : L'abus du modèle de singleton de
    encore une autre couche (YAFL) d'ing de *** de F : Ajouter des couches inutiles à un programme, à une bibliothèque ou à un cadre. Ceci est devenu populaire après le premier livre sur les modèles de programmation.
    Problème de yo-yo de : Une structure (par exemple de la transmission) qui est dure pour comprendre en raison de la fragmentation excessive

    Anti-modèles de programmation

    Complexité accidentelle : Présentation de la complexité inutile dans une solution
    Le accumulent et mettent le feu à : Paramètres d'arrangement pour des sous-routines dans une collection de variables globales
    Action de à une distance : Interaction inattendue entre les parties largement séparées d'un système
    Foi sans visibilité : Manque de vérification (a) de l'exactitude d'une difficulté de bogue ou (b) du résultat d'une sous-routine
    Ancre de bateau de : Maintenant une partie d'un système qui n'a plus n'importe quelle utilisation
    Aimant de bogue de : Un bloc de code a tellement rarement appelé/examiné qu'il échouera très probablement.
    Rotation occupée : Unité centrale de traitement consumante tout en attendant quelque chose se produire, habituellement par la vérification répétée au lieu de la transmission de messages appropriée
    cachant l'échec : Oublier de remettre à zéro un drapeau d'erreur quand une erreur a été corrigée
    Culte de cargaison de programmant : Suivre des modèles et des méthodes sans arrangement pourquoi
    vérifiant le type au lieu de l'interface : Vérifiant qu'un objet a un type spécifique quand seulement un certain contrat est exigé. Échec vide de sous-classe de de cause de mai.
    Élan de code de : Au-dessus-contraignant une partie d'un système en assumant à plusieurs reprises des choses à son sujet dans d'autres pièces
    Codage de par l'exception : Ajouter le nouveau code pour traiter chaque cas spécial comme on l'identifie
    Erreur de cachant : Capture d'un message d'erreur avant qu'il puisse montrer à l'utilisateur et ne montrant rien ou montrer un message sans signification
    Manipulation d'exception : Using le système de gestion d'erreur d'une langue pour mettre en application la logique de programme normale
    Fantôme de de CONTRE : Using des modèles comme (sur le résumé d'erreur… après) pour cacher des erreurs. Souvent blâmé sur des fantômes de système ou des employés précédents.
    Code dur : Inclure des prétentions au sujet de l'environnement d'un système à beaucoup de points dans son exécution
    Écoulement de lave : Conservation du code (superflu ou de basse qualité) indésirable parce que l'élimination de lui est trop chère ou a des conséquences imprévisibles
    ordre de Boucle-commutateur de : Codage d'un ensemble d'étapes séquentielles using une boucle au-dessus d'un rapport de commutateur
    Nombres magiques : Y compris des nombres non expliqués dans les algorithmes
    Chaînes magiques : Y compris les cordes littérales en code, pour des comparaisons, comme événement dactylographie etc.
    Packratting : La mémoire excessive consumante en maintenant les objets dynamiquement assignés vivants pour plus longtemps qu'eux sont nécessaires
    Protectionnisme parallèle : Quand le code devient si complexe et fragile qu'il est plus facile de copier une infrastructure parallèle que pour ajouter un insignifiant attribuer à l'infrastructure existante
    programmant accidentellement : (Ou élimination des imperfections accidentellement) - le programme de résolution branche sur table d'écoute aveuglément « en corrigeant » des articles, comme enlever l'espace blanc ou réarranger des lignes. Au lieu du temps de dépense recherchant des causes premières des bogues, le temps est essai gaspillé de fixer des choses aveuglément.
    Code de ravioli de : Systèmes avec un bon nombre d'objets qui sont lâchement reliés
    Sode mou : Stockant la logique d'affaires dans des fichiers de configuration plutôt que le code source
    Code de gaine : Les systèmes dont la structure est à peine compréhensible, particulièrement en raison de l'abus du code structure
    Logique de Superboolean de : comparaison ou abstraction inutile d'arithmétique booléenne
    Superthreading : la croyance que le code fonctionnera plus rapidement en augmentant le nombre de fils
    Manipulation d'exception inutile : Insérant des conditions pour empêcher une temps d'exécution-exception, mais pour la jeter manuellement si la condition échoue. ( de si processus non nul du puis de A (A) endif d'autre de de nul-exception de jet de )
    s'enveloppant dans l'ouate : Généralement observered quand des méthodes de cadre sont contenues dans la ligne simple méthodes dans les classes d'emballage qui ne fournissent aucune abstraction utile

    Anti-modèles méthodologiques

    Copie et pâte de programmant : Code existant de copie (et modifiant) plutôt que créant les solutions génériques
    de De-factorisation : Le processus d'enlever la fonctionnalité et de la remplacer par la documentation
    Marteau d'or : Supposant qu'une solution préférée s'applique universellement
    Facteur d'improbabilité de : Supposant qu'il est improbable qu'une erreur connue se produise
    Bas fruit accrochant : Traiter des issues plus faciles d'abord tout en ignorant de plus grandes issues plus complexes. Il peut considérer quant à la facilité relative avec laquelle scientifique, des découvertes philosophiques et technologiques sont faites d'abord comparé aux difficultés une fois que le sujet a été déjà exploré.
    Optimisation prématurée : Codage tôt-sur pour l'efficacité perçue, sacrifiant la bonne conception, l'entretien, et parfois même l'efficacité réelle
    programmant par la permutation : Essai d'approcher une solution en modifiant successivement le code pour voir si cela fonctionne
    réinventant la roue carrée : Création d'une solution pauvre quand bonne existe
    réinventant la roue : Ne pas adopter exister, à solution proportionnée
    Balle argentée : Supposant qu'une solution technique préférée peut résoudre un plus grand processus ou problème
    Développement conduit par appareil de contrôle : Projets de logiciel où de nouvelles conditions sont définies dans des rapports de bogue

    Anti-modèles de gestion de la configuration

    Enfer de dépendance de : Problèmes avec des versions des produits required
    Enfer de Classpath de : Problèmes liés à spécifier des bibliothèques, leurs dépendances et leur version required pour courir l'application
    Conflit de prolongation de : Problèmes avec différents prolongements à OS de Mac de essayant de raccorder les mêmes parties du du système d'exploitation
    Enfer de DLL de : Problèmes avec des versions, la disponibilité et la multiplication du DLLs spécifiquement sur le Microsoft Windows
    Enfer de FIOLE de : Problèmes avec différents versions ou endroits des dossiers de FIOLE, habituellement provoqués par un manque d'arrangement du modèle du chargement de classe de

    Voir également

    Odeur de code de
    Liste de des philosophies de développement de logiciel

    .

    Random links:Stuart J. Russell | Pigeon tacheté | En abondance (l'album de traitement) | Harbin Aircraft Manufacturing Corporation | Chopsocky | Anti-patrón