Skip to main content

Zapachy kodu generowanego przez AI

DLA AGENTÓW AIChatGPTClaude

Typowe antywzorce i wskaźniki syntetycznego kodu (\"zapachy kodu\" od AI). Nadmiarowe, oczywiste komentarze, duplikowanie narzędzi pomocniczych w każdym pliku, fikcyjne mocki oraz bezsensowne bloki try-catch, które ujawniają niezweryfikowaną generację.

1. Przegląd koncepcji i przeznaczenia

Każdy doświadczony Senior Engineer podczas rozmowy kwalifikacyjnej lub audytu repozytorium jest w stanie w ciągu 5 sekund stwierdzić: „Ten kod napisała osoba, która rozumie, co robi, a ten został po prostu ślepo skopiowany z chatbota bez żadnego code review”.

Sztuczna inteligencja generuje kod szybko, ale posiada specyficzne nawyki oraz „szkodliwe przyzwyczajenia”, które w branży określa się mianem AI Code Smells.

Znajomość tych markerów jest niezbędna dla każdego początkującego: pomoże Ci na bieżąco oczyszczać projekt ze syntetycznych śmieci i sprawiać wrażenie profesjonalnego developera w oczach kolegów oraz klientów.

2. Główne markery kodu wygenerowanego przez modele AI

┌─────────────────────────────────────────────────────────────┐
│                 TOP-4 MARKERY „AI CODE SMELLS”              │
├─────────────────────────────────────────────────────────────┤
│ 1. 📢 Banalne komentarze typu „kapitan oczywisty”:         │
│    // Przypisujemy wartość do zmiennej a                   │
│    const a = 10; // To jest liczba dziesięć                │
├─────────────────────────────────────────────────────────────┤
│ 2. 🖨️ Duplikowanie funkcji pomocniczych w każdym pliku:     │
│    Zamiast importować wspólną funkcję `formatDate()` AI     │
│    kopiuje tę samą 15-wierszową funkcję w 7 różnych        │
│    komponentach                                            │
├─────────────────────────────────────────────────────────────┤
│ 3. 🙈 Puste bloki obsługi błędów (catch):                   │
│    try { doSomething(); } catch (e) { /* nic nie robimy */ │
│    (Błąd występuje, ale nigdy się o nim nie dowiesz)       │
├─────────────────────────────────────────────────────────────┤
│ 4. 🤹 Nadmierne komplikowanie prostych rzeczy:              │
│    Tworzenie 3 klas, fabryki i interfejsu dla jednej       │
│    operacji matematycznej dodawania dwóch liczb             │
└─────────────────────────────────────────────────────────────┘

3. Jak przekształcić syntetyczny kod w profesjonalny

Porównaj dwa fragmenty kodu:

❌ Przed (Typowe surowe wyjście AI):

// Функція, яка перевіряє користувача
function checkUser(user: any) {
  try {
    // Якщо користувач існує
    if (user != null) {
      // Повертаємо істину
      return true;
    }
  } catch (err) {
    console.log("Помилка");
  }
  return false;
}

✅ Po (Oczyszczony kod inżynierski):

export function isUserActive(user: User | null): boolean {
  return Boolean(user?.isActive);
}

4. Checklista czyszczenia projektu przed releasem

  • Usuń wszystkie oczywiste komentarze, które powtarzają to, co już wynika z nazwy zmiennej.
  • Sprawdź typy: zamień wszystkie niedbałe any na konkretne typy TypeScript.
  • Wydziel powtarzalne fragmenty kodu do osobnych folderów src/lib lub src/utils.
  • Upewnij się, że wszystkie komunikaty o błędach są faktycznie logowane, a nie ukrywane w pustych blokach catch.
/ Najczęściej zadawane pytaniaSchema.org FAQPage

FAQ: Zapachy kodu generowanego przez AI

Nie musi to być błąd, który natychmiast psuje działanie programu. To wskaźnik złej architektury lub niedbałości, sugerujący, że kod został napisany pospiesznie i w przyszłości z pewnością spowoduje wiele błędów podczas rozwoju projektu.
/ Linki wewnętrzne
Wszystkie hasła