News for hackers. Stuff that matters.
Re:The controller pattern is awful (and other OO heresy) by wizofaus on Monday July 10, 2023 @04:42PM (#36672660)
You've never seen Java (or C#) code where a bunch of unrelated functions belong to some meaningless class like "Utility"?

I do think both languages would benefit from allowing/ encouraging namespace-level functions (C# comes close with static classes but that's pretty clearly an abuse of any logical definition of the word "class"). However I probably wouldn't use them for implementing "controllers" in web applications - while I tend to agree it's not a good use of OOP, having key information about the current request/response available via properties of the current controller (and hence kept separate from function-level parameters that represent semantics specific to the endpoint being handled) plus various built-in functionality at the framework-supplied "controller" level isn't something I'd see a benefit in giving up. But I'll admit there's few cases where a single controller class with methods for various CRUD like operations on a particular resource type makes much sense from an OOP perspective. I did think for C# what might actually work is to be able to define extension methods on the framework Controller class and have an automatic routing mechanism based on convention (e.g. if you defined an extension function "Get_Widget" then GET requests to /widgets would be automatically routed to it. Or it could be based on the namespace). But in general it would likely make the code more verbose (lack of implicit "this") for questionable gain.

Re:The controller pattern is awful (and other OO heresy) by jayd16 on Monday July 10, 2023 @06:46PM (#36674041)
> You've never seen Java (or C#) code where a bunch of unrelated functions belong to some meaningless class like "Utility"?

Is that worse than the global scope as the dumping ground?

One other benefit of forcing classes is that there's a logical place for private functions and fields. Private state is an anti-pattern to some but it's more consistent design for Java, I think.

Re:The controller pattern is awful (and other OO heresy) by wizofaus on Monday July 10, 2023 @07:23PM (#36674412)
> Is that worse than the global scope as the dumping ground?

I wouldn't have a problem with requiring everything to at least be in a namespace, though it needn't be enforced at the language level (vs a linter rule).

Re:The controller pattern is awful (and other OO heresy) by BeefWellington on Monday July 10, 2023 @10:45PM (#36675847)
> You've never seen Java (or C#) code where a bunch of unrelated functions belong to some meaningless class like "Utility"?

I guess I don't see the problem here; what's wrong with this idea?

I've seen people claim "It's not OOP" but without any ability to explain why and I'd love to see the practical difference.

Re:The controller pattern is awful (and other OO heresy) by wizofaus on Tuesday July 11, 2023 @12:33AM (#36676448)
I don't have any problem with it not being OOP, but I do have a problem with the abuse of the concept of a "class". I also think it's rarely the ideal way to organise your code (even if the .NET core framework has examples of it - WebUtility/HttpUtility etc., and the JRE may well do too, though I can't see any obvious examples in the java.util namespace).
Re:The controller pattern is awful (and other OO heresy) by BeefWellington on Tuesday July 11, 2023 @08:22AM (#36679972)
The entire java.util namespace is the example here.

Using static methods on a class seems perfectly fine to me; that's what they're there for. If you have a handy utility class to work around problems in the standard library, then that's an issue with the standard library; Java has this but has gotten better over the years.