Sudah sekitar 3 tahun ini saya menggunakan Visual Studio Code (VSCode) untuk ngoding kerjaan atau hobi sehari-hari.
Alasan utama saya pindah dari kode editor Vim ke VSCode adalah karena PC saya menggunakan Windows 10. Jadi saya harus pakai kode editor yang bisa dipakai di laptop kantor (macOS) dan PC pribadi (Windows 10) 😆
Selain itu, fitur-fitur VSCode seperti Visual Studio Code Server juga sangat membantu untuk mempermudah pekerjaan saya 👍
Bahasa pemograman yang sering saya gunakan saat ini adalah Python.
Untuk itu, di artikel ini saya coba berbagi sedikit tips untuk mengkonfigurasi VSCode agar temen-temen disini nyaman saat ngoding Python.
Setelah mengikuti konfigurasi ini, kamu akan bisa:
- Mengaktifkan fitur IntelliSense di Python
- Integrasi Virtual Environment
- Integrasi Black untuk Python Code Formatter
- Integrasi MyPy untuk Python Static Type Checker
- Integrasi Pylint untuk Python Code Linter
Nanti kalau ada kesulitan langsung komen di bawah yah!
Ekstensi Python di VSCode
Langkah awal yang harus dilakukan adalah kita harus install ekstensi Python dulu.
Untuk install ekstensi Python di VSCode, berikut langkah-langkahnya:
- Buka VSCode
- Lalu tekan tombol
CTRL + SHIFT + X
secara bersamaan untuk membuka Extension Marketplace - Cari ekstensi Python dengan kata kunci
python
- Lalu klik Install pada eksensi Python yang dibuat oleh Microsoft.
Berikut tampilan setelah ekstensi Python berhasil ter-install:
Fitur IntelliSense di VSCode akan aktif secara otomatis.
Oke, langkah berikutnya adalah mengkonfigurasi ekstensi Python.
Konfigurasi Ekstensi Python
Untuk memulai konfigurasi VSCode, Klik File > Preferences > Settings.
Pada menu Settings, pilih tab Workspace lalu klik Open Settings as JSON di pojok kanan atas:
Ini akan otomatis membuat file baru .vscode/settings.json
.
Atau, file konfigurasinya bisa kita buat secara manual melalui Terminal dengan perintah berikut:
$ mkdir .vscode
$ touch .vscode/settings.json
Nanti semua konfigurasinya akan kita simpan di dalam file .vscode/settings.json
.
Integrasi Virtual Environment
Setiap project yang saya handle di kumparan, saya selalu menggunakan virtual environment untuk menyimpan dependencies-nya.
Dalam setiap direktori utama bisa run ini untuk membuat virtualenv
baru:
$ python -m venv venv
dan untuk mengaktifkannya tinggal jalanin perintah ini:
$ source venv/bin/activate
(venv) $
Untuk integrasi virtual environment ke VSCode caranya mudah banget, tambahkan konfigurasi berikut ke dalam .vscode/settings.json
.
{
"python.pythonPath": "venv/bin/python"
}
Rubah "venv"
sesuai nama folder virtualenv yang kamu buat.
Dengan konfigurasi ini, VSCode akan menggunakan interpreter Python yang sudah kita tentukan beserta semua dependencies yang tersimpan dalam virtual environment tersebut.
Perapihan Kode Secara Otomatis
Kerapihan kode yang ditulis sangatlah penting untuk project yang dikerjakan oleh lebih dari satu orang. Hal ini untuk mempermudah orang lain memahami dan ikut berkontribusi ke kode yang kita tulis.
Di Python sendiri, ada tools namanya black
yang bisa kita gunakan untuk merapikan kode yang kita tulis secara otomatis.
Install black
ke dalam virtual environment yang sudah kita buat di bagian sebelumnya:
(venv) $ pip install -U black
Lalu untuk melakukan perapihan kode yang ditulis secara otomatis waktu menyimpan file, gunakan konfigurasi berikut:
{
"python.pythonPath": "venv/bin/python",
"editor.formatOnSave": true,
"python.formatting.provider": "black",
"python.formatting.blackArgs": ["--line-length=79"]
}
Dengan konfigurasi ini, semua file dengan ekstensi .py
akan di rapihkan oleh black
saat kita menyimpannya.
Pengecekan Static Typing
Salah satu fitur terbaru Python 3 yang sangat membantu tim saya adalah Static Typing.
Contoh kasusnya seperti ini:
# Versi 1: Fungsi tanpa anotasi tipe data
def generate_url(id):
...
# Versi 2: Fungsi dengan anotasi tipe data
def generate_url(id: int) -> str:
...
Dari dua versi fungsi itu, dengan baca saja tentunya versi yang kedua itu lebih mudah dipahami. Kita tau kalau id
itu sebauh integer, lalu fungsi generate_url
itu outputnya adalah string.
Selain itu, dengan menandai tipe datanya kita akan mencegah bug-bug sebelum fungsi tersebut dijalankan di production.
Misalkan kita menambahkan baris kode seperti ini:
def generate_url(id: int) -> str:
processed_id = id.split(",")
sebelum kodenya kita jalankan atau deploy di production, kita akan sudah dapat peringatan seperti ini di VSCode:
Karena tipe data id
itu integer, maka kita tidak bisa menggunakan fungsi split
pada id
.
Di Python sendiri ada alat namanya mypy untuk membantu kita melakukan hal tersebut.
Install mypy
ke dalam virtual environment yang sudah kita buat di bagian sebelumnya:
(venv) $ pip install -U mypy
Lalu gunakan konfigurasi berikut:
{
"python.pythonPath": "venv/bin/python",
"editor.formatOnSave": true,
"python.formatting.provider": "black",
"python.formatting.blackArgs": ["--line-length=79"],
"python.linting.mypyEnabled": true
}
Pengecekan Best Practice Pada Kode Yang Di Tulis
Satu hal lagi yang ingin saya sampaikan adalah mengenai Best Practice penulisan kode di python. Untuk proyek yang dikerjakan lebih dari satu orang, hal ini sangat penting sekali agar kode yang ditulis oleh lebih dari satu orang itu bisa konsisten.
Contoh best practice: semua variable yang di definisikan harus digunakan.
Tim saya menggunakan pylint untuk memastikan semua kode yang ditulis seudah sesuai dengan best practice.
Untuk integrasi pylint ke VSCode, harus di install dlu pylint nya:
(venv) $ pip install -U pylint
Lalu untuk melakukan perapihan kode yang ditulis secara otomatis waktu menyimpan file, gunakan konfigurasi berikut:
{
"python.pythonPath": "venv/bin/python",
"editor.formatOnSave": true,
"python.formatting.provider": "black",
"python.formatting.blackArgs": ["--line-length=79"],
"python.linting.pylintEnabled": true
}
Dengan konfigurasi ini, semua file dengan ekstensi .py
akan di cek oleh pylint
untuk memastikan semuanya sesuai dengan best practice.
Kesimpulan
Ini konfigurasi VSCode yang saya gunakan:
{
"python.formatting.provider": "black",
"python.formatting.blackArgs": ["--line-length=79"],
"python.pythonPath": "venv/bin/python",
"editor.formatOnSave": true,
"python.linting.mypyEnabled": true,
"python.linting.pylintEnabled": true
}
Jika ada pertanyaan bisa langsung komen disini atau hubungi saya di twitter @bayualsyah.
Discussion
mau bertanya jika nnt menjalankan python pakai pycharm, file json akan bermasalah atau tidak?