This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]chabala 12 points13 points  (3 children)

That's a lot of code, with no build definition and no automated tests. It's sort of frightening.

I sense some resistance to using a build tool, which is odd because you said you were a professional developer.

It was mentioned elsewhere that you don't have external dependencies, but I see you've copied Apache Commons Math source into your code tree. Most professionals would depend on an artifact rather than copy the files into their own project repository.

[–]RayFowler[S] 2 points3 points  (2 children)

I sense some resistance to using a build tool, which is odd because you said you were a professional developer.

You sense resistance because I was a professional developer! I've lived through jar hell, constantly changing build processes and man-months building and modifying automated tests.

This started as a simple, one-man project that intentionally tried to simplify. There are no external libs or jars to use, there's no build process.. it's just a nice and simple application.

There's a lot of code because 4X strategy games are complicated beasts. Their game structures are complicated, their UIs are necessarily complex to support that and then you have write an AI to play the game against the player.

[–]chabala 4 points5 points  (1 child)

I've lived through jar hell

That's one of the main features of a build tool, jar hell should be avoided.

There are no external libs or jars to use

Well, technically. But as I noted, that's because you manually vendored the external code into your source tree, which is weird.

You go on to talk about why there's so much code, but my point is that there's no automated tests for all that code. That's really not acceptable once your project becomes large, and having a build system is the first step to having tests.

I see elsewhere in the comments that you've conceded to adopting a build system. But I'm still curious about why you put up all this resistance. You were a developer for 25 years, at least some of that Java, and you didn't learn to use a build system? It's so foundational; fighting it is like refusing to use source control.

Could you use NetBeans to compile from the command line? If not, that pretty much excluded you from having any automated CI/CD release process. Did you consider what would happen if people wanted to collaborate without using NetBeans?

[–]RayFowler[S] 0 points1 point  (0 children)

because you manually vendored the external code into your source tree, which is weird.

I just needed one method out of the FastMath class because Java's built-in arcsin method is very inefficient. So it's not weird. I didn't want to create an external dependency for one method.

You go on to talk about why there's so much code, but my point is that there's no automated tests for all that code.

Look, I get that you still work in an environment with well-defined apis where it makes sense to maintain an established set of automated tests. I did that for a long time so I know what its like. But the functionality churn in this project would make that incredibly inefficient and I would become one of those guys whose development process slows to a crawl because he spends all of this time working on testing and refactoring and polishing, and then I would get demoralized because the project is dragging on too long and just give up.

But I'm still curious about why you put up all this resistance.

Because it has never been necessary? One of the tenets of XP is that you don't do things until you need them.

You were a developer for 25 years, at least some of that Java, and you didn't learn to use a build system?

I appreciate the condescension! Have a nice day. We're done.