News for hackers. Stuff that matters.
Re:Was object-oriented programming a failure? (2015) by coldtea on Sunday March 12, 2017 @10:56AM (#13850919)
>Admittedly, it's one of those projects which has had a bunch of freelancers/contractors work on it, but I personally really don't see what it added to move the methods off the classes apart from confusion, code duplication and code bloat.

Moving the methods off the classes would actually lead to less code duplication -- as now different data that need the same treatment can be handled with the same methods.

"Loads of repeated code as new programmers didn't know methods existed" seems like a bigger issue here...

Re:Was object-oriented programming a failure? (2015) by mattmanser on Sunday March 12, 2017 @01:55PM (#13851963)
as now different data that need the same treatment can be handled with the same methods.

That just doesn't happen enough in real life to design around.

In the rare instances when you do need to that, it's trivial to handle with interfaces and a wrapped method that calls a shared function.

Re:Was object-oriented programming a failure? (2015) by coldtea on Sunday March 12, 2017 @03:55PM (#13852689)
>That just doesn't happen enough in real life to design around.

On the contrary, I think it does. Especially for web, enterprise and application programming, 90% of the logic is the same tired data transformations.

Re:Was object-oriented programming a failure? (2015) by mattmanser on Sunday March 12, 2017 @06:51PM (#13853692)
It'd be nice if you told us what code you're referring to. I've been giving examples and rough technical outlines how I'd handle problems that needed code sharing. So far you've given us zilch but naysaying.

Have you got any examples?

I've never had to write identical code on an Order class as a Person class. Can you give me an example of 90% of the logic being the same on an Order and a Person class?

Like in C#, the entity framework has mainly done away with all the "tired data transformations". The equivalents like Hibernate, ActiveRecord, etc. have done the same in other languages (and were the trailblazers). When I dip into a data transformation these days it's complex, hand-coded SQL, the tricky bit that takes time, with a simple data class to handle strong typing, trivial to write in a minute or two with snippets and auto-completion.

Re:Was object-oriented programming a failure? (2015) by coldtea on Monday March 13, 2017 @06:50AM (#13856680)
>It'd be nice if you told us what code you're referring to. I've been giving examples and rough technical outlines how I'd handle problems that needed code sharing. So far you've given us zilch but naysaying.

Sorry, why the complaining? We were talking on a more abstract level. Yourself just gave some anecdote about "Someone did this on a project I work on (C#). Utter nightmare. Loads of repeated code as new programmers didn't know methods existed, loads of extraneous DTO objects, lots of nested single line methods, massive code bloat", that's hardly an example either.

>I've never had to write identical code on an Order class as a Person class. Can you give me an example of 90% of the logic being the same on an Order and a Person class?

Apart from the data contained without, which process would not be the same? Most high level operations would be exactly the same: filtering would be the same (it just needs to accept a predicate), ordering would be the same, serialization would be the same, etc etc.

For a very simple example, you don't need:

  persons.sort("age", sort.DESC)
  orders.sort("created_at", sort.DESC)
etc, you just need:

  sortedPersons = sort(persons, cur -> cur.age, sort.DESC)
  sortedOrders = sort(orders, cur -> cur.created_at, sort.DESC)
And the same function can work with 100s of other classes and containers.
Re:Was object-oriented programming a failure? (2015) by mattmanser on Monday March 13, 2017 @12:08PM (#13859039)
A better solution than that has been in heavy use for a decade in C#. Works on anything that implements `IEnumerable`.

    db.Orders.Sort(o => o.StartDate)
I've also never found ordering code to be the bulk of my logic, but whatever.

Anyway, generics. Without having to muck around with funky designs for your classes.

Re:Was object-oriented programming a failure? (2015) by jghn on Sunday March 12, 2017 @11:08AM (#13850975)
A bigger issue indeed, and one I've also seen in fully OOP code bases. Entire parallel bits of functionality as developer A has no idea that developer B already made the thing they want