1,375 lesings
1,375 lesings

Hier is wat jou KI-gegenereerde kode vir jou nie vertel nie

deur Tirtha Sarker5m2025/03/26
Read on Terminal Reader

Te lank; Om te lees

KI-aangedrewe IDE's verander hoe ons kodeer. Maar daar is 'n tegniese realiteit wat ons moet aanspreek: KI versnel nie net kodering nie - dit versnel ook foute.
featured image - Hier is wat jou KI-gegenereerde kode vir jou nie vertel nie
Tirtha Sarker HackerNoon profile picture
0-item


KI-aangedrewe IDE's verander hoe ons kodeer - vinniger ontwikkeling, minder ketelhoofpyne en onmiddellike voorstelle. Maar daar is 'n tegniese realiteit wat ons moet aanspreek:


KI versnel nie net kodering nie - dit versnel ook foute . 💥


Nadat ek met Cursor, Copilot en Windsurf in verskillende omgewings gewerk het, het ek opgemerk KI produseer nie tipies "verkeerde" kode nie. In plaas daarvan genereer dit tegnies korrekte oplossings wat belangrike sakekonteks en domeinkennis mis.

Hier is wat AI-koderingsassistente gewoonlik verkeerd maak:

1. KI stel subtiele, moeilik-opspoorbare prestasiekwessies bekend

❌ KI-voorstel: Lyk doeltreffend, maar het 'n subtiele N+1-navraagprobleem


 const getUsersWithOrders = async (): Promise<UserWithOrders[]> => { // Fetch all users - seems reasonable const users = await prisma.user.findMany({ where: { status: 'ACTIVE' } }); // For each user, get their orders - the subtle N+1 query issue const usersWithOrders = await Promise.all( users.map(async (user) => { const orders = await prisma.order.findMany({ where: { userId: user.id }, orderBy: { createdAt: 'desc' }, take: 5 // Just get recent orders }); return { ...user, orders }; }) ); return usersWithOrders; };

✅ Beter oplossing: Enkel doeltreffende navraag met behoorlike verhoudings

 const getUsersWithOrders = async (): Promise<UserWithOrders[]> => { // One efficient query with proper inclusion of related data const users = await prisma.user.findMany({ where: { status: 'ACTIVE' }, include: { orders: { orderBy: { createdAt: 'desc' }, take: 5, } } }); // Server-side data transformation if needed return users.map(user => ({ ...user, orders: user.orders, // Transform any data if required totalSpent: user.orders.reduce((sum, order) => sum + order.total, 0) })); };

2. KI mis kontekstuele beperkings wanneer dit met bestaande kodebasisse geïntegreer word

 interface User { id: string; name: string; email: string; } const getUserDetails = async (userId: string): Promise<User> => { const response = await fetch(`/api/users/${userId}`); if (!response.ok) throw new Error('Failed to fetch user'); return await response.json(); };

✅ Beter oplossing: Volg gevestigde toepassingspatrone

 import { ApiService } from '@/services/api'; import { User } from '@/types/user'; import { handleApiError } from '@/utils/error-handling'; export const getUserDetails = async (userId: string): Promise<User> => { try { return await ApiService.get<User>(`users/${userId}`); } catch (error) { return handleApiError(error, 'Failed to fetch user details'); } };

3. KI maak redelike aannames, maar mis domeinspesifieke vereistes

❌ KI-voorstel: Tegnies korrekte afslagberekening

 const calculateDiscount = (price: number, discountPercent: number): number => { const discountAmount = price * (discountPercent / 100); return price - discountAmount; };

✅ Beter oplossing: sluit besigheidsreëls en formatering in

 const calculateDiscount = (price: number, discountPercent: number): number => { // Company policy: Maximum discount is 40% unless approved const effectiveDiscount = Math.min(discountPercent, 40); // Business rule: Discounts are calculated after tax in our system const priceWithTax = addTax(price); const discountAmount = priceWithTax * (effectiveDiscount / 100); // Format to company standard: always round to nearest cent return Number((priceWithTax - discountAmount).toFixed(2)); };

🚀 Die Waarheid? KI skryf nie slegte kode nie - dit kan net nie jou gedagtes lees nie

Die patroon is duidelik: KI blink uit in die generering van sintakties korrekte, algoritmies gesonde kode. Wat dit konsekwent mis, is:

  1. Besigheidskonteks en domeinreëls - dit kan nie jou spesifieke maatskappybeleid ken nie
  2. Projek-spesifieke konvensies - dit het 'n beperkte begrip van jou kodebasis se patrone
  3. Argitektoniese implikasies - dit fokus op die funksie wat voorhande is, nie die stelsel as geheel nie
  4. Werkverrigting op skaal - optimalisering wat saak maak in produksie-omgewings

✅ Hoe om KI-nutsmiddels effektief te gebruik

1. Reserveer KI vir boilerplate, maar hersien integrasiepunte noukeurig - KI blink uit daarin om herhalende patrone te genereer, maar mis dikwels hoe komponente in groter stelsels aansluit.

2. Skep presiese opdragte met konteks

  • 🚫 "Genereer 'n TypeScript React-haak om data te haal"
  • "Genereer 'n TypeScript React-haak vir data-ophaal wat ons bestaande fouthanteringspatroon volg, opruiming by ontkoppel insluit en verouderde versoeke hanteer"

3. Verifieer dat randgevalle AI dalk mis.


 describe('calculateDiscount', () => { it('correctly calculates a 20% discount on $100', () => { expect(calculateDiscount(100, 20)).toBe(80); }); it('handles zero price', () => { expect(calculateDiscount(0, 15)).toBe(0); }); it('handles zero discount', () => { expect(calculateDiscount(50, 0)).toBe(50); }); it('handles decimal precision correctly', () => { expect(calculateDiscount(9.99, 10)).toBe(8.99); }); it('rejects negative prices', () => { expect(() => calculateDiscount(-10, 20)).toThrow(); }); it('rejects invalid discount percentages', () => { expect(() => calculateDiscount(100, 101)).toThrow(); expect(() => calculateDiscount(100, -5)).toThrow(); }); });


Dit is nie "foute" in die tradisionele sin nie, maar eerder 'n fundamentele beperking: KI kan nie jou besigheidsdomein, maatskappystandaarde of die volle konteks van jou toepassingsargitektuur verstaan soos 'n ervare spanlid dit kan verstaan nie.


🚀 Bottom Line? KI is 'n kragtige instrument, maar dit is nie jou CTO nie. Dink krities. Hersien aggressief. Kode slim.


📢 "The Engineer's Log" is waar ons die wêreld van AI, Web3 en sagteware-ingenieurswese dekodeer - sonder die BS. Teken in vir diep duikslae, beste koderingspraktyke en werklike ontfoutingstories.

🛠 Sluit aan by die nuusbrief → Die Ingenieurslogboek

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks