Praktik Terbaik dalam Python

Praktik Terbaik dalam Python

Artikel ini menjelaskan praktik terbaik dalam Python.

Kami akan menjelaskan praktik terbaik Python dengan contoh kode nyata, memperkenalkan cara menulis kode yang mudah dibaca dan dipelihara.

YouTube Video

Praktik Terbaik dalam Python

Utamakan keterbacaan

Pertama, mari kita lihat 'mengutamakan keterbacaan'.

Python adalah bahasa yang menghargai 'keterbacaan'. Pertama, prioritaskan menulis kode yang tujuannya jelas hanya dengan sekali lihat.

1# Bad example: unclear variable names
2a = 10
3b = 5
4c = a * b

Dalam kode ini, nama variabel tidak menjelaskan maknanya, sehingga orang lain memerlukan waktu untuk memahaminya.

1# Good example: descriptive variable names
2price = 10
3quantity = 5
4total_cost = price * quantity

Dengan membuat nama variabel lebih spesifik, kode Anda sendiri berfungsi sebagai dokumentasi.

Tulislah kode yang eksplisit

Selanjutnya, mari kita lihat 'menulis kode yang eksplisit'.

'Intensi eksplisit' lebih diutamakan dalam Python daripada 'perilaku implisit'.

1# Bad example: implicit truthy check
2if data:
3    process(data)

Dalam kode ini, tidak jelas apa yang diharapkan dari data, sehingga rawan terjadi bug.

1# Good example: explicit condition
2if len(data) > 0:
3    process(data)

Dengan membuat kondisi eksplisit, tujuan kode sesuai dengan spesifikasinya.

Buat fungsi tetap kecil dan fokus pada satu tanggung jawab saja

Selanjutnya, mari kita lihat 'membuat fungsi tetap kecil dan fokus pada satu tanggung jawab'.

Jika satu fungsi melakukan terlalu banyak hal, pengujian dan pemeliharaan menjadi sulit.

1# Bad example: doing too many things
2def handle_user(user):
3    save_to_database(user)
4    send_email(user)
5    write_log(user)

Dalam kode ini, proses menjadi terlalu saling berhubungan, sehingga sulit untuk digunakan ulang dan dimodifikasi.

1# Good example: single responsibility
2def save_user(user):
3    save_to_database(user)
4
5def notify_user(user):
6    send_email(user)
7
8def log_user(user):
9    write_log(user)

Dengan memisahkan fungsi, peran mereka menjadi jelas dan pengujian menjadi lebih mudah.

Gunakan petunjuk tipe (type hints) secara aktif

Selanjutnya, mari kita lihat 'menggunakan petunjuk tipe secara aktif'.

Petunjuk tipe berfungsi sebagai dokumentasi dan merupakan alat yang kuat untuk mencegah bug.

1# Bad example: Without type hints
2def add(a, b):
3    return a + b

Dalam kode ini, tipe argumen dan nilai kembalian tidak jelas, sehingga rawan disalahgunakan.

1# Good example: With type hints
2def add(a: int, b: int) -> int:
3    return a + b

Dengan petunjuk tipe, pelengkapan IDE, analisis statis, dan keterbacaan meningkat pesat.

Jelaskan secara eksplisit kemungkinan mengembalikan None

Selanjutnya, mari kita lihat 'menjelaskan secara eksplisit kemungkinan mengembalikan None.'.

Fungsi yang bisa mengembalikan None seringkali luput dari perhatian pengguna.

1# Bad example: Ambiguous return value
2def find_user(user_id):
3    if user_id == 1:
4        return {"id": 1, "name": "Alice"}
5    return None

Dalam kode ini, tidak jelas apakah akan ada nilai yang dikembalikan.

1# Good example: explicit return type
2from typing import Optional, Dict, Any
3
4def find_user(user_id: int) -> Optional[Dict[str, Any]]:
5    if user_id == 1:
6        return {"id": 1, "name": "Alice"}
7    return None

Dengan menggunakan Optional, Anda dapat menyampaikan kemungkinan mengembalikan None sebagai sebuah tipe.

Jangan menangkap exception terlalu luas

Selanjutnya, mari kita lihat 'tidak menangkap exception terlalu luas.'.

Penanganan exception sebaiknya hanya menangkap yang benar-benar diperlukan.

1# Bad example: catching all exceptions
2try:
3    result = int(value)
4except Exception:
5    result = 0

Kode ini dapat menyembunyikan bug yang seharusnya diperhatikan.

1# Good example: catch specific exception
2try:
3    result = int(value)
4except ValueError:
5    result = 0

Dengan membatasi exception yang ditangkap, Anda tidak akan melewatkan masalah tak terduga.

Tangani resource dengan aman menggunakan statement with

Selanjutnya, mari kita lihat 'menangani resource dengan aman menggunakan statement with.'.

Resource seperti file dan kunci harus selalu dilepaskan secara andal.

1# Bad example: manual close
2file = open("data.txt")
3content = file.read()
4file.close()

Dalam kode ini, jika terjadi exception, close() mungkin tidak akan dipanggil.

1# Good example: using context manager
2with open("data.txt") as file:
3    content = file.read()

Dengan menggunakan statement with, pembersihan dilakukan dengan aman bahkan jika terjadi exception.

Gunakan list comprehension dengan tepat

Selanjutnya, mari kita lihat 'menggunakan list comprehension dengan tepat.'.

Proses transformasi sederhana bisa ditulis ringkas dengan list comprehension.

1# Bad example: Verbose loop
2squares = []
3for i in range(10):
4    squares.append(i * i)

Dalam kode ini, proses inti sulit dilihat.

1# Good example: Clear list comprehension
2squares = [i * i for i in range(10)]

Dengan menggunakan list comprehension secara tepat, keterbacaan kode meningkat.

Hindari angka ajaib (magic number)

Selanjutnya, mari kita lihat 'menghindari magic number.'.

Menulis angka dan string secara langsung membuat maknanya tidak jelas.

1# Bad example: magic number
2if status == 404:
3    handle_not_found()

Dalam kode ini, diasumsikan Anda tahu arti dari 404.

1# Good example: named constant
2NOT_FOUND = 404
3
4if status == NOT_FOUND:
5    handle_not_found()

Memberi nama membuat tujuan menjadi jelas.

Tulislah kode yang mudah dipelihara, bukan hanya code yang 'berjalan'

Akhirnya, mari kita lihat 'menulis kode yang mudah dipelihara, bukan hanya kode yang berjalan.'.

Yang penting adalah apakah Anda di masa depan, atau orang lain, dapat membacanya.

1# Bad example: Hard to maintain
2def f(x):
3    return x * 1.08 + 100

Dalam kode ini, spesifikasinya tidak bisa dipahami hanya dari kodenya.

1# Good example: Easy to maintain
2TAX_RATE = 1.08
3BASE_FEE = 100
4
5def calculate_total(price: float) -> float:
6    return price * TAX_RATE + BASE_FEE

Dengan mencerminkan makna dalam nama, kode itu sendiri menjadi spesifikasi.

Ringkasan

Praktik terbaik dalam Python pada dasarnya adalah menulis kode yang mudah dipahami, bukan kode yang canggih namun sulit dipahami. Membangun kebiasaan kecil menghasilkan kode dengan lebih sedikit bug dan dapat digunakan dalam jangka waktu lama.

Anda dapat mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Silakan periksa juga saluran YouTube kami.

YouTube Video