There is an official JEP 359: Records (preview) that proposes to introduce "Records", i.e. pure data structures into Java. With it, Java continues to follow other contemporary languages into the territory of "multi-paradigm" programming. This article explores what this change means for object-orientation, Java development and our industry in general. Old Name Old Feature First … Continue reading Java Records: Making Bad Designs More Convenient
Data Boundaries are the root cause of Maintenance Problems
Many designs and patterns old and new, like the Layered Architecture, the Clean Architecture, the Hexagonal Architecture, DCI and others introduce data-oriented boundaries inside the application. Data-oriented boundaries are interfaces between architectural parts that primarily consist of data in the form of "properties" that can be freely accessed either directly, through getter methods, through reflection … Continue reading Data Boundaries are the root cause of Maintenance Problems
Reevaluating the Layered Architecture
The Layered Architecture (3-tiered, n-tier or multitier architecture) is one of the most known and used concepts in Enterprise Development. It is the de-facto standard for building applications, so much so that it would be hard to find a single application in the enterprise software realm that does not conform to it. Many things changed … Continue reading Reevaluating the Layered Architecture
(Video, German) Object-Oriented Domain-Driven Design Talk
Why I never null-check parameters
Writing code to make sure that input parameters are not null does not make Java code "safer", exactly the opposite, it makes code less readable and less safe. Code with null-checks is less readable It would be difficult to argue that null-checks are attractive. Most of the time it's just boilerplate code which contributes nothing … Continue reading Why I never null-check parameters
Happy Packaging!
Creating packages, assigning classes to packages and creating a package hierarchy is usually not a top priority in software designs. This however presents a missed opportunity to make your design more readable and maintainable. This article helps you take your Java Class packaging skills to the next level, not just for the holiday season. Packages … Continue reading Happy Packaging!
5 Signs That Your REST API Isn’t RESTful
(This article is a repost of an article previously published on DZone) There is no doubt that the term REST has undergone significant changes since its inception by Roy Fielding. There was some resistance to this change, most notably from Mr. Fielding in his Untangled Blog. However, all those participating in this resistance have had … Continue reading 5 Signs That Your REST API Isn’t RESTful
Screaming Architect
Having nothing better to do on a rainy Sunday afternoon, I though I would catch up with the CleanCode CaseStudy Project, see how it's structured and what its connection to Clean Architecture and other concepts from Uncle Bob is. Here is what I found... Let's see the Code After cloning the project from github, the … Continue reading Screaming Architect
Transcending the Limitations of the Human Mind
No, this post is not about mind altering substances, rather it is about how to deal with complexity in general and in software development in particular. All but the simplest problems that we face in software development exceed the capacity of our minds. Our short term memory can barely hold 7-8 items on a good … Continue reading Transcending the Limitations of the Human Mind
The Clean Architecture from an Object-Oriented perspective
The Clean Architecture is a new-ish architecture pattern promoted by Robert C. Martin, better known as Uncle Bob. Uncle Bob's name is probably familiar to anyone who has done any software development in the last decades, from his books like Clean Code, to the SOLID principles, both used and referred to by developers all over … Continue reading The Clean Architecture from an Object-Oriented perspective