Dans le podcast 73 , Joel Spolsky et Jeff Atwood discutent, entre autres, de "cinq choses que tout le monde devrait détester à propos de leur langage de programmation préféré":
Si vous êtes satisfait de votre chaîne d'outils actuelle, il n'y a aucune raison de changer. Cependant, si vous ne pouvez pas énumérer cinq choses que vous détestez à propos de votre langage de programmation préféré, alors je soutiens que vous ne le connaissez pas encore assez bien pour en juger. Il est bon d'être conscient des alternatives et d'avoir un œil critique sain pour tout ce que vous utilisez.
Curieux, j'ai posé cette question à tout candidat que j'ai interviewé. Aucun d'entre eux n'a pu citer au moins une chose qu'ils détestent à propos de C # ¹.
Pourquoi? Qu'est-ce qui est si difficile dans cette question? C'est à cause du contexte stressant de l'entretien qu'il est impossible de répondre à cette question par les personnes interrogées?
Y a-t-il quelque chose dans cette question qui la rend mauvaise pour une interview?
Évidemment, cela ne signifie pas que C # est parfait. J'ai moi-même une liste de cinq choses que je déteste à propos de C #:
L'absence de nombre variable de types dans les génériques (similaire aux
params
arguments).
Action<T>
,
Action<T1, T2>
,
Action<T1, T2, T3>
,
⁞ Sérieusement ?!
Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>
Le manque de support pour les unités de mesure, comme dans F #.
L'absence de propriétés en lecture seule. Écrire un
private readonly
champ de support chaque fois que je veux une propriété en lecture seule est ennuyeux.Le manque de propriétés avec des valeurs par défaut. Et oui, je sais que je peux les initialiser dans le constructeur sans paramètre et l'appeler à partir de tous les autres constructeurs. Mais je ne veux pas.
Héritage multiple. Oui, cela crée de la confusion et vous n'en avez pas besoin dans la plupart des cas. Il est toujours utile dans certains cas (très rares), et la confusion s'applique également (et a été résolue en C #) à la classe qui hérite de plusieurs interfaces qui contiennent des méthodes du même nom.
Je suis à peu près sûr que cette liste est loin d'être complète, et il y a beaucoup plus de points à souligner, et surtout beaucoup mieux que le mien.
¹ Quelques personnes ont critiqué certains assemblys dans .NET Framework ou le manque de bibliothèques dans le framework ou critiqué le CLR. Cela ne compte pas, car la question portait sur le langage lui-même, et bien que je puisse potentiellement accepter une réponse à propos de quelque chose de négatif dans le noyau de .NET Framework (par exemple quelque chose comme le fait qu'il n'y a pas d'interface commune pour TryParse
, donc si vous voulez analyser une chaîne en plusieurs types, vous devez vous répéter pour chaque type), une réponse sur JSON ou WCF est complètement hors sujet.
Why the question “give five things you hate about C#” is so difficult to answer
Parce que c'est une question de liste, et un mod diabolique la fermerait comme "pas constructif" avant d'avoir la chance d'y répondre ...; P