Názor k článku
NSA nabádá organizace, aby používaly jazyky, které bezpečně pracují s pamětí od MarSik - Aha, teď už chápu o co Vám jde. Část...

  • Článek je starý, nové názory již nelze přidávat.
  • 14. 11. 2022 19:18

    MarSik

    Aha, teď už chápu o co Vám jde.

    Část toho je vlastně Return early styl (třeba tady https://medium.com/swlh/return-early-pattern-3d18a41bba8).

    A dál je to rozšířené na to, aby to bylo vizuálně jednotné a ve sloupcích. To by v Rustu šlo (tuply vracet umí), ale asi ne s pomocí Result.

    Asi už chápu i jednu Calculonovu poznámku ohledně bolerplate, protože předpokládám, že myslel něco jako:

    let happy = match func() {
      Err(IOError(e)) => { ... }
      Err(NetworkError(e)) => { ... }
      Ok(v) => v // boilerplate
    }
    
    happy.do_something_happy()

    Ale možná že ekvivalentem v Rustu je něco jako:

    let f = fce().or_else(|err| match err {
      IOError(e) => { Ok(fallback_value) }
      NetworkError(e) => { Err(FatalError(e)) }
    })?
    
    // otazník umožní skončit na fatální chybě
    // nebo pokračovat s fallbackem
    
    happy(f)

    Takový kód dodrží pravidla pro odsazení errorů, neodsazení happy path a je tam minimum boilerplate. Místo if f, err = ...;err != nil { je .or_else(|err| )? což není moc rozdíl.