Tools for Taming Tangled Code by Seth Tisue


Seth Tisue has a been a member of the Scala team at Lightbend since 2015. He's been active in the Scala community since 2008. Before joining Lightbend, he was using Scala to build the compiler and other tooling for NetLogo, a programming language for students, teachers, and scientists. At Lightbend, Seth has focused on the build and testing infrastructure around Scala. His interests are compilers and interpreters, functional programming, and open-source software.

Seth discusses his talk below.

"Clean code isn't only well-formatted, it's also well-structured. What is structure? Let's consider one kind of structure: internal dependency structure. "Internal" because this isn't about what libraries you used, it's about what parts of your own code depend on what other parts. If code is poorly structured in this way, then the code is hard to understand, hard to maintain, and hard to break into independent modules or services. Plus, you'll have very long incremental compile times if everything depends, directly or indirectly, on everything else.

How can we avoid this kind of mess, or clean it up after the mess has been made? Tooling can provide automated assistance. I'll give you a tour of tools that can help, including Classycle, Acyclic, and IntelliJ's Dependencies Analysis.

And, I'll show you a tool I helped build at Lightbend. It's called Sculpt and we recently open-sourced it. It leverages the Scala compiler to provide insight into dependency structure as the compiler itself sees it."