With the shift from traditional monolithic applications to the distributed microservices of DevOps, there is a need for a similar change in operational security policies. For…
John Lennon once famously said ‘Imagine there’s no debugging. It’s easy if you try.’ Ok…he didn’t say exactly that, but he would have if he’d tried to do some C# development instead of pop hooks. Then he could empathize with the agony of spending 25% of his day writing code, and the other 75% debugging it. Or trying out a carousel of decompilers after losing his source code. Or realizing that his series of quick-fix coding solutions have created a mountain of technical debt.
Fortunately today you have more productive and automated options for resolving your C# development woes than just sitting down with a guitar and venting your frustrations in song. There are great tools out there to help you spend less time debugging, decompiling, and refactoring source code, and even explaining your craft to less code-savvy coworkers. We’ve parsed the mass of resources into five exceptional plugins, integrations, extensions, and platforms. Some are more reliable and some more trouble than they’re worth. Check them out:
“If debugging is the process of removing bugs, then programming must be the process of putting them in.” – Edsger W. Dijkstra, theoretical computer scientist
The folks at OzCode apparently had Edsger’s quote in mind when they made this diverse debugger. It lets you directly compare multiple objects and collections in a clear side-by-side view, and provides deep search functionality that drastically cuts down the time you spend hunting for specific properties or values. It also gives visual reference points to track where you are in for each loop, among a multitude of other features. It’s unavoidable that you’ll spend a large portion of your time debugging, but it needn’t be soul-crushing or time-consuming.
While most developers use at least their basic IDE built-in static analysis tools, comparatively few integrate additional, more sophisticated static analysis into their workflow. If you have a headache from digging into the minutiae of a large codebase, ndepend can give you a visual, digestible overview of your application’s architecture.
Product highlights include interactive dependency graphs and matrices, in-depth build comparisons, and its marquee feature: live code-query with C# LINQ. Installation takes about 5 minutes and most processes take 5 seconds.
Have a source code crisis? Put your credit card back. For those of you who gravitate toward free, open-source goodies first, JustDecompile is an attractive alternative to commercial decompilers. Aside from the (none) price point, its main differential is speed – reportedly 10 times faster than its peers. The interface is about as simple and easy to use as it gets. There’s also a relatively active community support forum should you get stuck, with posts every few days or so.
Repeatedly postponing cleanup in an effort to meet release deadlines can lead to repetitive and messy code and a level of technical debt that significantly slows down future development. So if you’re staring at a ginormous mess of a source file that needs to be broken up, it might be worthwhile to invest in a refactoring mechanism.
CodeRush for Roslyn distinguishes itself from refactoring alternatives with a super-light memory footprint and speedy performance. Quick Navigation features help you find related code elements, move straight to member declarations based on specified text, and hop back to where you were previously in the code via dropped markers (12).
‘Not Everybody is a Performance Geek.’ This was an understated declaration from Dynatrace about its contribution to AI, the voice/chat/visual APM solution aptly named Davis. Sounds like the perfect butler, right?
Developers are intimately acquainted with complex performance analytics dashboards and mounds of data and code. Their biz colleagues, however, might have little to no experience with development tools. AI can translate the problems you’re facing as a dev, and the actions you’re taking to solve them. It can turn them into a pared-down, automated language accessible to all of a product’s team members. This cuts downtime wasted on communication. It also minimizes those frustrating Biz/Dev encounters that sometimes feel like one of the early aliens-meet-humans scenes from Arrival.