Junior
Šta, po tvom mišljenju, znači pisanje kvalitetnog koda?
sobes.tech АИ
Одговор од АИ
Čistoća, čitljivost, održivost, skalabilnost i usklađenost sa zahtevima.
Glavni aspekti:
-
Čistoća i čitljivost:
- Korišćenje razumljivih, deskriptivnih imena promenljivih, funkcija, klasa.
- Poštovanje jedinstvenog stila kodiranja (vodič za stil kodiranja).
- Odgovarajuće formatiranje koda (uvuci, razmaci).
- Uklanjanje dupliranja koda (DRY - Don't Repeat Yourself).
- Postojanje razumljivih komentara za nejasne delove koda.
-
Održljivost:
- Lakoća pravljenja promena i ispravljanja grešaka.
- Modularnost: razdvajanje funkcionalnosti na manje, nezavisne blokove.
- Niska povezanost (low coupling) i visoka kohezija (high cohesion).
- Postojanje automatizovanih testova (jedinični, integracioni, end-to-end).
-
Skalabilnost:
- Sposobnost sistema da obrađuje rastući obim podataka ili opterećenja bez značajnog pogoršanja performansi.
- Efikasno korišćenje resursa.
-
Usklađenost sa zahtevima:
- Kod pravilno implementira poslovnu logiku i funkcionalne zahteve.
- Nedostatak kritičnih bagova i ranjivosti.
Primer strukture kvalitetnog testa na Python-u:
# 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():
# Test slučaj za uspešno kreiranje korisnika
username = "test_user"
email = "test@example.com"
# Akcija: Kreiranje korisnika
new_user = create_user(username, email)
# Potvrda 1: Provera da li je objekat korisnika kreiran
assert isinstance(new_user, User)
# Potvrda 2: Provera da li je korisničko ime tačno
assert new_user.username == username
# Potvrda 3: Provera da li je email tačan
assert new_user.email == email
def test_user_creation_duplicate_username():
# Test slučaj za neuspeh zbog duplog korisničkog imena
username = "existing_user"
email = "another@example.com"
# Preuslov: Kreiranje postojećeg korisnika
create_user(username, "existing@example.com")
# Akcija i potvrda: Pokušaj kreiranja korisnika sa duplim korisničkim imenom i očekivanje izuzetka
with pytest.raises(ValueError, match="Username already exists"):
create_user(username, email)
# ... ostali test slučajevi ...