Thanks Mari..Looks nice.! Thanks, Reka
On Thu, Sep 18, 2014 at 6:19 PM, Mariangela Hills <mariang...@wso2.com> wrote: > Hi All, > > I added the content in [1]. Please let me know if any changed are needed. > > [1] > https://cwiki.apache.org/confluence/display/STRATOS/Coding+Standards+and+Best+Practices > > Regards, > Mariangela > > > > > *--* > Mariangela Hills > Senior Technical Writer > > *WSO2, Inc.*lean.enterprise.middleware. > m: +94 773 500185 > w: http://wso2.com > <http://wso2.com/events/> > > On Thu, Sep 18, 2014 at 5:14 PM, Nirmal Fernando <nirmal070...@gmail.com> > wrote: > >> I think we can use the general Java coding conventions >> http://www.oracle.com/technetwork/java/codeconvtoc-136057.html >> >> On Wed, Sep 17, 2014 at 10:30 AM, Mariangela Hills <mariang...@wso2.com> >> wrote: >> >>> Lakmal, will do! I have created a JIRA [1] to track this task. >>> >>> [1] https://issues.apache.org/jira/browse/STRATOS-804 >>> >>> Regards, >>> Mariangela >>> >>> >>> >>> >>> *--* >>> Mariangela Hills >>> Senior Technical Writer >>> >>> *WSO2, Inc.*lean.enterprise.middleware. >>> m: +94 773 500185 >>> w: http://wso2.com >>> <http://wso2.com/events/> >>> >>> On Wed, Sep 17, 2014 at 10:09 AM, Lakmal Warusawithana <lak...@wso2.com> >>> wrote: >>> >>>> @Mari, >>>> >>>> Can you work on all feedback and compile a wiki page? >>>> >>>> On Tue, Sep 16, 2014 at 1:11 PM, Akila Ravihansa Perera < >>>> raviha...@wso2.com> wrote: >>>> >>>>> Hi, >>>>> >>>>> +1 for using this as the common guideline. >>>>> >>>>> IMO, we should add coding styles as well. It will make the code more >>>>> readable and easy to understand. We might be able to get some idea >>>>> from Google Java style in [1]. Another style from Apache ACE project >>>>> in [2]. >>>>> >>>>> [1] https://google-styleguide.googlecode.com/svn/trunk/javaguide.html >>>>> [2] https://ace.apache.org/dev-doc/coding-standards.html >>>>> >>>>> Thanks. >>>>> >>>>> On Tue, Sep 16, 2014 at 12:28 PM, Sajith Kariyawasam <saj...@wso2.com> >>>>> wrote: >>>>> > You can access Sonar dashboard for Stratos in [1], Imesh shared this >>>>> in the >>>>> > thread [Discuss] Setting up Sonar for Stratos >>>>> > [1] >>>>> > >>>>> https://analysis.apache.org/dashboard/index/org.apache.stratos:stratos-parent >>>>> > >>>>> > On Tue, Sep 16, 2014 at 12:15 PM, Sajith Kariyawasam < >>>>> saj...@wso2.com> >>>>> > wrote: >>>>> >> >>>>> >> Hi all, >>>>> >> >>>>> >> I think these guidelines should align with the Sonar rules which are >>>>> >> already integrated with Stratos, or decide on a set of guidelines >>>>> and change >>>>> >> the Sonar rules accordingly. >>>>> >> >>>>> >> Also, IMO we should use Sonar plugin in IDE s, rather than using >>>>> Findbugs >>>>> >> / PMD etc individually.. >>>>> >> [1] >>>>> >> >>>>> http://stackoverflow.com/questions/5479019/is-sonar-replacement-for-checkstyle-pmd-findbugs >>>>> >> >>>>> >> I assume that we can use Sonar even for managing code review stuff >>>>> as well >>>>> >> [2] >>>>> >> [2] http://www.sonarqube.org/effective-code-review-with-sonar/ >>>>> >> >>>>> >> Thanks, >>>>> >> Sajith >>>>> >> >>>>> >> On Tue, Sep 16, 2014 at 11:52 AM, Lakmal Warusawithana < >>>>> lak...@wso2.com> >>>>> >> wrote: >>>>> >>> >>>>> >>> Hi, >>>>> >>> >>>>> >>> This is the guideline we used in WSO2, shall we have a look and see >>>>> >>> whether we can use the same. Please share your thoughts. After we >>>>> finalised >>>>> >>> will put this into wiki and make it as common guide line. >>>>> >>> >>>>> >>> Comments >>>>> >>> >>>>> >>> Doc comments >>>>> >>> >>>>> >>> All classes and all methods/functions MUST have doc comments >>>>> >>> >>>>> >>> Explain each parameter, return type and assumptions made >>>>> >>> >>>>> >>> Line comments >>>>> >>> >>>>> >>> In case you have complex logic, explain any genius logic, >>>>> rationale for >>>>> >>> doing something >>>>> >>> >>>>> >>> >>>>> >>> Logging >>>>> >>> >>>>> >>> Log then and there >>>>> >>> >>>>> >>> With ample local information and context >>>>> >>> >>>>> >>> Remember logs are for users. Make them meaningful, readable and >>>>> also make >>>>> >>> sure you spell check (ispell) >>>>> >>> >>>>> >>> Use correct log level, e.g do not log errors as warnings or vice >>>>> versa >>>>> >>> >>>>> >>> Remember to log the error before throwing an exception >>>>> >>> >>>>> >>> >>>>> >>> Logic >>>>> >>> >>>>> >>> Make your genius code readable >>>>> >>> >>>>> >>> Use meaningful variable names. Remember, compilers can handle long >>>>> >>> variable names >>>>> >>> >>>>> >>> ________________________________ >>>>> >>> >>>>> >>> Variables declared in locality, as an when required >>>>> >>> >>>>> >>> The underscore character should be used only when declaring >>>>> constants, >>>>> >>> and should not be used anywhere else in Java code >>>>> >>> >>>>> >>> Make sure the function/method names are self descriptive >>>>> >>> >>>>> >>> One should be able explain a function/method using a single >>>>> sentence >>>>> >>> without conjunctions (that is no and/or in description) >>>>> >>> >>>>> >>> Have proper separation of concerns >>>>> >>> >>>>> >>> Check if you do multiple things in a function >>>>> >>> >>>>> >>> Too many parameters are smelly, indicates that something is wrong >>>>> >>> >>>>> >>> Use variables to capture status and return at the end whenever >>>>> possible >>>>> >>> >>>>> >>> Avoid status returning from multiple places, that makes code less >>>>> >>> readable >>>>> >>> >>>>> >>> Be consistent in managing state e.g. Initialize to FALSE and set >>>>> to TRUE >>>>> >>> everywhere else >>>>> >>> >>>>> >>> Where does that if block end, or what block did you end right now? >>>>> Have a >>>>> >>> comment at end of a block at } >>>>> >>> >>>>> >>> Use if statements rationally, ensure the behavior is homogeneous >>>>> >>> >>>>> >>> In case of returning a collection, must return an empty collection >>>>> and >>>>> >>> not null (or NULL) >>>>> >>> >>>>> >>> Do not use interfaces to declare constants. Use a final class with >>>>> public >>>>> >>> static final attributes and a private constructor. >>>>> >>> >>>>> >>> Always use braces to surround code blocks ({}) even if it is a >>>>> single >>>>> >>> line. >>>>> >>> >>>>> >>> Break code into multiple lines if it exceeds 100 columns >>>>> >>> >>>>> >>> Align method parameters, exception etc. in order to improve >>>>> readability. >>>>> >>> Use the settings in your IDE to do this. >>>>> >>> >>>>> >>> Be sure to define, who should catch an exception when throwing one >>>>> >>> >>>>> >>> Be sure to catch those exceptions that you can handle >>>>> >>> >>>>> >>> Do not use string literals in the code, instead declare constants >>>>> and use >>>>> >>> them, constant names should be self descriptive >>>>> >>> >>>>> >>> Use constants already defined whenever possible, check to see if >>>>> someone >>>>> >>> already declared one, specially in base libs, like Axis2 >>>>> >>> >>>>> >>> >>>>> >>> Java Specific >>>>> >>> >>>>> >>> Coding conventions - >>>>> >>> http://www.oracle.com/technetwork/java/codeconv-138413.html >>>>> >>> >>>>> >>> Only exception is line length, we use 100 >>>>> >>> >>>>> >>> Run FindBugs on your code - http://findbugs.sourceforge.net/ >>>>> >>> >>>>> >>> Use CONSTANT_VALUE.equals(variable_name) to avoid null pointer >>>>> exceptions >>>>> >>> >>>>> >>> IMPORTANT >>>>> >>> >>>>> >>> You should run FindBugs on your new code or modified code, and >>>>> commit >>>>> >>> only after fixing any bugs reported by FindBugs. It is recommended >>>>> to use >>>>> >>> the IntellijIDEA (FindBugs-IDEA) or Eclipse FindBugs plugin to do >>>>> this. >>>>> >>> >>>>> >>> >>>>> >>> >>>>> >>> -- >>>>> >>> Lakmal Warusawithana >>>>> >>> Vice President, Apache Stratos >>>>> >>> Director - Cloud Architecture; WSO2 Inc. >>>>> >>> Mobile : +94714289692 >>>>> >>> Blog : http://lakmalsview.blogspot.com/ >>>>> >>> >>>>> >> >>>>> >> >>>>> >> >>>>> >> -- >>>>> >> Sajith Kariyawasam >>>>> >> Committer and PMC member, Apache Stratos, >>>>> >> WSO2 Inc., http://wso2.com >>>>> >> AMIE (SL) >>>>> >> Mobile: +94772269575 >>>>> >> >>>>> > >>>>> > >>>>> > >>>>> > -- >>>>> > Sajith Kariyawasam >>>>> > Committer and PMC member, Apache Stratos, >>>>> > WSO2 Inc., http://wso2.com >>>>> > AMIE (SL) >>>>> > Mobile: +94772269575 >>>>> > >>>>> >>>>> >>>>> >>>>> -- >>>>> Akila Ravihansa Perera >>>>> Software Engineer, WSO2 >>>>> >>>>> Blog: http://ravihansa3000.blogspot.com >>>>> >>>> >>>> >>>> >>>> -- >>>> Lakmal Warusawithana >>>> Vice President, Apache Stratos >>>> Director - Cloud Architecture; WSO2 Inc. >>>> Mobile : +94714289692 >>>> Blog : http://lakmalsview.blogspot.com/ >>>> >>>> >>> >> >> >> -- >> Best Regards, >> Nirmal >> >> Nirmal Fernando. >> PPMC Member & Committer of Apache Stratos, >> Senior Software Engineer, WSO2 Inc. >> >> Blog: http://nirmalfdo.blogspot.com/ >> > > -- Reka Thirunavukkarasu Senior Software Engineer, WSO2, Inc.:http://wso2.com, Mobile: +94776442007