• 0 Posts
  • 222 Comments
Joined 2 years ago
cake
Cake day: June 21st, 2023

help-circle












  • There is a book bundle on Humble Bundle right now that goes into security and hacking, if that’s what you’re interested in.

    You’re unlikely to receive any support, at least publicly, for how to do anything potentially illegal. I would recommend just not doing anything illegal or unethical anyway. If you’re interested from a security perspective, find a cybersec community, and you may get more support there.






  • If in PHP or JS I make a change, hit F5, and get an error, that’s not any better than the IDE already showing it beforehand.

    This is even worse because it can happen in prod without you ever triggering this case. For some projects, it doesn’t matter because the impact of a bug is small. For most, you put a subpar, buggy experience in front of your users, waste more time looking for the cause and debugging later with upset users, and at worst cause actual damages (depending on the project anyway).


  • You can’t create a subset of an enum directly, but splitting this up into multiple types works. You can have FunctionAError with errors that function can produce and a variant for your common errors, and FunctionBError which is similar:

    #[derive(Debug, Error)]
    enum MyErrorCommon {
        #[error("bad value ({0})")]
        MyErrorCommon(String),
    }
    
    #[derive(Debug, Error)]
    enum FunctionAError {
        #[error("error a")]
        MyErrorA,
        Common(#[from] MyErrorCommon),
    }
    
    // and same for FunctionBError
    

    The try operator (?) will automatically use From impls to convert errors for you as well. If a function returns a result containing MyErrorCommon in your function and you use ? on it, it gets converted to that function’s error type for you. thiserror generates the From impl for you if you use #[from].


  • TehPers@beehaw.orgtoProgramming@programming.devBaby unit tests
    link
    fedilink
    English
    arrow-up
    13
    arrow-down
    1
    ·
    1 month ago

    Types aren’t unit tests. Unit tests only test a discrete set of inputs and outputs for correctness, and can miss cases that aren’t tested for.

    In sound type systems, they are closer to formal verification. The compiler guarantees the properties you expect of the type hold.

    As for the rest of the article, do what works best for you in your projects, but if I need to work with you, I’m going to ask for types. I need to know what types the interface expects to receive. Names are not enough. Document them, use type hints, whatever, just put them somewhere because I’m not psychic and I don’t know what you thought about when writing the function.