''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 e.g. public class UserImpl implements User { private String userName; : : public String setUserName( String newUserName){ userName = newUserName(); } : : } * Do not use "this." 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