9
votes

Est-il mauvais de "penser" à Linq lorsque la compétence n'est pas transférée à l'extérieur de C #?

J'utilise Linq dans mon code tout le temps. Je suis arrivé au point où il semble tout simplement si naturel de grouper, d'ordre, d'organiser un groupe d'objets utilisant la syntaxe Linq que j'ai du mal à penser à la façon dont je ferais les mêmes choses sans cela.

Je n'avais jamais plongé dans le monde SQL-Esque avant cela, mais j'imagine beaucoup de gens qui ont appris que même la syntaxe SQL normale se sentait soudainement contractée par la plupart des capacités de langues de programmation normales à des hiérarchies d'objets complexes?

Est-ce que je me peignais dans un coin devenant dépendant de Linq pour faire mes tâches plus complexes? Il se sent tellement plus expressif que si j'écris le code C # clair.

dépend de la syntaxe de Linq dans ma programmation quotidienne allant me faire mal à long terme si je finis par passer des langues ou des cadres où quelque chose comme il n'est pas disponible?


1 commentaires

Cette question me rend très heureux. L'idée que le regroupement, le filtrage, la commande et la projection sont des opérations fondamentales et naturelles sur presque toutes les données est ce qui justifiait les mettre dans la langue en premier lieu. Je suis content que vous les trouviez si expressif.


10 Réponses :


23
votes

Heureusement, non. La façon de penser "Linq" est plus bien comprise comme une façon de penser "fonctionnelle", ce qui est un état d'esprit hautement transférable.

Évidemment, lorsque vous passez de la langue à la langue et à la structure au cadre, les méthodes de syntaxe et de cadre seront différentes mais la mentalité est la même. La compétence importante que vous avez acquise est la possibilité de penser en termes de séquences et de pipelines fonctionnels qui traitent ces séquences.


3 commentaires

Je n'ai jamais vraiment eu le battage médiatique autour de F # avant de commencer à travailler avec Linq et à écrire des méthodes d'extension. Je trouve maintenant que mes entités sont devenues "bêtes" et la logique consiste à se frayer un chemin dans les classes utilitaires statiques.


Vrai à propos d'être simplement un cas particulier de la programmation fonctionnelle. Cela vous surprendra peut-être que cela se transfère même très bien à quelque chose de vieille école que C ++, qui a une bibliothèque standard avec de nombreuses similitudes. Ce n'est pas tout à fait linq, mais c'est à peu près la même chose de penser à manipuler des séquences d'objets. Alors allez-y et utilisez Linq autant que possible. Il transfère bien la plupart des langues et même dans ceux sans assistance directe pour quoi que ce soit comme celui-ci, c'est un état d'esprit utile à avoir.


@Matthew Whithed: Est-ce une bonne chose que votre logique est en dehors de vos cours d'entité. Je pense autrement. Pourriez-vous s'il vous plaît clarifier. Merci



4
votes

Est-ce important? Chaque langue a ses fonctionnalités propres uniques. C'est comme dire "utilisera des bretelles en C # rendre difficile la transférer à une autre langue d'attelle non bouclée?"


5 commentaires

Cela compte pour moi, oui. Ce ne sont pas des accolades bouclés, cela change la façon dont j'écris du code quotidien et de manière significative. Avez-vous lu ma question?


Si vous parlez des "concepts" derrière Linq, ils ont été existants bien avant que c # et de nombreuses langues (par exemple python) soutiennent ces idées. Ils ont été autour depuis les jours Lisp.


BTW, oui, j'avais lu votre question. Je connais de nombreuses personnes qui s'appuient sur la syntaxe de "Expression de requête" de Linq (et non rien sur les concepts) et leur mode de rédaction de code est également modifié de manière significative. Ma réponse est plus ciblée sur la fonctionnalité "Syntaxe de requête".


Si cela change votre code, c'est parce qu'il s'agit d'un concept utile. Plus vous êtes familier avec des concepts utiles, mieux vous serez capable de les utiliser, même si vous êtes obligé de travailler dans une langue qui ne les apporte pas directement. Si l'état d'esprit LINQ vous permet d'exprimer ce que vous voulez faire, utilisez-le. La capacité d'exprimer ce que vous voulez faire est important dans n'importe quelle langue. ;)


@jalf: Je suis d'accord. Comme je l'ai dit dans mon commentaire ci-dessus, ma mentalité sur le mot "Linq" est la plupart du temps la syntaxe d'expression de requête. Je suis tout à fait d'accord avec la réponse d'Andrew que les concepts sous-jacents ne sont que des concepts de programmation fonctionnels. En effet, c'est pourquoi je ne compte pas vraiment des choses comme les expressions Lambda comme Linq. IMO, ils ne sont pas linq mais la chose que LINQ est mise en œuvre avec.



8
votes

Au lieu de regarder votre avenir potentiel en dehors de C #, je me concentrerais sur ce qui vous aide à faire votre travail aujourd'hui.

Si cela signifie utiliser et devenir couramment linq, alors soyez-le. Tant que vous êtes prêt à apprendre et à vous adapter à l'avenir (tout comme aujourd'hui), ce ne sera pas aussi grand d'un problème.


0 commentaires

3
votes

Son ne va pas te faire mal. Je crois vraiment que toutes les langues modernes vont passer à cette syntaxe très peu de temps. Java se déplace déjà dans cette direction et d'autres langues suivront avec quelque chose de similaire. MS, pour toutes les bashing qu'ils prennent, étaient devant la courbe de celui-ci. Les éliminés toute une classe de bugs liés à des variables / tableaux temporaires en termes d'obtention d'objets de réseau. Les avantages à cela sont énormes.


0 commentaires

0
votes

Oui, cela vous fera mal si Linq to sql est le seul SQL que vous connaissez.


1 commentaires

En effet. BTW, je discuterais Linq à SQL n'est pas SQL ... :)



5
votes

Oui, votre souci est valide.

c'est-à-dire que lorsque vous obtenez de bonnes à l'aide de tout outil, vous commencez à oublier comment fonctionner bien sans l'outil. Vous êtes également frustré lorsque cet outil n'est pas disponible.

Pour des millions d'années, les humains ont pu se nourrir sans l'utilisation d'outils métalliques. Ils n'étaient pas misérables. Aujourd'hui, très peu savent faire cela, et la plupart ont peur de ce que cela serait comme.

Pour les dizaines d'années, les humains ont écrit des logiciels sans interaction en temps réel avec un ordinateur, par ex. Punch Cards. Ils n'étaient pas misérables. Aujourd'hui, très peu savent faire ça. L'idée de faire cela semble misérable pour moi.

Si vous devenez adepte avec Linq, il vous manquera quand ce n'est pas là. C'est un excellent outil. Comme votre habileté avec Linq grandit, vos compétences de programmation sans Linq (que vous ne pratiquez pas) deviendront rouillés.

Dans tous les cas ci-dessus, nous avons remplacé une compétence humaine avec un outil + une nouvelle compétence humaine. Chaque fois, l'idée d'abandonner l'outil semble effrayant. Je crois qu'il y a toujours une certaine valeur pour explorer la méthode plus ancienne et inférieure de faire des choses, car cela m'aide à devenir plus bien arrondi, mais je choisirai généralement la méthode de la technologie supérieure.

Donc, N'ayez pas timide de Linq, mais explorez d'autres façons de faire des choses, dans le cadre de votre auto-éducation en tant que programmeur.


1 commentaires

"... Sans l'utilisation d'outils métalliques", devinez bien c'est pourquoi ils vous ont donné sqlmetal.exe



1
votes

Linq est une bonne chose. Il va se répandre. En fait, La propagation a déjà commencé .


0 commentaires

0
votes

Je trouve que la compréhension de la logique derrière cela aide-moi à me sentir mieux sur l'utilisation des méthodes d'extension LINQ. Si vous pouvez écrire le vôtre des méthodes d'extension ou de groupe ..etc. Il n'y a aucune honte à l'utiliser.


0 commentaires

1
votes

Si cela pourrait être assimilé à apprendre OO, je connais des personnes qui sont passées de C à une langue oo et de retour à C et, bien qu'ils ne disposaient pas d'objets disponibles, ils avaient tendance à pouvoir utiliser de nombreuses techniques dans une langue Sans objets.

La même chose peut-elle arriver avec Linq?


0 commentaires

0
votes

Je pense qu'il est important de comprendre ce qui se passe dans les coulisses d'abstractions de haut niveau tels que Linq - sinon, vous pouvez avoir des problèmes tels que la performance. Assez drôle de notre hôte Dernier publication de blog est sur ce sujet. < / p>

Donc, si "pensez à Linq" signifie que cela signifie que je soupçonne que cela fait pour certains développeurs (société actuelle exceptée), cela pourrait être considéré comme "mauvais".


0 commentaires