Junior
Ko, tavuprāt, nozīmē rakstīt kvalitatīvu kodu?
sobes.tech AI
Atbilde no AI
Tīrība, lasāmība, uzturējamība, mērogojamība un atbilstība prasībām.
Galvenie aspekti:
-
Tīrība un lasāmība:
- Izmantot saprotamus, aprakstošus mainīgo, funkciju un klases nosaukumus.
- Sekot vienotam koda stila vadlīnijām.
- Atbilstoša koda formatēšana (rindkopas, atstarpes).
- Koda dublēšanās novēršana (DRY - Don't Repeat Yourself).
- Saprotami komentāri neskaidriem koda fragmentiem.
-
Uzturējamība:
- Viegls izmaiņu veikšana un kļūdu labošana.
- Moduļu struktūra: funkcionalitātes sadalīšana mazākos, neatkarīgos blokos.
- Zema saistība (low coupling) un augsta kohēzija (high cohesion).
- Automatizēti testi (vienību, integrācijas, galapunkta).
-
Mērogojamība:
- Sistēmas spēja apstrādāt pieaugošu datu apjomu vai slodzi bez būtiska veiktspējas krituma.
- Resursu efektīva izmantošana.
-
Atbilstība prasībām:
- Kods pareizi īsteno biznesa loģiku un funkcionālos prasības.
- Nav kritisku kļūdu un ievainojamību.
Kvalitatīva testa Python struktūras piemērs:
# filename: test_user_creation.py
import pytest
from my_application.models import User
from my_application.services import create_user
def test_user_creation_successful():
# Veiksmīga lietotāja izveides tests
username = "test_user"
email = "test@example.com"
# Darbība: lietotāja izveide
new_user = create_user(username, email)
# Apstiprinājums 1: Pārbaudīt, vai lietotāja objekts ir izveidots
assert isinstance(new_user, User)
# Apstiprinājums 2: Pārbaudīt, vai lietotāja vārds ir pareizs
assert new_user.username == username
# Apstiprinājums 3: Pārbaudīt, vai e-pasts ir pareizs
assert new_user.email == email
def test_user_creation_duplicate_username():
# Dublējoša lietotāja vārda tests
username = "existing_user"
email = "another@example.com"
# Iepriekšējs nosacījums: izveidot esošu lietotāju
create_user(username, "existing@example.com")
# Darbība un apstiprinājums: mēģinājums izveidot lietotāju ar dublētu vārdu un sagaidāma izņēmuma izsaukšana
with pytest.raises(ValueError, match="Username already exists"):
create_user(username, email)
# ... citi testi ...