2009-04-19 11 views
8

.Net est un énorme framework avec certaines fonctionnalités qui semblent cibler les débutants ou qui deviennent problématiques si beaucoup de personnalisation est impliquée. Alors, quelles fonctions du framework .Net pensez-vous que les développeurs professionnels devraient éviter et pourquoi?Quels composants du framework .Net devraient normalement être évités par un développeur professionnel?

Par exemple, .Net dispose d'un assistant pour les fonctions de gestion des utilisateurs courantes. Est-ce que l'utilisation de cette fonctionnalité est considérée appropriée pour un usage professionnel ou pour un débutant seulement?

Un composant/fonction/classe, etc. par réponse s'il vous plaît donc les votes sont spécifiques à un seul article.

+0

Si vous allez faire un sondage, vous devriez faire le Wiki communautaire –

+0

* ne mentionne pas les régions * –

+0

Bon point John - édité. –

Répondre

16

typées
DataSets ASP.NET * Voir Contrôle
ASP.NET * DataSource Controls

+0

Quel est le problème avec les contrôles DataSource? –

+0

Les contrôles DataSource rendent généralement la séparation des problèmes très difficile et vous finissez généralement par avoir des commandes SQL répandues sur votre couche de présentation. Cela fonctionne pour quelqu'un qui n'a jamais construit de site Web auparavant, mais qui est (et devrait être) considéré comme une mauvaise pratique pour les programmeurs proffessionnels. –

+1

Bien que cela soit vrai pour SqlDataSource, je ne pense pas qu'il s'applique à ObjectDataSource, ce qui permet une bonne séparation. –

1

Thread.Abort

Voici un excellent article de Ian Griffiths à propos de Why Thread.Abort is Evil et de meilleures alternatives.

+0

Thread.Abort n'est pas mal si vous l'utilisez pendant l'arrêt du processus. –

+0

Ouais c'est bien quand vous vérifiez si le fil a avorté dans 100 endroits différents (!) –

4

Je pense généralement que la plupart des commandes/fonctions qui font beaucoup de travail dans les coulisses peuvent causer beaucoup de problèmes. Pas de problème en utilisant un GridView si cette disposition est exactement ce que vous voulez - mais c'est très rarement, et un répéteur est probablement un meilleur choix. UpdatePanels peut vous épargner beaucoup de travail si vous voulez une sensation d'ajax sur votre site, mais comparé à un appel jQuery AJAX ils - désolé de le dire - sucent. L'assistant utilisateur que vous mentionnez peut être très utile lors du développement, mais si une fonctionnalité d'appartenance est requise dans le projet, elle doit être intégrée en tant que partie intégrante. Donc, en résumé: Les programmeurs professionnels devraient faire le travail eux-mêmes et écrire du code qui répond spécifiquement aux besoins de leurs clients, et ne prendre en compte que les parties déjà faites du Framework .Net quand c'est exactement ce dont ils ont besoin.

+0

Soyez prudent avec "Les programmeurs professionnels devraient faire le travail eux-mêmes et écrire le code qui répond spécifiquement aux besoins de leurs clients, et seulement prendre des parties prêtes faites du. Cadre quand c'est exactement ce dont ils ont besoin. " C'est vrai à un certain degré, et puis il devient NIH. Il y a un avantage à utiliser un composant prêt à l'emploi, même si ce n'est pas exactement ce que vous auriez conçu. –

+2

la nature "boîte noire" des contrôles webform est une source constante de frustration pour moi. –

+0

Gardez à l'esprit que cette question ne se limite pas à ASP.NET. –

9

MS Ajax

jquery, et d'autres cadres de js comme prototype, etc., sont une alternative plus légère et flexible. Les contrôles MS Ajax peuvent sembler excellents au départ, jusqu'à ce que vous ayez vraiment besoin d'un comportement personnalisé hors de la portée des contrôles.

Microsoft a lui-même reconnu cela dans une certaine mesure en ce sens que jquery sera livré avec les prochaines versions de Visual Studio, avec le support d'IntelliSense.

1

LINQ to XML

XmlDocument/XPath est plus facile à utiliser, si vous voulez taper fort pour analyser votre utilisation de documents xsd.exe ou Xsd2Code.

EDIT

qui préférez-vous?

IEnumerable<XElement> partNos = 
    from item in purchaseOrder.Descendants("Item") 
    where (int) item.Element("Quantity") * 
     (decimal) item.Element("USPrice") > 100 
    orderby (string)item.Element("PartNumber") 
    select item; 

ou, avec XmlDocument et XPath

var nodes = myDocument.SelectNodes("//Item[USPrice * Quantity > 100]"); 
+0

Je pense que Linq to XML est très utile si vous écrivez du XML. Mais si vous lisez du XML de n'importe quelle complexité, vous souhaiterez que vous ayez quelque chose de mieux. –

+0

"Plus facile à utiliser" est une défense terrible, d'autant plus que ce n'est pas vrai :) En outre, LINQ to XML ne consiste pas à forcer le typage de votre XML pour l'analyse. C'est un moyen d'interroger votre XML. De mon expérience LINQ à XML excelle avec le XML extrêmement compliqué et la création de documents avec elle est beaucoup plus rapide que l'alternative plus ancienne. Vous devriez réévaluer vos opinions à ce sujet et vraiment approfondir. Il y a beaucoup plus de choses que je pense que vous réalisez tous les deux. –

+0

Ok Je vais jeter un oeil à linq XML une fois de plus, mais je pense vraiment qu'une requête avec XPath est plus propre et plus facile (1 ligne de code). Je n'ai pas essayé de créer un document avec. Mais pourquoi ne pas utiliser xsd.exe et Xsd2Code avec linq à Object? vous avez l'avantage de taper fort. –

0

.Net est un énorme cadre avec une fonctionnalité qui semble cibler les débutants ou devient problématique si beaucoup de personnalisation est impliqué.

C'est le «semble cibler les débutants» qui est le vrai problème.

Les ensembles de données typés sont un bon exemple. VS fournit une interface utilisateur conviviale simple qui ne doit être utilisée que par les débutants qui créent des applications de démonstration extrêmement simples et des professionnels expérimentés qui comprennent toutes les nuances du modèle d'objet ADO.NET et ce que font réellement les ensembles de données. Personne entre ces deux pôles ne devrait y toucher, car il y a un bon moyen d'apprendre toutes les nuances du modèle d'objet ADO.NET et les ensembles de données typés ne le sont pas.

Ou prendre LINQ. Il est séduisant d'écrire du code LINQ sans avoir une bonne compréhension de IEnumerable<T>. Mais ce n'est pas si facile d'écrire du code LINQ maintenable sans cette connaissance.

+0

Les deux sont des cas de fonctionnalités qu'un bon développeur peut écrire plus succinctement avec plus de simplicité et ajouter encore un autre niveau d'abstraction qui n'ajoute habituellement aucune valeur. Parfois, il me semble que certains professionnels l'utilisent pour vendre leurs livres. – dkretz

0

Vous pouvez penser à .NET comme un oignon avec plusieurs couches. Par exemple, le .NET compact framework est un sous-ensemble de .NET complet. En outre, il existe des couches "supplémentaires" sur .NET sous la forme de "Extensions" qui sont des installations facultatives pour les nouvelles fonctionnalités qui n'ont pas encore été intégrées à .NET proprement dit. Un exemple de ceci serait quand Microsoft a publié ASP.NET 3.5 Extensions qui a maintenant été roulé dans .NET 3.51.

Une autre façon de penser à .NET est un ensemble de "bibliothèques" que vous pouvez utiliser. Par exemple, il existe un ensemble ou des routines pour supporter RegEx. Si vous voulez ou avez besoin d'expressions régulières, vous utilisez ces fonctions, sinon vous pouvez simplement les ignorer. Fonctions SImilary pour des choses comme la trigonométrie ou la sécurité.

Donc je suppose que cela se résume vraiment à ce dont vous avez besoin pour votre application? Si vous faites de la programmation scientifique, vous voudrez peut-être utiliser les fonctions trigonométriques. Une application graphique nécessitera des fonctions qu'une application console ne le ferait pas. Les applications Web n'ont probablement pas besoin d'utiliser les fonctions du presse-papier, etc.

Je ne pense vraiment pas qu'il y ait de mauvaises API dans .NET, juste des programmeurs qui les utilisent de manière inappropriée.

1

La communication à distance est généralement une bonne solution à éviter, du moins si vous ciblez la version 3.0 ou supérieure et pouvez donc facilement héberger des points de terminaison de messagerie en cours de traitement.

0

Il y a beaucoup à éviter dans la bibliothèque WinForms.

Évitez la liaison de données avec la plupart des contrôles WinForms standard. Il y a beaucoup de bugs dans cette zone qui vont conduire à beaucoup de grattage de la tête. Ou du moins cela a été mon expérience. NumericUpDown est un bon exemple de ce bazar buggé.

Évitez également les contrôles WinForms standard lorsque vous traitez de grands ensembles de données. Ils font beaucoup de copies de données et ne peuvent pas traiter correctement les grands ensembles de données.

Évitez ListView en mode "virtuel" car il est plein de bugs.

En général, je recommande juste de rester loin de WinForms. Si vous avez l'option aller pour WPF ou au moins acheter une bonne bibliothèque de formulaires tiers bien pris en charge (et, espérons-le, moins buggé).

Questions connexes