it-swarm-fr.com

LINQ a-t-il un effet indéterminé sur les programmeurs .NET?

Beaucoup d'entre nous ont commencé à voir ce phénomène avec jQuery il y a environ un an lorsque les gens ont commencé à demander comment faire des choses absolument insensées comme récupérer la chaîne de requête avec jQuery . La différence entre le bibliothèque (jQuery) et le langue (JavaScript) est apparemment perdue sur de nombreux programmeurs et aboutit à beaucoup de code inapproprié et convolué écrit où ce n'est pas nécessaire.

Peut-être que c'est juste mon imagination, mais je jure que je commence à voir une hausse de questions dans le nombre de questions où les gens demandent de faire de même des choses insensées avec Linq, comme trouvez des gammes dans une matrice triée . Je ne peux pas remettre à quel point les extensions de Linq sont parfaitement inappropriées pour résoudre ce problème, mais surtout le fait que l'auteur juste supposait que la solution idéale impliquerait Linq Sans réellement Penser À ce sujet (autant que je puisse dire). Il semble que nous ayons répété l'histoire, élevant une nouvelle génération de programmeurs .NET qui ne peuvent pas dire la différence entre la langue (c #/vb.net) et la bibliothèque (LINQ).

Qu'est-ce qui est responsable de ce phénomène? Est-ce juste un battage médiatique? Magpie Tendances? Linq a-t-il ramassé une réputation comme une forme de magie, où au lieu d'écrire du code, il suffit de prononcer la bonne incantation? Je suis à peine satisfait de ces explications mais je ne peux vraiment penser à rien d'autre.

Plus important encore, est-ce vraiment un problème, et si oui, quel est le meilleur moyen d'aider à éclairer ces personnes?

36
Aaronaught

C'est fondamentalement parce que la programmation est fondamentalement difficile. Cela nécessite beaucoup de pensées logiques et structurées de manière à ce que beaucoup de gens ne savent tout simplement pas comment faire. (Ou ne peut tout simplement pas faire, En fonction de qui vous écoutez.)

Des trucs comme Linq et JQuery rend certaines tâches communes de manipulation de données beaucoup plus faciles à faciliter. C'est génial pour ceux d'entre nous qui savent ce que nous faisons, mais l'effet secondaire malheureux est qu'il réduit le bar. Cela facilite la tâche des personnes qui n'ont aucune idée de ce qu'ils font pour commencer à écrire du code et de faire fonctionner les choses. Et puis quand ils courent dans la réalité et trouvent quelque chose de fondamentalement difficile que leurs techniques simples et de niveau d'abstraction ne soient pas bien adaptées à, elles sont perdues, car elles ne comprennent pas la plate-forme sur laquelle leur bibliothèque est construite.

Votre question est en quelque sorte sur la bonne voie, mais beaucoup comme la controverse pérenne des jeux vidéo violents "Tournant les enfants violents", il a la direction du lien vers l'arrière. Les techniques de programmation faciles ne font pas de programmeurs stupides; Ils attirent juste des gens stupides à la programmation. Et il n'y a vraiment pas grand chose que vous pouvez faire à ce sujet.

52
Mason Wheeler

Pour moi, c'est le nouveau phénomène jouet. Quelque chose de nouveau sort (Linq) et maintenant chaque développeur veut jouer avec elle.

Ils voient Linq comme un marteau et chaque problème est un clou. Qui se soucie s'il est plus simple de le faire d'une autre manière? Linq doit être la réponse! Comme quand tout le monde utilisait XML pour tout! Fichier de configuration? Xml. Stocker des données? Xml. Etc

13
ist_lion

Je pense que Linq offre une très bonne occasion en C # lors de la résolution des problèmes en utilisant une approche plus fonctionnelle. Nous ne devrions pas rejeter un nouveau style de résolution de problèmes simplement parce que nous avons déjà quelque chose qui fonctionne.

Venant d'un fond lourd SQL, j'aime avoir la possibilité d'utiliser la logique définie basée sur mon C # pour mieux décrire l'intention de mes opérations.

Cela dit; Le contexte est roi, et tout peut être overutilisé.

10
dotjosh

Si vous utilisez correctement LINQ, et comprenez-le sous la hotte, vous trouverez toutes sortes de de nouvelles techniques de programmation de pointe.

Donc, si vous pensez profondément sur les améliorations, je soutiens que cela vous fait un meilleur programmeur. Si un programmeur donné fait réellement cela ou non, n'est pas la faute de Linq.

Le même argument peut être fait pour les mappeurs d'objet-relation. Est-ce que quelqu'un écrit vraiment des requêtes SQL crues contre les tables de base de données? :)

2
Robert Harvey

Linq et JQuery sont les derniers "jouets" et les développeurs aiment montrer comment ils peuvent faire des choses en utilisant la dernière chose.

2
Dan Diplo

Certaines de ces choses folles sont parce que les gens utilisent le mauvais marteau, d'autres sont parce qu'ils construisent un super marteau très élégant, mais ils ont rencontré un détail bizarre qui doit être surmonté.

Par exemple, si vous voyez une question sur l'utilisation de LINQ pour générer une linq dynamique à utiliser contre des linq non dynamiques neuf fois sur dix, la personne est soit curieuse si elle est possible ou aboyer le mauvais arbre, mais il y en a quelques-uns Des choses que vous pouvez résoudre de cette façon qui sont difficiles au point de déraisonnable de résoudre le contraire.

Je prends ce genre de questions en deux parties:

  1. peut-il être fait, et si oui, à quoi ressemblerait-il
  2. devrait-il être fait, existe-t-il un risque, ou une meilleure alternative

J'ai trouvé que je les faisais presque toujours dans cet ordre. Il répond à la question et vous aide également à faire une meilleure explication des alternatives potentielles.

1
Bill

Je ne connais pas d'effet engourdissant sur les esprits des développeurs, mais jetez un coup d'œil ici pour l'effet des outils/langues numériques sur les taux. Parlez de baisser le bar!

0
Pete Wilson