Brian, the central idea behind AST editing also involves moving the
process of editing, rendering, and compiling into user-space. So, for
your grid setting endeavour, you could code up a plugin or macro or
other mechanism which knows how to render the insert instructions. And
it would look much, much better; it would look a little like this:

grid.setAllWidgets:

   ----------------------------------------------------------
   |  new Label("User ID"); | usernameBox |
   ----------------------------------------------------------
   |  new Label("Password"); | passwordBox |
   ----------------------------------------------------------


except nicer looking, with actual lines and not fake ascii ones.  When
you change the grid's explicit dimensions, the table will INSTANTLY
reflect this. In fact, you can tab/enter/some other shortcut in your
table simile and the grid constructor call would automatically adjust
- because what you're actually editing is a single grid set widgets
plugin, which includes generating everything in that code snippet -
the grid constructor, as well as each setWidget() call. The AST here
is a custom type, the rendering and editing of which is left to the
plugin. Where other tools need to interop (for 'find callers' and
other such tools), the plugin reports the actual source representation
instead of this graphical device.

Are you starting to see how revolutionary such a thing would be?


On Sep 10, 7:18 pm, Brian <brian.irei...@gmail.com> wrote:
> There is a part of me that likes this idea (mostly the part of me that
> has to read other people's code). The other part of me would mourn the
> loss of the ability to express something by bending the general style
> rules.
>
> I've been using GWT recently and have struggled with writing clear
> code for constructing views. What I'm experimenting with in some cases
> is to make the code a visual representation of the layout. This began
> with and works very nicely for VerticalPanel. In my current
> guidelines, adding an element to a VerticalPanel is not allowed to
> take more than one line. If it's something simple like a Label that I
> don't need to retain access to, I just construct a new one inline.
> Otherwise, I write a method to create the element. For example:
>
>         VerticalPanel panel = new VerticalPanel();
>         panel.add(new Label("Login"));
>         panel.add(makeLoginForm());
>         panel.add(makeLoginButton());
>         panel.add(makeForgotPasswordLink());
>
> This also has the advantage of naming the pieces of the UI. While this
> is also a slight burden, I'm generally in favor of it for the sake of
> clarity.
>
> I then applied this to a Grid. In the specific case, it was a simple
> 2x2 grid:
>
>         Grid grid = new Grid(2, 2);
>         grid.setWidget(0, 0, new Label("User ID"));     grid.setWidget
> (0, 1, usernameBox);
>         grid.setWidget(1, 0, new Label("Password"));    grid.setWidget
> (1, 1, passwordBox);
>
> Note that with a fixed width font, the 2nd statements line up with
> each other. I'm not normally a fan of putting multiple statements on
> the same line, but in this case, it makes the intent of the code very
> clear. (The multiple statements, of course, still need to reasonably
> fit on one line of text.)
>
> While I'm very particular about consistent style, it's nice to be able
> to be creative when the situation calls for it.
>
> (BTW, I've usually preferred spaces instead of tabs, but tabs would
> make it easier to make sure that the statements stay lined up. In
> fact, using tabs explicitly expresses the intent for them to line up.)
>
> -Brian
>
> On Sep 9, 11:10 pm, Joshua Marinacci <jos...@marinacci.org> wrote:
>
>
>
> > RANT!
>
> > Why, in the 21st century, are we still writing code with ascii symbols  
> > in text editors, and worried about the exact indentation and whether  
> > to use tabs, spaces, etc?!!
>
> > Since the IDE knows the structure of our code, why aren't we just  
> > sharing ASTs directly, letting your IDE format it to your desire, and  
> > only sharing the underlying AST with your fellow developers. Encoding,  
> > spaces, braces, etc. is a detail that only matters when presented to  
> > the human.
>
> > What we do today is like editing image files from the commandline!
>
> > On Sep 9, 2009, at 7:32 PM, Ryan Waterer wrote:
>
> > > While experienced programmers might not worry about the braces on a  
> > > single line, they become invaluable to any junior programmers.  I've  
> > > trained a few in which they couldn't understand why the following  
> > > code segment simply stopped working.  (Let's not even start a  
> > > discussion about System.out.println as a valid debugging tool, ok?    
> > > This is just an example of a n00blet mistake )
>
> > > for (int y = 0; y < lines; y++)
> > >    for (int x = 0; x < columns; x++)
> > >       System.out.println("The sum is: " + sum);
> > >        sum += cells[y][x];
>
> > > I agree that the braces add a bit of "clutter" to the visual look  
> > > and feel of code.  However,  I feel that it helps with the overall  
> > > maintainability of the code and therefore, I disregard the way that  
> > > it looks.
>
> > > --Ryan
>
> > > On Wed, Sep 9, 2009 at 8:24 PM, Jess Holle <je...@ptc.com> wrote:
> > > I'll agree on the newlines and indents, but the braces are silly.
>
> > > One might debate the extra whitespace inside the ()'s, but I find it  
> > > more readable with the whitespace -- to each his/her own in that  
> > > regard.
>
> > > TorNorbye wrote:
> > >> On Sep 9, 5:27 pm, Reinier Zwitserloot <reini...@gmail.com> wrote:
>
> > >>> Here's a line from my code:
>
> > >>> for ( int y = 0 ; x < lines ; y++ ) for ( int x = 0 ; x <  
> > >>> columns ; x+
> > >>> + ) sum += cells[y][x];
>
> > >> I guess that's where we disagree.
>
> > >> for (int y = 0; y < lines; y++) {
> > >>     for (int x = 0; x < columns; x++) {
> > >>         sum += cells[y][x];
> > >>     }
> > >> }
>
> > >> is IMHO better because:
> > >> (a) I can see immediately that I'm dealing with a nested construct
> > >> here, and that's it's O(n^2)
> > >> (b) I can more easily set breakpoints on individual statements of  
> > >> this
> > >> code while debugging - and similarly other "line oriented" operations
> > >> (like quickfixes etc) get more cluttery when it's all on one line.
> > >> Profiling data / statement counts / code coverage highlighting for  
> > >> the
> > >> line is also trickier when you mash multiple statements into one  
> > >> line.
> > >> (c) I think it's less likely that I would have made the "x < lines"
> > >> error that was in your code when typing it this way because the
> > >> handling of y and x were done separately on separate lines (though
> > >> this is a bit speculative)
> > >> (d) I removed your spaces inside the parentheses, because they are
> > >> Bad! Bad!
>
> > >> (Ok c and d are padding)
>
> > >> I am -not- looking to minimize the number of lines needed to express
> > >> code.  If I wanted that, I'd be coding in Perl.  I deliberately add
> > >> newlines to make the code more airy and to group logical operations
> > >> together. I always insert a newline before the final return-statement
> > >> from a function etc.
>
> > >> I think the extra vertical space you've gained, which arguably could
> > >> help you orient yourself in your code by showing more of the
> > >> surrounding context, is lost because the code itself is denser and
> > >> more difficult to visually scan.
>
> > >> Oh no, a formatting flamewar -- what have I gotten myself into?
>
> > >> -- Tor
>
> > >> P.S. No tabs!
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to javaposse@googlegroups.com
To unsubscribe from this group, send email to 
javaposse+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to