[
https://issues.jboss.org/browse/SEAMFORGE-79?page=com.atlassian.jira.plug...
]
Pablo Martinez edited comment on SEAMFORGE-79 at 3/21/11 9:33 PM:
------------------------------------------------------------------
what about this logic:
when adding a new-field, search for the last field location, and add the field after that
one (private String field), then , search for constructors, if there's any, put the
getter/setter for the recent added field after all constructors, if no constructor found,
put the getter/setter after last field location (in this case the recently added field)
when adding a new-method, just put it at the bottom.
on pseudo pseudo pseudo code:
{code}
if (command.equals("new-field") {
int fieldLine = searchLastFieldLocation();
addField(fieldLine + 1);
constructorLine = searchLastConstructorLocation();
if (constructorLine != -1 ) //when -1 it indicates no constructor found
addGetterSetter(constructorLine + 1);
else{
addGetterSetter(fieldLine + 2); //+2 instead of +1 to indicate AFTER the recently
added field
}
} else if (command.equals("new-method")) {
int methodLine = searchLastMethodLocation();
addMethod(methodLine + 1);
}
{code}
This way, we can be sure that fields go top, constructors after fields, getters/setters
after constructors (if any), and other methods always at the bottom.
Of course, if the user mess with the code creating a field at the bottom, or a constructor
at top or something like that, it wouldn't work as one would expect, BUT at least it
won't break the code, and if the user follows this *CONVENTION* (at least I follow
this methodology always), this would help a lot on understanding the code afterwards.
Any idea about this?
was (Author: pablomartinez):
what about this logic:
when adding a new-field, search for the last field location, and add the field after that
one (private String field), then , search for constructors, if there's any, put the
getter/setter for the recent added field after all constructors, if no constructor found,
put the getter/setter after last field location (in this case the recently added field)
when adding a new-method, just put it at the bottom.
on pseudo pseudo pseudo code:
{code}
if (method == new-field) {
int fieldLine = searchLastFieldLocation();
addField(fieldLine + 1);
constructorLine = searchLastConstructorLocation();
if (constructorLine != -1 ) //when -1 it indicates no constructor found
addGetterSetter(constructorLine + 1);
else{
addGetterSetter(fieldLine + 2); //+2 instead of +1 to indicate AFTER the recently
added field
}
} else if (method == new-method) {
int methodLine = searchLastMethodLocation();
addMethod(methodLine + 1);
}
{code}
This way, we can be sure that fields go top, constructors after fields, getters/setters
after constructors (if any), and other methods always at the bottom.
Of course, if the user mess with the code creating a field at the bottom, or a constructor
at top or something like that, it wouldn't work as one would expect, BUT at least it
won't break the code, and if the user follows this *CONVENTION* (at least I follow
this methodology always), this would help a lot on understanding the code afterwards.
Any idea about this?
When using the new-field command, the getters and setters should be
separated from the field to make it more readable.
----------------------------------------------------------------------------------------------------------------------
Key: SEAMFORGE-79
URL:
https://issues.jboss.org/browse/SEAMFORGE-79
Project: Seam Forge
Issue Type: Feature Request
Components: Brainstorming
Affects Versions: 1.0.0.Alpha1, 1.0.0.Alpha2, 1.0.0.Alpha3
Reporter: Pablo Martinez
Priority: Optional
When using the new-field command, the getters and setters should be separated from the
fields, to make the java class more readable after using seamforge.
An idea is to separate every java class in 4 parts: Field block, Constructor block,
Getter/Setter block and Method block, using some arbitrary sintax (for easy parsing
maybe?), for example something like:
{code}
@Entity
public class User {
/* [FIELDS] */
private int id;
private String username;
private String password;
/* [CONSTRUCTORS] */
public User() {
}
public User(String username, String password) {
}
/* [GETTERS/SETTERS] */
public String getUsername() {
return this.username;
}
public void setUsername(final String username) {
this.username = username;
}
//etc...
/* [METHODS] */
public void doSomething() { }
public boolean equals(User other) { return false; }
//etc...
}
{code}
--
This message is automatically generated by JIRA.
For more information on JIRA, see:
http://www.atlassian.com/software/jira