RSS feed [root] /design /weblog




login:

password:

title search:




 


Thu May 23 22:45:24 HKT 2019

design



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

Tue Feb 27 12:31:48 HKT 2007 From /weblog/design/exception

handle exception in finally


This blog discuss the code at finally can affect code at catch block - http://mult.ifario.us/articles/2006/07/26/java-brain-teaser


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

http://bagotricks.com[..]06/02/06/dropping-the-ball-er-exception/

or this, can be better looking


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

http://jroller.com/page/davinci?entry=finally_in_catch

(google search) (amazon search)


Thu Oct 12 15:52:27 HKT 2006 From /weblog/design

inherence or composition


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

http://groups.yahoo.com/group/extremeprogramming/message/67018


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

http://www.norvig.com/java-iaq.html#del2

(google search) (amazon search)


Thu Oct 12 15:49:07 HKT 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

http://www.artima.com/intv/issuesP.html


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

http://www.artima.com/intv/perfect.html

(google search) (amazon search)


Thu Oct 12 15:48:27 HKT 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: http://www.artima.com/intv/metadataP.html

(google search) (amazon search)


Thu Oct 12 15:47:11 HKT 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.

http://www.artima.com/intv/abcsP.html

(google search) (amazon search)


Wed Oct 11 11:14:13 HKT 2006 From /weblog/design

Jay Flowers series


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

http://jayflowers.com/WordPress/?p=78
http://jayflowers.com/WordPress/?p=79
http://jayflowers.com/WordPress/?p=81
http://jayflowers.com/WordPress/?p=85
http://jayflowers.com/WordPress/?p=86
http://jayflowers.com/WordPress/?p=89
http://jayflowers.com/WordPress/?p=91
http://jayflowers.com/WordPress/?p=92

The summary - http://jayflowers.com/WordPress/?p=93

(google search) (amazon search)


Tue Oct 10 17:14:26 HKT 2006 From /weblog/design

ease of use gone wrong



(google search) (amazon search)


Thu Jul 06 16:41:04 HKT 2006 From /weblog/design

light weight programming


Given simple example of "Closures", "Continuations", "Metaprogramming" and "reflection"

http://www-128.ibm.com[..]loperworks/java/library/os-lightweight7/

A blog of why these are matter - http://www.cincomsmalltalk.com[..]gView?showComments=true&entry=3297336132

(google search) (amazon search)


Fri Jun 09 16:44:33 HKT 2006 From /weblog/design

Ruby vs Java


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

(google search) (amazon search)


Tue May 09 13:04:30 HKT 2006 From /weblog/design

contants


How about create a Class to hold all constant? How about static import? How about DON'T use it at all?

http://hoskinator.blogspot.com[..]onstants-in-java-is-it-right-to-use.html

(google search) (amazon search)


Fri Apr 28 12:48:22 HKT 2006 From /weblog/design

webservice


Look like mostly negative: http://www.theserverside.com/news/thread.tss?thread_id=40064

(google search) (amazon search)


Tue Apr 11 15:09:22 HKT 2006 From /weblog/design

continuations


A more detailed discussion about this design approach, as far as I can tell is to put all session information to URL automatically.

http://www-128.ibm.com[..]brary/j-cb03216/?ca=dgr-jw22StatelessWeb
http://www.theserverside.com[..]m/news/thread.tss?thread_id=39579#204688

(google search) (amazon search)


Fri Feb 24 16:14:21 HKT 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

http://jroller.com/page/henribenoit?entry=where_am_i_called_from

(google search) (amazon search)


Wed Jan 18 16:22:34 HKT 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:
http://www-128.ibm.com/developerworks/java/library/j-pg04125/
http://www-128.ibm.com/developerworks/cn/java/j-pg04125/
http://groovy.codehaus.org/GroovyMarkup
http://redhanded.hobix.com/inspect/markabyForRails.html

(google search) (amazon search)



Sun Jan 08 19:23:48 HKT 2006 From /weblog/design/exception

cool exception message


From a very good jpeg meta data extractor - http://drewnoakes.com/code/exif/ 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 18:20:01 HKT 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,
Sven

(google search) (amazon search)


Sun Oct 23 18:10:19 HKT 2005 From /weblog/design

practical uml editor


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

http://www.spinellis.gr/sw/umlgraph/

(google search) (amazon search)