RSS feed [root] /design /weblog



title search:


Thu Jan 25 22:38:50 GMT 2024


(google search) (amazon search)
download zip of files only

Thu Mar 01 07:26:27 GMT 2007 From /weblog/design

How to format parameter

Some will think boolean is ugly as parameter, I think if there is more than one boolean in parameter list -

(google search) (amazon search)

Tue Feb 27 04:31:48 GMT 2007 From /weblog/design/exception

handle exception in finally

This blog discuss the code at finally can affect code at catch block -

ExternalResource resource =;
Throwable e1 = null;
try {
// Use the resource (stream, db connection, ...)
} catch (Throwable e) {
e1 = e;
} finally {
try {
if (e1 != null) throw e1;
} catch (Throwable e2) {
// Pretend e2 doesn't already have a cause...
if (e1 != null) e2.initCause(e1);
throw e2;

or this, can be better looking

try {
InputStream is = new FileOutputStream("hello.txt");
try {
finally {
} catch (IOException e) {

(google search) (amazon search)

Thu Oct 12 07:52:27 GMT 2006 From /weblog/design

inherence or composition

A great reading of the fundamental design decision: inherence or composition?

Delegation means that you include an instance of another class as an instance variable, and forward messages to the instance. It is often safer than inheritance because it forces you to think about each message you forward

(google search) (amazon search)

Thu Oct 12 07:49:07 GMT 2006 From /weblog/design/interview

Ken Arnold interview

Have anyone read "Effective Java"? Compare the "item 10: Override clone judiciously" with this interview is fun

No perfect design because we need difference design trade off for difference task, like performance, time, resource, ....
No perfect design because difference user have difference expectation of API ....
No perfect design because requirement change by time

(google search) (amazon search)

Thu Oct 12 07:48:27 GMT 2006 From /weblog/design/interview

Pragmatic Programmer

*Dave Thomas*: You have to accept the fact that you're not going to get it right the first time. And you're not going to get it perfectly right the second or third time. You'll never get it perfectly right, but along the way you can get better and better . To do that, you have to discipline yourself to apply a reflective process to what you do.
*Bill Venners*: What do you mean by reflective process?
*Dave Thomas*: You always have to look back at what you did and ask, "How did I do that? Could I have done it better? Did I have to do it at all?" Get into the habit of doing that with everything you do. That way, you're consciously forcing yourself to reevaluate the way you do things.

Full message:

(google search) (amazon search)

Thu Oct 12 07:47:11 GMT 2006 From /weblog/design/interview

Scott Meyers interview

I think a schism existed between the C++ community, which was still focused on language issues, and the other prominent development communities, which pretty much left the language alone. Java already had exceptions, but didn't have templates and had nothing like the STL. Yet the Java community focused on writing a whole bunch of libraries that everybody can assume will exist everywhere, libraries that will let you write applications really quickly. The end result is, we have templates in C++, but there's no way to write user interfaces or talk to databases. Java has no templates, but you can write user interfaces up the wazoo and you can talk to databases with no trouble at all.

(google search) (amazon search)

Wed Oct 11 03:14:13 GMT 2006 From /weblog/design

Jay Flowers series

Jay Flowers have blogged a series of technique to achieve better testability design

The summary -

(google search) (amazon search)

Tue Oct 10 09:14:26 GMT 2006 From /weblog/design

ease of use gone wrong

(google search) (amazon search)

Thu Jul 06 08:41:04 GMT 2006 From /weblog/design

light weight programming

Given simple example of "Closures", "Continuations", "Metaprogramming" and "reflection"[..]loperworks/java/library/os-lightweight7/

A blog of why these are matter -[..]gView?showComments=true&entry=3297336132

(google search) (amazon search)

Fri Jun 09 08:44:33 GMT 2006 From /weblog/design

Ruby vs Java

This is a nice one:[..]a-is-more-productive-than-rubyrails.html and I agree with him, tools support is important

(google search) (amazon search)

Tue May 09 05:04:30 GMT 2006 From /weblog/design


How about create a Class to hold all constant? How about static import? How about DON'T use it at all?[..]onstants-in-java-is-it-right-to-use.html

(google search) (amazon search)

Fri Apr 28 04:48:22 GMT 2006 From /weblog/design


Look like mostly negative:

(google search) (amazon search)

Tue Apr 11 07:09:22 GMT 2006 From /weblog/design


A more detailed discussion about this design approach, as far as I can tell is to put all session information to URL automatically.[..]brary/j-cb03216/?ca=dgr-jw22StatelessWeb[..]m/news/thread.tss?thread_id=39579#204688

(google search) (amazon search)

Fri Feb 24 08:14:21 GMT 2006 From /weblog/design/exception

Using stacktrace to know call hierarchy

Sometime it useful to know call hierarchy even if it is not exception case

(google search) (amazon search)

Wed Jan 18 08:22:34 GMT 2006 From /weblog/design

html generation

This approach, as far as I know, is the nicest one, please tell me if you have better choice:

(google search) (amazon search)

Sun Jan 08 11:23:48 GMT 2006 From /weblog/design/exception

cool exception message

From a very good jpeg meta data extractor - mention the solution at exception message
com.drew.metadata.MetadataException: Tag Image Width has not been set -- check using containsTag() first
        at com.drew.metadata.Directory.getInt(Unknown Source)

(google search) (amazon search)

Mon Nov 28 10:20:01 GMT 2005 From /weblog/design

class are too big

Classes are to big ...

* When it is unclear what the exact responsibility of the class is. (when apparently little changes in requirements often require changes in the same set of classes, time after time)
* When it is difficult to write a unittest to test the behavior of the class. (very common for large classes that combine a lot of functionality)
* When the concept of the class no longer fits the size of your head. (working on the class becomes difficult, meaning you need to scroll a lot, skip between various parts of the code in order to understand the class. Differs a little from person to person.)

Kind Regards,

(google search) (amazon search)

Sun Oct 23 10:10:19 GMT 2005 From /weblog/design

practical uml editor

This is the most practical UML drawing tool , contain eclipse plugin

(google search) (amazon search)