Typing speed matters in programming the same way hammer hits per second matters when building a house. There’s a little bit more to it.
Are people, their critics, really bothered with the writing aspect of verbose code?
Verbose code - and their example shows it quite well - is less concise. To me, their example and reasoning looks more overly verbose, over-engineered rather than well or thoroughly designed and safe.
What makes more sense depends on the context. Where is and will it be used? What is it being exposed to?
A simple data holding class for one “internal” layer to the next can have a very simple form, so it’s easily understood. It may not be safe against misuse or mistakes, but the simplicity and clear use-case and intention much outweighs those costly safeguards to me. For maintainability, for readability, for clarity.
It’s always a balancing act between simplicity and easy understanding vs safeguards and costs. If there’s less risk you can make it much simpler - which reduces other, less obvious risks and costs.
The example made me immediately spot how C# quite a while ago introduced language constructs for what would otherwise be a lot of boilerplate programming like they do in their example.
public record Reservation(DateTimeOffset Date, string Email, string Name, int Quantity, bool IsAccepted);
no need for 78 lines of code with 9 methods.
C# also has the with
keyword for copy-adjusting immutable types.
And required
init
syntax provides another alternative for an effectively immutable type.
public class Reservation
{
public required DateTimeOffset Date { get; init; }
public required string Email { get; init; }
public required string Name { get; init; }
public required int Quantity { get; init; }
public required bool IsAccepted { get; init; }
}
I agree, typing is not a bottleneck, repeating yourself is. All that boilerplate code in the example, shouldn’t have to be written. It’s wasted time.
The curse of OOP (java style…).
I mean why do you need to write getter and setter methods. I have wondered at the beginning of university 10 years ago, and am still wondering why you would need something like that…
You let your ide generate simple getters and setters or utilize something that generates them during a compilation process.
Who ever writes them per hand needs to utilize their tooling better or needs better tooling.
Yeah but why do I have to use an IDE to generate getters and setters in the first place? It just adds up to more mental overhead, because my brain has to process this boilerplate somehow, even if my IDE can generate it (I know it’s simple code, but it’s even simpler to not have that boilerplate code at all).