Hai semua! Biarkan saya melanjutkan dengan akademi kode buruk kita. Dalam posting ini, kami akan mengungkapkan cara lain untuk memperlambat pembacaan kode Anda. Trik berikut dapat membantu Anda mengurangi pemahaman Anda tentang kode Anda dan meningkatkan kemungkinan bug di dalamnya. Siap? Ayo mulai.
Jeda baris, spasi, dan lekukan bisa mematikan.
Bagaimana orang membaca buku? Atas ke bawah, kiri ke kanan (setidaknya sebagian besar). Hal yang sama terjadi ketika pengembang membaca kodenya. Satu baris kode harus berisi satu pemikiran, oleh karena itu setiap baris hanya boleh berisi satu perintah. Jika Anda ingin mempermalukan pengembang lain, sebaiknya Anda melanggar pedoman ini. Dan biarkan saya menunjukkan kepada Anda bagaimana melakukannya.
Contoh # 1
Lihatlah potongan kode ini. Satu ide di satu baris. Kodenya sangat bersih hingga membuatku mual.
return elements
.Where(element => !element.Disabled)
.OrderBy(element => element.UpdatedAt)
.GroupBy(element => element.Type)
.Select(@group => @group.First());
Kita bisa menggabungkan semua pernyataan menjadi satu baris, tapi itu akan terlalu mudah. Dalam hal ini, otak pengembang akan memahami bahwa ada yang tidak beres di sini, dan akan memisahkan operator dari kiri ke kanan. Sangat mudah!
Yang terbaik adalah menyimpan beberapa pernyataan pada baris yang sama dan beberapa untuk dipisahkan. Pilihan terbaik adalah ketika pengembang bahkan mungkin tidak memperhatikan beberapa operator, yang akan menyebabkan kesalahpahaman dan, pada akhirnya, menyebabkan kesalahan. Pilihan lainnya adalah dengan perlahan-lahan mengurangi pemahamannya tentang kode ini sampai dia berteriak, "Apa-apaan ini !?"
return elements.Where(e => !e.Disabled)
.OrderBy(e => e.UpdatedAt).GroupBy(e => e.Type)
.Select(g => g.First());
bagaimana kamu suka itu? Anda dapat menambahkan beberapa lekukan sehingga pengembang lain akan memformat kode Anda selama beberapa dekade jika mereka perlu mengganti nama variabel elemen.
return elements.Where(e => !e.Disabled)
.OrderBy(e => e.UpdatedAt).GroupBy(e => e.Type)
.Select(g => g.First());
Kirimkan saya kartu pos jika pendekatan ini ditinjau kode oleh tim Anda.
Tip : Tinggalkan beberapa pernyataan pada satu baris dan beberapa pada baris terpisah.
Contoh # 2
Benar-benar ide yang sama di sini. Ini adalah satu-satunya kode yang lebih sering Anda lihat.
var result =
(condition1 && condition2) ||
condition3 ||
(condition4 && condition5);
Prosedurnya sama. Pisahkan baris untuk membingungkan pembaca sebanyak mungkin. Bermain sedikit dengan baris baru untuk mendapatkan hasil terbaik.
var result = (condition1 && condition2) || condition3 ||
(condition4 && condition5);
Dan tambahkan beberapa lekukan untuk membuat kode terlihat normal.
var result = (condition1 && condition2) || condition3 ||
(condition4 && condition5);
Ingat, Anda harus menjaga keseimbangan antara tidak terbaca kode dan gaya Anda yang dapat dipercaya.
Tip : Mainkan dengan jeda baris untuk hasil terbaik.
Contoh # 3
Bagaimana dengan ini?
if (isValid)
{
_unitOfWork.Save();
return true;
}
else
{
return false;
}
Masalah yang sama, tetapi di sisi lain. Di sini, pilihan terbaik adalah menggabungkan operator menjadi satu baris, tentu saja, dengan memasang kurung kurawal.
if (isValid) { _unitOfWork.Save(); return true; } else { return false; }
Pendekatan ini hanya akan bekerja jika Anda memiliki sedikit pernyataan di blok then dan sebaliknya. Jika tidak, kode Anda mungkin ditolak pada tahap peninjauan kode.
Tip : Gabungkan pernyataan if / for / foreach kecil ke dalam satu baris.
Contoh # 4
80 karakter per baris adalah standar yang disarankan saat ini. Ini memungkinkan Anda untuk menjaga konsentrasi pengembang saat mereka membaca kode Anda. Terlebih lagi, Anda dapat membuka dua dokumen pada waktu yang sama di layar yang sama bila diperlukan, sehingga Anda memiliki ruang untuk Solution Explorer.
bool IsProductValid(
ComplexProduct complexProduct,
bool hasAllRequiredElements,
ValidationSettings validationSettings)
{
// code
}
Cara termudah untuk memperlambat pembacaan kode Anda adalah dengan memaksa pengembang lain untuk menggulir kode Anda secara horizontal. Abaikan saja aturan 80 karakter.
bool IsProductValid(ComplexProduct complexProduct, bool hasAllRequiredElements, ValidationSettings validationSettings)
{
// code
}
Ini sangat mudah: lupakan apa yang terjadi sebelum Anda mulai menggulir, atau lewati baris yang Anda mulai. Trik yang bagus.
Tips : Secara sengaja, abaikan aturan 80 karakter.
Contoh # 5
Baris kosong di tempat yang tepat adalah alat yang ampuh untuk mengelompokkan kode Anda dan membuatnya lebih cepat dibaca.
ValidateAndThrow(product);
product.UpdatedBy = _currentUser;
product.UpdatedAt = DateTime.UtcNow;
product.DisplayStatus = DisplayStatus.New;
_unitOfWork.Products.Add(product);
_unitOfWork.Save();
return product.Key;
Sebuah baris kosong di tempat yang salah, digabungkan dengan tip lain dalam artikel ini, dapat membantu Anda menghemat pekerjaan Anda. Baris kosong mana yang Anda sukai?
ValidateAndThrow(product);
product.UpdatedBy = _currentUser;
product.UpdatedAt = DateTime.UtcNow;
product.DisplayStatus = DisplayStatus.New;
_unitOfWork.Products.Add(product);
_unitOfWork.Save();
return product.Key;
Tips : Sisipkan baris kosong secara acak.
Contoh # 6
Ketika Anda berkomitmen pada sebuah repositori, Anda memiliki kesempatan kecil untuk melihat apa sebenarnya yang akan Anda komit. JANGAN LAKUKAN ITU! Tidak masalah jika Anda menambahkan baris kosong tambahan seperti di sini.
private Product Get(string key)
{
// code
}
private void Save(Product product)
{
// code
}
Atau, lebih baik lagi, menambahkan beberapa spasi pada baris kosong (untuk memahami perbedaannya, sorot baris ke-5).
private Product Get(string key)
{
// code
}
private void Save(Product product)
{
// code
}
Mengapa Anda membutuhkan ini? Kode terus berfungsi (tetapi tidak pasti). Anda terus memahami kode Anda, tetapi pengembang lain akan kurang memahami kode Anda. Anda tidak bisa hanya menambahkan beberapa spasi ekstra ke metode umum sekaligus (peninjauan kode adalah musuh kami), tetapi menggunakan praktik ini akan membuat kekacauan setelah beberapa minggu pengembangan aktif.
Manfaat tambahan lainnya menggunakan spasi ekstra dalam string adalah ketika pengembang lain menjalankan fungsionalitas terkait, IDE mereka dapat secara otomatis memperbaiki pemformatan. Pada peninjauan kode, mereka akan melihat seribu garis merah dan hijau. Jika Anda mengerti maksud saya;)
Untuk alasan yang sama, Anda dapat mengatur tab di IDE Anda jika Anda menggunakan spasi dalam proyek Anda, dan sebaliknya.
Tip : jangan melihat kode sebelum melakukan.
Contoh # 7
Lewati para pengembang yang mungkin melihat spasi ekstra dalam kode. Mereka berbahaya bagi karier Anda.
product.Name = model.Name;
product.Price = model.Price;
product.Count = model.Count;
Tip : kenali musuh Anda.
Kerja keras untuk membuat kode Anda tidak didukung. Ketika Anda mengakumulasi banyak masalah kecil, mereka tumbuh tanpa partisipasi Anda. Pengembang muda akan menulis kode mereka sesuai dengan templat Anda. Suatu hari selama peninjauan kode, Anda akan mendengar "Apa-apaan ini?" dari pemimpin tim Anda, dan di sini Anda akan dapat menggunakan slogannya: βApa? Kami selalu melakukan ini, βdan menunjukkan kepadanya seribu tempat di kode yang ditulis dengan cara yang sama.
Selamat bersenang-senang.