There doesn't seem to be many aspects untouched such an approach. The whole multi-line String discussion would become utter pointless as would line lengths. But there would also be some interesting AOP scenarios (which I am usually against when it comes to external configuration and byte-code weaving) as well as design-by-contract, post and precondition checks which could be toggled invisible etc. A perspective tool (Mylyn) would kick @$$ too in such an editor. Is it a pipe-dream? I really hope not.
/Casper On 11 Sep., 04:00, Reinier Zwitserloot <reini...@gmail.com> wrote: > 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 -~----------~----~----~----~------~----~------~--~---