Articles

  • No categories

Better Namespaces

An interesting problem I’ve encountered many times in Java is that of conflicting names.  For example,  suppose I have the following code:

import wyil.lang.*;
import wyil.lang.Type.*;

...

public static Type T_Bool = new Type.Bool();

This is all well and good.  The problem arises when I want to import another class called Type from some package.  Suppose the wyjc.lang package contains a class called Type:

import wyil.lang.*;
import wyil.lang.Type.*;
import wyjc.lang.*;

...

public static Type T_Bool = new Type.Bool();
public static wyjc.lang.Type WYJC_BOOL = new wyjc.lang.Type.Bool();

This is not really a problem — it’s just annoying.  I now have to provide full package information whenever I want to work with one of the Type classes.

What would be really great is to have a more flexible import statement, like [[Python (programming language)|Python]].  For example:

import wyil.lang.*;
import wyil.lang.Type.*;
import wyjc.lang.Type as wyjcType;

...

public static Type T_Bool = new Type.Bool();
public static wyjcType WYJC_BOOL = new wyjcType.Bool();

This would be a nice and elegant way to resolve this problem of [[Namespace (computer science)|namespaces]].  So, I think I’ll put something like this in Whiley …

And, it looks like others are complaining as well …  see here and here.

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>