В подкасте 73 Джоэл Спольски и Джефф Этвуд обсуждают, среди прочего, «пять вещей, которые каждый должен ненавидеть за свой любимый язык программирования»:
Если вы довольны своей текущей цепочкой инструментов, то нет причин для переключения. Тем не менее, если вы не можете перечислить пять вещей, которые вам не нравятся в вашем любимом языке программирования, тогда я утверждаю, что вы еще недостаточно хорошо это знаете, чтобы судить. Хорошо знать об альтернативах и иметь здоровый критический взгляд на то, что вы используете.
Будучи любопытным, я задал этот вопрос любому кандидату, у которого я брал интервью. Никто из них не смог процитировать хотя бы одну вещь, которую они ненавидят в C # ¹.
Зачем? Что такого сложного в этом вопросе? Именно из-за стрессового контекста интервью респонденты не могут ответить на этот вопрос?
Есть ли в этом вопросе что-то плохое для интервью?
Очевидно, это не значит, что C # идеален. У меня есть список из пяти вещей, которые я ненавижу в C #:
Отсутствие переменного количества типов в дженериках (аналогично
params
для аргументов).
Action<T>
,
Action<T1, T2>
,
Action<T1, T2, T3>
,
⁞ Серьезно ?!
Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>
Отсутствие поддержки единиц измерения, как в F #.
Отсутствие свойств только для чтения. Запись вспомогательного
private readonly
поля каждый раз, когда я хочу, чтобы свойство только для чтения было скучным.Отсутствие свойств со значениями по умолчанию. И да, я знаю, что могу инициализировать их в конструкторе без параметров и вызывать его из всех других конструкторов. Но я не хочу.
Множественное наследование. Да, это вызывает путаницу, и в большинстве случаев она вам не нужна. Это все еще полезно в некоторых (очень редких) случаях, и путаница применяется также (и была решена в C #) к классу, который наследует несколько интерфейсов, которые содержат методы с тем же именем.
Я почти уверен, что этот список далеко не полон, и есть еще много моментов, на которые стоит обратить внимание, и особенно гораздо лучше, чем у меня.
Few Несколько человек раскритиковали некоторые сборки в .NET Framework или отсутствие некоторых библиотек в каркасе или раскритиковали CLR. Это не считается, так как вопрос был о самом языке , и хотя я мог потенциально принять ответ о чем-то отрицательном в ядре .NET Framework (например, что-то вроде того, что нет общего интерфейса для TryParse
, так что если Вы хотите разобрать строку на несколько типов, вы должны повторить себя для каждого типа), ответ о JSON или WCF совершенно не по теме.
Why the question “give five things you hate about C#” is so difficult to answer
Потому что это вопрос списка, и злой мод закроет его как «