Thanks, I removed that guideline! 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 Fri, Sep 19, 2014 at 6:13 PM, Sajith Kariyawasam <saj...@wso2.com> wrote: > Hi Mari, > > On Fri, Sep 19, 2014 at 4:40 PM, Mariangela Hills <mariang...@wso2.com> > wrote: > >> Thanks for your feedback, Sajith! >> >> Based on your comment shall I remove the following guideline? >> >> >> - Reformat code using the formatting option provided in the >> respective IDE. >> For example, if you are using intelliJ IDEA, navigate *Code* menu and >> click *Reformat the code *or use the keyboard shortcut as follows: >> Alt+Ctrl+L >> >> >> Yes, that's better > > >> 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 Fri, Sep 19, 2014 at 3:35 PM, Sajith Kariyawasam <saj...@wso2.com> >> wrote: >> >>> Hi, >>> >>> In formatting code, I think we need to come up with templates for both >>> Eclipse and IntelliJ to make sure everyone uses the same formatting >>> guidelines. >>> Default formatters may be different within IDEs, and when someone >>> reformats using a different formatter, the code diff will have the >>> formatting diffs also, which >>> makes really hard to track the code changes. >>> >>> @Mari "Alt+Ctrl+L" is not the default code format shortcut in Eclipse, >>> IMO if we specify a shortcut key we need to mention the IDE as well.. >>> >>> Thanks, >>> Sajith >>> >>> 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/ >>>>> >>>> >>>> >>> >>> >>> -- >>> *Sajith Kariyawasam* >>> >>> >>> *Committer and PMC member, Apache Stratos,WSO2 Inc., http://wso2.com >>> <http://wso2.com>AMIE (SL)Mobile: +94772269575* >>> >> >> > > > -- > *Sajith Kariyawasam* > > > *Committer and PMC member, Apache Stratos,WSO2 Inc., http://wso2.com > <http://wso2.com>AMIE (SL)Mobile: +94772269575* >