Trong podcast 73 , Joel Spolsky và Jeff Atwood thảo luận, trong số các chủ đề khác, "năm điều mọi người nên ghét về ngôn ngữ lập trình yêu thích của họ":
Nếu bạn hài lòng với chuỗi công cụ hiện tại của mình, thì không có lý do gì bạn cần phải chuyển đổi. Tuy nhiên, nếu bạn không thể liệt kê năm điều bạn ghét về ngôn ngữ lập trình yêu thích của mình, thì tôi cho rằng bạn chưa biết rõ về nó. Thật tốt khi biết các lựa chọn thay thế và có một con mắt quan trọng lành mạnh cho bất cứ thứ gì bạn đang sử dụng.
Vì tò mò, tôi đã hỏi câu hỏi này với bất kỳ ứng viên nào tôi đã phỏng vấn. Không ai trong số họ có thể trích dẫn ít nhất một điều họ ghét về C #.
Tại sao? Có gì khó khăn trong câu hỏi này? Có phải vì bối cảnh căng thẳng của cuộc phỏng vấn mà câu hỏi này không thể trả lời được bởi người được phỏng vấn?
Có điều gì đó về câu hỏi này làm cho nó xấu cho một cuộc phỏng vấn?
Rõ ràng, điều đó không có nghĩa là C # là hoàn hảo. Tôi có cho mình một danh sách năm điều tôi ghét về C #:
Việc thiếu số lượng các loại khác nhau trong tổng quát (tương tự như
params
đối số).
Action<T>
,
Action<T1, T2>
,
Action<T1, T2, T3>
,
⁞ Nghiêm túc ?!
Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>
Việc thiếu hỗ trợ cho các đơn vị đo lường, như trong F #.
Việc thiếu các thuộc tính chỉ đọc. Viết một
private readonly
trường sao lưu mỗi khi tôi muốn một thuộc tính chỉ đọc là nhàm chán.Việc thiếu các thuộc tính với các giá trị mặc định. Và vâng, tôi biết rằng tôi có thể khởi tạo chúng trong hàm tạo không tham số và gọi nó từ tất cả các hàm tạo khác. Nhưng tôi không muốn.
Đa thừa kế. Có, nó gây nhầm lẫn và bạn không cần nó trong hầu hết các trường hợp. Nó vẫn hữu ích trong một số trường hợp (rất hiếm) và sự nhầm lẫn cũng áp dụng (và đã được giải quyết trong C #) cho lớp kế thừa một số giao diện có chứa các phương thức có cùng tên.
Tôi khá chắc chắn rằng danh sách này còn lâu mới hoàn thành, và có nhiều điểm cần làm nổi bật hơn, và đặc biệt là những điểm tốt hơn nhiều so với danh sách của tôi.
Một số người chỉ trích một số hội đồng trong .NET Framework hoặc thiếu một số thư viện trong khung hoặc chỉ trích CLR. Điều này không được tính, vì câu hỏi là về chính ngôn ngữ và trong khi tôi có khả năng có thể chấp nhận câu trả lời về điều gì đó tiêu cực trong lõi của .NET Framework (ví dụ như một cái gì đó giống như thực tế là không có giao diện chung cho TryParse
, vì vậy nếu bạn muốn phân tích một chuỗi thành nhiều loại, bạn phải lặp lại chính mình cho mọi loại), một câu trả lời về JSON hoặc WCF là hoàn toàn lạc đề.
Why the question “give five things you hate about C#” is so difficult to answer
Bởi vì đó là một câu hỏi danh sách, và một mod xấu sẽ đóng nó thành "không mang tính xây dựng" trước khi bạn có cơ hội trả lời nó ...; P