#DesignByContract

Patrick Marchandmathuin@bsd.network
2024-04-11

I've been thinking about #programming languages and types this morning.

Especially about the fallacy of trusting languages like #typescript on the actual shape of the data. I mean all your type annotations and etc still leave you very vulnerable to malformed data / errors during runtime and you end up having to add runtime validation anyways. My current conclusion is that #DesignByContract might be a better avenue for adding input / output verification to a dynamic language like #python or js.

I wonder where we'd be if all the money and time that has gone into typescript had gone into making contracts a viable tool in #javascript

Wikipedia has more info on design-by-contract: en.wikipedia.org/wiki/Design_b

Including links to some projects that aim to add contracts to javascript.

Felix πŸ‡ΊπŸ‡¦πŸš΄β€β™‚οΈπŸ‡¨πŸ‡¦πŸ‡¬πŸ‡±πŸ‡©πŸ‡°πŸ‡²πŸ‡½πŸ‡΅πŸ‡¦ πŸ‡ͺπŸ‡Ίleobm@norden.social
2023-08-10

"Was tut ein korrektes Programm? Eines, das nicht mehr und nicht weniger tut als das, was es zu tun behauptet" #DesignByContract

2023-05-15

@screwtape The solution is #DesignByContract.

If the function changes, probably so do the precondition & postcondition checks, so the test will fail very quickly.

2023-02-16

@mfowler And not incidentally, #DesignByContract is a real thing in #SoftwareEngineering

en.wikipedia.org/wiki/Design_b

Not only Bruce Schneier, but also Bertrand Meyer got that right.

#DBC

2023-02-16

@dekkzz76 @AmenZwa It's important to note that the majority of the problem is due to profit incentive and little else.

A low-regulation engineering field where for-profit actors have incentives to cut costs at every single corner they can. It's hard to imagine it ending any other way.

Also you can use unit tests to exercise a full #DesignByContract implementation too. #StaticVerification is not the only way to ensure a system is behaving correctly (and physical interference suggests it can't).

2022-12-07

@serizawa Object-Oriented Software Construction by Bertrand Meyer. For a limited time free here:
bertrandmeyer.com/OOSC2/
The standard work on #DesignByContract #DbC

2022-12-04

#DesignByContract literally saved my butt during my final PhD phase. Simulation results (for a waveguide) were not as expected for our novel method. I was pretty sure my code was correct because of #DbC. Dug deeper and found a relatively obscure theorem on integral representations I needed to apply. Applied the new math, and presto. Without confidence in my code, I would have probably abandoned the method and possibly the whole project.

2022-12-04

If you're serious about #objectOriented programming, try to use #DesignByContract to the fullest extent your language supports it. Your future debugging self will thank you. At the very least, liberally use #assertions throughout your code to state what should be true at any given point in your code.

en.wikipedia.org/wiki/Design_b

#dbc #SoftwareEngineering

2022-11-10

@xphentom Well, for one, you're missing regression tests. But more importantly, all of these, especially integration and unit tests will be greatly enhanced using #DesignByContract

en.wikipedia.org/wiki/Design_b

#SoftwareEngineering #DesignByContract

2022-09-09

@DeveloperMemes
Turn to #eiffel. No #curlybraces or indentation. Just do end. Or if then else end. Or from until (variant invariant) loop end. Plus you gain #DesignByContract in the best ad purest breed 😜

2021-05-19

@DeveloperMemes
Un errore così è capitato a mia figlia quando ha fatto le simulazioni per le prove #invalsi . Non vi racconto la crisi di nervi: dover spiegare ad una tredicenne che l'errore di uno sconosciuto programmatore veniva considerato errore suo. Il #DesignByContract, questo sconosciuto!

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst