Software changes over time. Your company’s web site this year does things you had no idea you needed two years ago. How can we keep the cost of change manageable?
Automated testing is one way. Especially for large software projects, the practice of automated testing can dramatically reduce the cost of adapting software to new business necessities.
Continue reading “The Benefits of Automated Testing”
There are entire books written on testing. And it surely feels more an art than a science. My approach is similar to Kent Beck’s:
I get paid for code that works, not for tests, so my philosophy is to test as little as possible to reach a given level of confidence (I suspect this level of confidence is high compared to industry standards, but that could just be hubris). If I don’t typically make a kind of mistake (like setting the wrong variables in a constructor), I don’t test for it. I do tend to make sense of test errors, so I’m extra careful when I have logic with complicated conditionals. When coding on a team, I modify my strategy to carefully test code that we, collectively, tend to get wrong.https://stackoverflow.com/a/153565/1015566
He goes on to add that different people will have different strategies and, at the end of the day, you just have to do what works best for you and your team. Extremely practical, and the approach I personally follow.
This won’t be a detailed post on every possible topic on tests and testing in Object-oriented Programming (OOP). There are many books about that already. Instead, this article will cover the basics of testing, so you understand how and why we test, and you can adapt it to your own needs.
Continue reading “OOP Fundamentals: Quick and Dirty Guide to Testing”
The decorator pattern is one of my favorite patterns. It is simple, extensible and powerful. It feels like it follows the essence of object oriented programming beautifully. Sadly though, it is also easy to be misused or misunderstood. So, in this post I will show you the essence of the decorator pattern, illustrated with a few examples.
Continue reading “OOP Fundamentals: The Decorator Pattern”
The dependency inversion principle is one of the cornerstones of object-oriented programming. Without it, there is no object-oriented design. It’s that important.
Continue reading “OOP Fundamentals: The Dependency Inversion Principle”
If you are into object-oriented programming, you most likely have heard about composition over inheritance. The concept itself is simple: Whenever possible, prefer to compose objects rather than introducing inheritance.
Using the FileMaker platform we can harness the power and wow-factor of modern web interfaces. This post shows how we can build dynamic data-entry forms for use in our apps.
Over years of reviewing Ruby code, the same things tend to come up over and over. In this post, I’d like to address some of the most common code smells I find when reviewing OOP code (and Ruby code in particular).
Continue reading “Common Code Smells in OOP”
Continue reading “bBox for FileMaker v0.95 Now Available”
Continue reading “bBox for FileMaker v0.93 Now Available”
As developers, we are tasked with reducing complexity. Complexity is all around us, and good code organization reduces complexity while at the same time supporting increased flexibility, ease of change, quicker onboarding, faster debugging, and my favorite, better testing.
Continue reading “Apple Maps in FileMaker With MapKit JS”
Continue reading “bBox for FileMaker v0.90 Now Available”
We recently built an application that included PDF document management. While it might seem as simple as a quick FileMaker container field, we wanted to impress our client with an integrated solution on par with a content management system (CMS). Here’s how we built a powerful PDF viewer directly into FileMaker.
Continue reading “Full-Featured PDF Viewer Embedded in FileMaker”