Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Java is not the most loved language around here but check out the Java API.

Some of the books you might want to read:

1) Code Complete (MS Press)

2) Effective Java/C++ (Joshua Bloch/Scott Meyers)

3) Design Patterns

4) Refactoring

I don't know other books/library that can answer this question from other language (such as LISP, Python and Ruby)




The Java API's are wildly inconsistent. Some are pretty good, but some (Calendar, Date, IO) are massive trainwrecks that even some of Java's architects don't like. Joshua Bloch gave a presentation somewhere on effective API design where he ragged on Calendar.

And the Design Patterns and Refactoring should be considered starting points, not the be-all-and-end-all of programming. Every programmer should be familiar with them just for the vocabulary. But there are better examples of programming in SICP, On Lisp, Programming Pearls, and TeX: The Program.


My examples and suggestions are limited for Java/C#. The reason why I pointed out Java API is such that people can see which part has a good clean code and which part has inconsistent design.

I'm not currently programming in functional language so I can't really say how much SICP and On Lisp help people to write better software. To my understanding, despite the praise of LISP for clean code, the statement mostly come from experience developers with years of flight-time. I began to question whether LISP actually helped them much given their extensive experience.

Paul Graham (or insert any bloggers that praised LISP) said LISP helped him code in a better way (and etc etc etc) but Paul Graham never program in Java so how do we know if his LISP experience actually help the way he programs in OOP?

Other experience developers said Scheme helped them to have clean code but then again, they threw that statement after x-number of projects in which I'm sure they've learned a lot anyway.


SICP code is not meant to be practical, and to me practicality should be a component of quality.

SICP does teach you about elegance and introduces a wide variety of programming concepts. I guess these are valuable in the quest for "quality".


Java APIs err on the side of overengineering - and it's not the language, it's the culture around it.

I do recommend Effective Java and Effective C++ (and its sequels). They show the limitations of the respective languages and how to overcome them.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: