Sobes.tech
Junior

Na čo sa používajú pomenované parametre vo funkciách a konštruktoroch?

sobes.tech AI

Odpoveď od AI

Meno parametre v funkciách a konštruktoch Dart/Flutter riešia niekoľko úloh:

  1. Zvýšenie čitateľnosti kódu: Meno parametrov jasne uvádza ich účel pri volaní. To je obzvlášť užitočné, keď má funkcia alebo konštruktor veľa argumentov rovnakého typu.

    // Bez pomenovaných parametrov, nie je ihneď jasné, čo znamenajú 1.0 a 5.0
    Widget buildContainer(1.0, 5.0, Colors.blue);
    
    // S pomenovanými parametrami je určenie argumentov zrejmé
    Widget buildContainer({double? padding, double? margin, Color? color});
    Widget container = buildContainer(padding: 1.0, margin: 5.0, color: Colors.blue);
    
  2. Zabezpečenie flexibility volania: Umožňujú volať funkcie alebo konštruktory s odovzdaním iba tých parametrov, ktoré sú potrebné, pričom ostatné ignorujú, ak nie sú povinné (s použitím required alebo predvolených hodnôt).

    // Volanie s odovzdaním iba potrebných parametrov
    Widget container = buildContainer(color: Colors.red);
    
  3. Prevencia chýb v poradí argumentov: Keďže parametre sú uvádzané podľa mena, ich poradie pri volaní nie je dôležité, čo zabraňuje chybám spôsobeným nesprávnym poradím odovzdávania argumentov.

    // Poradie pomenovaných parametrov nie je dôležité
    Widget container1 = buildContainer(padding: 1.0, color: Colors.blue);
    Widget container2 = buildContainer(color: Colors.blue, padding: 1.0); // Ekvivalentne
    
  4. Zlepšenie podpory kódu: Pomenované parametre uľahčujú pridávanie nových nepovinných parametrov v budúcich verziách funkcie alebo triedy bez nutnosti meniť existujúce volania.

V Flutter väčšina widgetov používa pomenované parametre, čo robí ich API intuitívnejším a flexibilnejším.

Sú deklarované v zložených zátvorkách {} v zozname parametrov funkcie alebo konštruktora. Povinné pomenované parametre sú označené kľúčovým slovom required.

// Povinný pomenovaný parameter
void printRequiredName({required String name}) {
  print(name);
}

// Nepovinný pomenovaný parameter s predvolenou hodnotou
void printOptionalAge({int age = 30}) {
  print(age);
}