How to Design a Good API & Why it Matters
Recorded at:
Well worth taking the time to watch.
by
tanguy rademakers
Excellent!
by
Gabriel Kastenbaum
Worth the time to watch.
Makes a lot of activities in your brain
by
Alex Krotov
Thanks a lot for providing this video!
It worth seeing twice if you're engaged in API (not only Java) design.
Any chance in making your videos available in some sort of offline format?
by
Jason Finch
Re: Any chance in making your videos available in some sort of offline form
by
Oliver Gierke
How to Design a Good API & Why it Matters
by
Mikhail Vladimirov
Re: How to Design a Good API Why it Matters should avalible offline
by
nazish ali
It's better to get it offline due to streaming prblms.
We need VideoCasts
by
Luiz Alberto Silva Oliveira
Congratulations, the presentation is Excellent!
Re: Any chance in making your videos available in some sort of offline form
by
chen perry
Clear explanation of designing a good API.
by
YoungHyun Kim
Excellent - as always
by
Georges Polyzois
Pleas can we have an offline version!!
I love this website
by
Jerome St-Pierre
This man is a good speaker and I think these Javapolis events looks very cool, even if I am a .NET developer.
Thanks for the high quality content, I never got so addicted to a website before.
It's probably just me...
by
Dag Johansen
I do understand the issue with the string keys being "global namespace". Of course it's not really a namespace at all, but string comparison does mean different parts of the code could more easily overwrite one another's data. However, what is the point of using thread locals anyway? I thought the idea was to enable any object that participates in the work of a thread to easily share information *without* having to distribute a reference to anything all over the place. If so, replacing the string key with an object key negates the whole point of using thread locals in the first place.
Furthermore, if I have to ensure all objects that need to access some data have a reference to the Key instance, isn't it just as easy then to instead ensure they have a reference to whatever is associated with that key?
What is it that I have misunderstood or simply not understood?
I don't want to risk this becoming a debate about whether Java or .net is better, but I have to say it seems to me the .net solution (in which one places a ThreadStatic attribute on a static field to indicate it should be stored as a thread-local variable) is rather better. It solves the problem of accidentally using the same variables where one meant to use different ones, requires extremely little code, is transparent to the user of the class declaring the static member (of course the field should be private and exposed via a property, but this changes none of what I've said), and does completely away with the need to write boilerplate code to obtain references to these objects.
public class Log
{
[ThreadStatic]
static Log current;
static public Log Current
{
get { return current; }
set { current = value; }
}
// .... Log implementation
}
Like this, whenever some operation starts that we'd like to log we'll simply create the log with
Log.Current = new Log();and then any code that is called in the context of a current log can obtain a reference to it with
Log log = Log.Current;or just use Log.Current.WriteLine() and so on directly.
Api Design
by
Thomas Davis
apiengine.io - we are taking early registrations for beta!




Hello stranger!
You need to Register an InfoQ account or Login to post comments. But there's so much more behind being registered.Get the most out of the InfoQ experience.
Tell us what you think