Hi Mari, On Fri, Sep 19, 2014 at 4:40 PM, Mariangela Hills <[email protected]> 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 <[email protected]> > 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 <[email protected]> >> 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 <[email protected] >>> > 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 <[email protected] >>>> > 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 < >>>>> [email protected]> 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 < >>>>>> [email protected]> 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 < >>>>>>> [email protected]> 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 < >>>>>>> [email protected]> >>>>>>> > 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 < >>>>>>> [email protected]> >>>>>>> >> 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*
