In Podcast 73 diskutieren Joel Spolsky und Jeff Atwood unter anderem "fünf Dinge, die jeder an seiner Lieblingsprogrammiersprache hassen sollte":
Wenn Sie mit Ihrer aktuellen Werkzeugkette zufrieden sind, müssen Sie nicht umsteigen. Wenn Sie jedoch nicht fünf Dinge auflisten können, die Sie an Ihrer bevorzugten Programmiersprache hassen, dann wissen Sie das wohl noch nicht gut genug, um es beurteilen zu können. Es ist gut, sich der Alternativen bewusst zu sein und ein gesundes kritisches Auge für alles zu haben, was Sie verwenden.
Da ich neugierig war, stellte ich diese Frage jedem Kandidaten, den ich interviewte. Keiner von ihnen war in der Lage, mindestens eines zu zitieren, das sie an C # ¹ hassen.
Warum? Was ist an dieser Frage so schwierig? Ist es wegen des stressigen Kontextes des Interviews, dass diese Frage von den Befragten nicht beantwortet werden kann?
Gibt es etwas an dieser Frage, das es schlecht für ein Interview macht?
Das heißt natürlich nicht, dass C # perfekt ist. Ich habe selbst eine Liste von fünf Dingen, die ich an C # hasse:
Das Fehlen einer variablen Anzahl von Typen in Generika (ähnlich wie
params
bei Argumenten).
Action<T>
,
Action<T1, T2>
,
Action<T1, T2, T3>
,
⁞ Ernst ?!
Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>
Die fehlende Unterstützung für Maßeinheiten, wie in F #.
Das Fehlen von schreibgeschützten Eigenschaften.
private readonly
Jedes Mal, wenn ich eine schreibgeschützte Eigenschaft haben möchte, ist es langweilig, ein Hintergrundfeld zu schreiben .Das Fehlen von Eigenschaften mit Standardwerten. Und ja, ich weiß, dass ich sie im parameterlosen Konstruktor initialisieren und von allen anderen Konstruktoren aufrufen kann. Aber ich will nicht.
Mehrfachvererbung. Ja, das führt zu Verwirrung und wird in den meisten Fällen nicht benötigt. Es ist in einigen (sehr seltenen) Fällen immer noch nützlich, und die Verwirrung trifft auch auf die Klasse zu (und wurde in C # behoben), die mehrere Schnittstellen erbt, die Methoden mit demselben Namen enthalten.
Ich bin mir ziemlich sicher, dass diese Liste alles andere als vollständig ist, und es gibt viel mehr Punkte hervorzuheben, und vor allem viel bessere als meine.
¹ Einige Leute kritisierten einige Assemblys in .NET Framework oder das Fehlen einiger Bibliotheken im Framework oder kritisierten die CLR. Dies zählt nicht, da die Frage sich auf die Sprache selbst bezog und ich möglicherweise eine Antwort auf etwas Negatives im Kern von .NET Framework akzeptieren konnte (zum Beispiel die Tatsache, dass es keine gemeinsame Schnittstelle für gibt TryParse
, also wenn Wenn Sie eine Zeichenfolge in mehrere Typen unterteilen möchten, müssen Sie sich für jeden Typ wiederholen.) Eine Antwort zu JSON oder WCF ist völlig inaktiv.
Why the question “give five things you hate about C#” is so difficult to answer
Weil es eine Listenfrage ist und ein böser Mod sie als "nicht konstruktiv" schließen würde, bevor Sie die Chance bekommen, sie zu beantworten ...; P