3 ms·
> No. Exposing primitives like commit or “begin transaction” isn’t bad or irresponsible design; working with databases is ridiculously hard, which becomes appar
by saghm 3mo ago
> No. Exposing primitives like commit or “begin transaction” isn’t bad or irresponsible design; working with databases is ridiculously hard, which becomes apparent when demand increases.
The problem isn't being able to commit. The problem is being able to commit and then not notice that you're no longer in the transaction. You could easily have `begin_transaction` return a `Transaction` object, having operations in the transaction happen on the object, and calling `commit` on it makes it throw an error if you try to use it again after. Maybe the reason that working with databases is "ridiculously hard" because the API isn't well-designed...
- Stitch4223 3mo agoYes, a great API built on a capable database helps in those cases :)
- saghm 3mo agoI don't understand what this has to do with the database being used. There's nothing preventing designing an API for any database with transactions that has the flaw I described, or from using a technique like I described to prevent that flaw. You told me "No" when I pointed out that a responsible API developer would not make an API like that. Now you're shifting to make some unrelated point about the database itself. I feel like you're implicitly assuming that the same people who write the database internals need to be the ones writing the code that provides a high-level client library that will be used by applications that need to interact with the database from the outside, and I don't agree with that premise at all. If anything, the fact that database internals are so complicated to get write is an argument in favor of having separate developers with different specialties, and not just slapping together an API without thinking about it because you're too busy working on the internals.
- Stitch4223 3mo agoAh yes. I read it differently. I agree that this can could be prevented with a decent API and that writing such facility is a challenge on it’s own. It would have helped the developers in the article to write better code as a result.
- saghm 3mo agoFair enough; I did initially mention the API specifically as the issue, but it's also probably obvious by now that I have pretty strong opinions about API design as worthy of its own consideration, so it's possible I might have mistakenly assumed it was more clear what I was talking about for people who don't focus on it as much as I do