Python Tambahan #02 Penulisan Panjang Kode di Dalam Fungsi
Yuliance Ardies Ferry w.Yehohanan
21 April 2025
Dalam praktik pemrograman, terutama saat membuat aplikasi yang kompleks, tidak jarang kita membuat fungsi dengan isi kode yang sangat panjang. Fungsi seperti ini bisa menjadi sulit dibaca, rawan bug, dan menyulitkan proses debugging. Maka dari itu, penting untuk mempelajari cara menulis fungsi panjang dengan struktur yang rapi, efisien, dan mudah dipahami.
Gunakan Pemisahan Blok Logika
Fungsi yang baik adalah fungsi yang melakukan satu tugas spesifik. Namun jika harus menulis fungsi panjang, usahakan membaginya menjadi beberapa blok logika yang jelas, dengan komentar penjelas setiap bagian.
Contoh:
def proses_data(data):
# Validasi data
if not data:
return "Data kosong"
# Membersihkan data
data_bersih = [d.strip().lower() for d in data if isinstance(d, str)]
# Mengolah data
hasil = {}
for item in data_bersih:
hasil[item] = hasil.get(item, 0) + 1
return hasil
Gunakan Fungsi Bantuan
Jika isi fungsi terlalu panjang, pisahkan menjadi fungsi-fungsi kecil (helper function). Ini membantu menjaga prinsip DRY (Don't Repeat Yourself) dan meningkatkan keterbacaan.
def bersihkan_data(data):
return [d.strip().lower() for d in data if isinstance(d, str)]
def hitung_kemunculan(data):
hasil = {}
for item in data:
hasil[item] = hasil.get(item, 0) + 1
return hasil
def proses_data(data):
if not data:
return "Data kosong"
data_bersih = bersihkan_data(data)
return hitung_kemunculan(data_bersih)
Hindari Nested Code yang Terlalu Dalam
Struktur kode yang bersarang terlalu dalam (if
di dalam for
, di dalam while
, dan seterusnya) membuat kode sulit dipahami. Coba refactor atau pisahkan menjadi fungsi lain.
Contoh Kode Bersarang/Nested:
def process_user_data_nested(user):
if user.get("is_active"):
if user.get("role") == "admin":
if user.get("is_verified"):
print(f"Admin {user.get('name')} yang aktif dan terverifikasi: Melakukan tindakan khusus...")
# Lakukan tindakan khusus untuk admin terverifikasi
return True
else:
print(f"Peringatan: Admin {user.get('name')} aktif tetapi belum terverifikasi.")
return False
else:
print(f"Pengguna {user.get('name')} aktif tetapi bukan admin.")
return False
else:
print(f"Pengguna {user.get('name')} tidak aktif.")
return False
# Contoh penggunaan
user1 = {"name": "Bob", "is_active": True, "role": "admin", "is_verified": True}
user2 = {"name": "Charlie", "is_active": True, "role": "editor", "is_verified": True}
user3 = {"name": "David", "is_active": False, "role": "admin", "is_verified": False}
process_user_data_nested(user1)
process_user_data_nested(user2)
process_user_data_nested(user3)
Contoh Kode Refactor:
def process_user_data_flat(user):
if not user.get("is_active"):
print(f"Pengguna {user.get('name')} tidak aktif.")
return False
if user.get("role") != "admin":
print(f"Pengguna {user.get('name')} aktif tetapi bukan admin.")
return False
if not user.get("is_verified"):
print(f"Peringatan: Admin {user.get('name')} aktif tetapi belum terverifikasi.")
return False
print(f"Admin {user.get('name')} yang aktif dan terverifikasi: Melakukan tindakan khusus...")
# Lakukan tindakan khusus untuk admin terverifikasi
return True
# Contoh penggunaan (sama seperti sebelumnya)
user1 = {"name": "Bob", "is_active": True, "role": "admin", "is_verified": True}
user2 = {"name": "Charlie", "is_active": True, "role": "editor", "is_verified": True}
user3 = {"name": "David", "is_active": False, "role": "admin", "is_verified": False}
process_user_data_flat(user1)
process_user_data_flat(user2)
process_user_data_flat(user3)
Gunakan Penamaan Variabel yang Jelas
Penamaan variabel yang deskriptif sangat membantu pembaca memahami maksud fungsi. Hindari penggunaan huruf acak seperti x
, y
, atau tmp
kecuali untuk konteks yang jelas.
# Kurang baik
def proses(x):
for i in x:
print(i)
# Lebih baik
def tampilkan_daftar(nama_produk):
for produk in nama_produk:
print(produk)
Kesimpulan
Menulis fungsi yang panjang bukanlah masalah, selama strukturnya terorganisir dengan baik. Dengan menerapkan pemisahan logika, menggunakan helper function, komentar yang tepat, dan penamaan yang jelas, kamu bisa menghasilkan fungsi yang panjang namun tetap mudah dipahami dan dirawat.
Artikel Lainnya Dengan Kategori Terkait :
1. Python Tambahan #01 F-String: Format String Modern
2. Python Tambahan #02 Penulisan Panjang Kode di Dalam Fungsi
3. Python Tambahan #03 Komentar: Docstring dan Tanda #
4. Python Tambahan #04 Membuat List dari String atau Karakter
5. Python Tambahan #05 Perbedaan Positional dan Keyword Argument
6. Python Tambahan #06 Menggunakan Tanda *args dan **kwargs
7. Python Tambahan #07 Fungsi Bawaan: zip(), map(), dan filter()
8. Python Tambahan #08 Penggunaan any() dan all()
9. Python Tambahan #09 Fungsi enumerate() dalam Looping
10. Python Tambahan #10 Fungsi reversed() dan sorted()
11. Python Tambahan #11 Fungsi isinstance() dan id()
12. Python Tambahan #12 Pemrosesan String: replace(), strip(), split()
13. Python Tambahan #13 Menggabungkan String dengan join()
14. Python Tambahan #14 Mengatur Format Tampilan Angka dan Tanggal
15. Python Tambahan #15 Menggunakan Operator Ternary di Python
16. Python Tambahan #16 Destructuring: Unpacking List dan Tuple
17. Python Tambahan #17 Tuple Packing dan Unpacking
18. Python Tambahan #18 Dictionary Comprehension
19. Python Tambahan #19 Set Comprehension dan Operasi Dasarnya
20. Python Tambahan #20 List vs Generator: Apa Bedanya?
21. Python Tambahan #21 Fungsi Generator dengan yield
22. Python Tambahan #22 Menulis Fungsi Lambda yang Ringkas
23. Python Tambahan #23 Fungsi dalam Fungsi (Nested Function)
24. Python Tambahan #24 Fungsi sebagai Argumen dan Return
25. Python Tambahan #25 Pemrosesan File Teks: with open()
26. Python Tambahan #26 Membaca dan Menulis File JSON di Python
27. Python Tambahan #27 Format CSV: Membaca dan Menulis File CSV
Mahardika Oktadiansyah - 15 Juli 2025
Belajar CSS Lanjutan #395 | CSS padding-inline Property
Mahardika Oktadiansyah - 15 Juli 2025
Belajar CSS Lanjutan #394 | CSS padding-bottom Property
Mahardika Oktadiansyah - 15 Juli 2025
Belajar CSS Lanjutan #393 | CSS padding-block-start Property