Dalam podcast 73 , Joel Spolsky dan Jeff Atwood mendiskusikan, di antara subyek lain, "lima hal yang setiap orang harus benci tentang bahasa pemrograman favorit mereka":
Jika Anda senang dengan rantai alat Anda saat ini, maka tidak ada alasan Anda perlu beralih. Namun, jika Anda tidak dapat membuat daftar lima hal yang Anda benci tentang bahasa pemrograman favorit Anda, maka saya berpendapat Anda belum cukup tahu untuk menilai. Ada baiknya untuk mengetahui alternatifnya, dan memiliki mata kritis yang sehat untuk apa pun yang Anda gunakan.
Karena penasaran, saya mengajukan pertanyaan ini kepada setiap kandidat yang saya wawancarai. Tak satu pun dari mereka yang dapat mengutip setidaknya satu hal yang mereka benci tentang C # ¹.
Mengapa? Apa yang begitu sulit dalam pertanyaan ini? Karena konteks wawancara yang penuh tekanan maka pertanyaan ini tidak mungkin dijawab oleh orang yang diwawancarai?
Apakah ada sesuatu tentang pertanyaan ini yang membuatnya buruk untuk wawancara?
Jelas, itu tidak berarti bahwa C # sempurna. Saya sendiri memiliki daftar lima hal yang saya benci tentang C #:
Kurangnya jumlah variabel jenis dalam obat generik (mirip dengan
params
argumen).
Action<T>
,
Action<T1, T2>
,
Action<T1, T2, T3>
,
⁞ Serius ?!
Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>
Kurangnya dukungan untuk satuan ukuran, seperti dalam F #.
Kurangnya hanya baca properti. Menulis
private readonly
bidang dukungan setiap kali saya ingin properti hanya baca membosankan.Kurangnya properti dengan nilai default. Dan ya, saya tahu bahwa saya dapat menginisialisasi mereka di konstruktor tanpa parameter dan memanggilnya dari semua konstruktor lainnya. Tapi saya tidak mau.
Warisan berganda. Ya, itu menyebabkan kebingungan dan Anda tidak memerlukannya dalam banyak kasus. Ini masih berguna dalam beberapa kasus (sangat jarang), dan kebingungan juga berlaku (dan dipecahkan dalam C #) untuk kelas yang mewarisi beberapa antarmuka yang berisi metode dengan nama yang sama.
Saya cukup yakin bahwa daftar ini jauh dari lengkap, dan ada lebih banyak poin yang perlu disoroti, dan terutama yang jauh lebih baik daripada milik saya.
¹ Beberapa orang mengkritik beberapa majelis dalam .NET Framework atau kurangnya beberapa perpustakaan dalam kerangka tersebut atau mengkritik CLR. Ini tidak masuk akal, karena pertanyaannya adalah tentang bahasa itu sendiri, dan sementara saya berpotensi menerima jawaban tentang sesuatu yang negatif dalam inti .NET Framework (misalnya sesuatu seperti fakta bahwa tidak ada antarmuka umum untuk TryParse
, jadi jika Anda ingin mengurai string ke beberapa jenis, Anda harus mengulang sendiri untuk setiap jenis), jawaban tentang JSON atau WCF benar-benar di luar topik.
Why the question “give five things you hate about C#” is so difficult to answer
Karena ini adalah daftar pertanyaan, dan seorang mod jahat akan menutupnya sebagai "tidak konstruktif" sebelum Anda mendapatkan kesempatan untuk menjawabnya ...; P