Menangani string nol/kosong

Sebelum .NET 4 keluar, kami telah melakukan sesuatu seperti ini untuk memeriksa string null/kosong:

String s;
if ((s + "").Trim().Length == 0)
{
    //do something
}

Meskipun metode di atas bekerja cukup baik bagi kami, saya tahu bahwa di .NET 4, kami mendapatkan metode IsNullOrWhiteSpace untuk melakukan hal serupa.

Pertanyaan saya adalah, mana yang lebih baik? Apakah kita harus beralih menggunakan fungsi bawaan?


person andri    schedule 17.03.2013    source sumber


Jawaban (3)


Di .NET 4, saya pasti akan menggunakan metode bawaan. Lagi pula, ini menyatakan persis apa yang Anda coba lakukan.

Jika Anda mengalami kebuntuan sebelum .NET 4, mengapa tidak menggunakan:

if (s == null || s.Trim() == "")

Or

if (s == null || s.Trim().Length == 0)

? Keduanya mengatakan apa yang ingin Anda capai.

Saya pasti tidak akan menggunakan penggabungan string di sini. Selain performa, Anda tidak tertarik dengan penggabungan string. Setiap kali Anda menemukan kode Anda melakukan sesuatu yang sebenarnya bukan bagian dari apa yang ingin Anda capai, Anda harus mencoba memperbaikinya demi keterbacaan.

person Jon Skeet    schedule 17.03.2013
comment
Apa yang salah dengan penggabungan string? Apakah seburuk itu? - person andri; 17.03.2013
comment
@andri: Tidak masalah jika Anda ingin menggabungkan string. Tapi kamu tidak melakukannya. Anda hanya menggunakan penggabungan untuk menghindari penanganan referensi nol. Itu tidak baik. - person Jon Skeet; 17.03.2013
comment
Saya pikir saya mengerti maksud Anda di sini. Namun dalam beberapa kasus, kita juga perlu memproses string Trimmed (dan mengubahnya menjadi string kosong jika null). Apakah penggabungan untuk menghindari null masih merupakan ide buruk untuk kasus tersebut? - person andri; 18.03.2013
comment
Lupakan komentar saya sebelumnya, saya telah menemukan jawabannya di sini: stackoverflow.com/questions/416473/ - person andri; 18.03.2013

Saya pribadi menggunakan IsNullOrWhiteSpace, terutama karena menggunakannya membuat kode lebih jelas untuk dibaca dan menangani lebih banyak kasus (bagian WhiteSpace). Itu tergantung pada preferensi Anda, karena kedua metode melakukan hal yang hampir sama.

person Lemurr    schedule 17.03.2013

Mengapa tidak menulis metode pembantu untuk mengimplementasikan apa yang dilakukan IsNullOrWhiteSpace sebelum .NET 4? Seperti

public static boolean IsNullOrWhiteSpace(string input)
{
    return string.IsNullOrEmpty(input) || input.Trim() == string.Empty;
}

Jangan gunakan penggabungan di sini seperti yang dikatakan Jon. Ini bukan praktik yang baik untuk memeriksa nol/kosong.

person Kirin Yao    schedule 18.03.2013
comment
Ya, sebenarnya sebagian implementasi kita memang menggunakan metode helper/ekstensi (dan sebagian lainnya langsung menggunakan kode seperti contoh di atas :(). - person andri; 18.03.2013
comment
@andri Tidak ada kata terlambat dan selalu layak untuk difaktorkan ulang. :) - person Kirin Yao; 18.03.2013