Ketemu Method di Ruby Dengan Parameter Lebih Dari 3 Wajib Refactor Pakai Keyword Argument
- Categories:
- ruby
Belakangan saya sedang mengerjakan project Ruby dimana boleh dibilang legacy code lumayan jadul dan jarang disentuh. Salah satu hal yang saya temui adalah ada method yang memiliki parameter sekitar 9 parameter.
Hal ini sangat menyulitkan refactoring jika ada perubahan kode atau penambahan fitur. Jika ketemu method Ruby yang memiliki parameter lebih dari tiga, hal yang wajib saya lakukan dan jika memungkinkan dikerjakan adalah refactoring dengan keyword argument.
Kenapa wajib pakai keyword argument?
- Saat method dipanggil, variabel sebagai inputan parameter lebih dari tiga rawan tertukar.
- Tanpa keyword argument, kode sulit dibaca.
Contoh tanpa keyword argument.
class Example
def my_method(param1, param2, param3 = nil, param4)
puts "#{param1} - #{param2} - #{param3} - #{param4}"
end
end
var1 = 1
var2 = 2
var3 = 3
var4 = 4
ex = Example.new
# Tanpa keyword argument, rawan tertukar
# Misal var1 seharusnya untuk param1, tapi justru var4 yang menjadi input
ex.my_method(var4, var2, var1, var3)
Contoh dengan keyword argument.
class Example
def my_method(param1:, param2:, param3: nil, param4:)
puts "#{param1} - #{param2} - #{param3} - #{param4}"
end
end
var1 = 1
var2 = 2
var3 = 3
var4 = 4
ex = Example.new
# Dengan keyword argument, kemungkinan tertukar sangan kecil
# karena walau posisi berubah parameter saat dipanggil tertukar, tetap aman.
ex.my_method(param4: var4, param2: var2, param3: var3, param1: var1)
# Karena param3 default nil, dapat pula dipanggil seperti ini
ex.my_method(param4: var4, param2: var2, param1: var1)
Namun perlu diingat, saat refactoring pastikan unit test sudah ada agar kita dapat yakin hasil refactoring tidak bikin error.
- Tags:
- #ruby
- #refactoring
Recent Posts
C# - The Difference Between string[] and List
Learn the difference between string[] and List
in C# and when to use each for storing collections of strings in your code Shell Piping - Standard Input, Standard Output, Standard Error, /dev/null
Penjelasan singkat mengenai shell piping dan /dev/null
HTML Boilerplate
HTML Boilerplate versi KAK Labs
No-Class / Classless CSS Frameworks
Daftar CSS frameworks tanpa class versi KAK Labs
Microsoft C#
Review, rekomendasi link belajar dan rekomendasi extensions Visual Studio Code untuk C#