I do diagram my code, but I agree it's pointless to go back and keep the chart in sync with the code once you've written it. The better way is to enshrine the intent of the diagram in automated tests.
I personally follow the method in Reliable Software to plan out my code. It keeps your code neat and clean from the very beginning.
https://archive.org/details/myers-reliable-software-through-composite-design/page/n1/mode/1up