What is Ema? WikiSquatting?
Many of these are fairly bad guidelines to boot. Such as? Many of them are similar to what we use.
-
All Objects are exposed as Interface to enforce the "Programming to Interfaces rather than Classes" concept
-
Test cases should be written to ensure the services provided by objects can be tested with only the minimal required dependency
-
Development follows the pattern of
-
Define Interfaces
-
Create mock implementation wherever required
-
Write test cases
-
Package so that it can be used by other developers
-
Actual implementation of interface
-
Ensure the environment is set up to share the common settings such as the file/code templates in IDEA
-
All package names should be in lowercase
-
In the set methods of the members, ensure the incoming param is named as new<member>
e.g.
public class UserImpl implements User {
private String userName;
:
:
public String setUserName( String newUserName){
userName = newUserName();
},
:
:
},
- Do not use "this.<member>" code as the "this." not only makes the code dense also some compilers do not support it.
e.g.
this.userName = userName; --> Bad
userName = newUserName; --> Good
-
Ensure all classes/members/methods are named clearly
-
Provide adequate documentation
-
Use formatCode/optimizeImports in IDEA to cleanup code
-
Refactoring is different from adding new feature, changing/enhancing existing functionality.
It provides an opportunity to review your code for better usage.
-
Use ToDo tag to identify tasks you need to work on
-
Organize the packages such that it is more meaningful and also can be grouped and converted into jars with less effort
-
Wrap the conditional statements always
e.g.
GOOD
----
if ( var1 = value1) {
//do something
},
BAD
---
if ( var1 = value1)
//do something
- Class/Interface Names always starts with Uppercase and words separated by camelCase
e.g.
Good >>
public class TestClassForClassNaming {
},
Bad >>
public class Testclassforclassnaming {
},
public class testClassForClassNaming {
},
- Method Names always starts with lowerCase and words separated by camelCase
e.g.
Good >>
public void testMethodForMethodNaming {
},
Bad >>
public class TestMethodForMethodNaming {
},
public class testmethodformethodnaming {
},
- Constant Names are always in UpperCase and words separated by '_'
e.g.
Good >>
public final String TEST_CONSTANT = "TEST";
Bad >>
public final String testconstant = "TEST";
public final String Testconstant = "TEST";
public final String TestConstant = "TEST";
- Member Names always start with lowerCase and words separated by camelCase
e.g.
Good >>
private String testMember;
Bad >>
private String TestMember;
private String Testmember;
private String testmember;
-
When using Singleton get the instance always from an Instance provider such as the com.ema.core.utils.ClassInstance and/or using a Proxy Bean factory
-
Use Parentheses to clearly depict the expressions
-
Try to avoid multiple return points