News for hackers. Stuff that matters.
Re:Goodbye, Clean Code by kazinator on Sunday January 12, 2020 @12:43PM (#22027668)
The repetition is what is YAGNI!

Repeating code 7 times in preparation for separate evolution of those 7 cases is YAGNI, unless the requirements are on the table now.

Merging repeated code into one is something that is demonstrably needed now, not later.

Re:Goodbye, Clean Code by jfengel on Monday January 13, 2020 @12:33PM (#22036553)
It's not so much that you're preparing for 7 separate cases, as a thing that works in one place and almost, but not quite, fits in 6 others. You rarely exactly duplicate code, but often duplicate and modify.

By the time you hit 7, you do clearly Need It. But now you've got 7 cases to work from in writing the generalization. When the number is 2, it's often reasonable to say, "I don't know how these will evolve and I'll probably guess wrong".

Re:Goodbye, Clean Code by dkersten on Sunday January 12, 2020 @05:38PM (#22030105)
Yes, I agree. That’s not what I was replying to, though. I noted in another comment that I consider merging worthwhile even in the absence of three use cases, certainly if what you have now is very similar.
Re:Goodbye, Clean Code by scarface74 on Tuesday January 14, 2020 @10:18AM (#22045478)
If all seven are the same except for one or two cases, it doesn’t mean that you have to have a bunch of if statements, you either use inheritance or composition to create special cases and judiciously apply “pull members up” and “push members down” refactoring, interfaces, abstract classes, virtual methods, etc. These are all solved problems.

Yes I know about the whole “a square is not a rectangle problem”.