Warning: Can't synchronize with repository "(default)" (/home/git/ome.git does not appear to be a Git repository.). Look in the Trac log for more information.
Notice: In order to edit this ticket you need to be either: a Product Owner, The owner or the reporter of the ticket, or, in case of a Task not yet assigned, a team_member"

Task #4312 (closed)

Opened 13 years ago

Closed 11 years ago

Javascript style coding

Reported by: atarkowska Owned by: atarkowska
Priority: minor Milestone: Unscheduled
Component: General Version: n.a.
Keywords: n.a. Cc:
Resources: n.a. Referenced By: n.a.
References: n.a. Remaining Time: 0.0d
Sprint: n.a.

Description (last modified by atarkowska)

We should define one common coding style in order to have consistent code and easy readable.

APIDoc:

    /**
    * Reverse a string
    *
    * @param {String} input String to reverse
    * @return {String} The reversed string
    */
    var reverse = function (input) {
        // ...
    return output;
};

Javascript:

jQuery:

Public
Public functions and variables are available to access on an instance of a class.

    function MyClass () {
        //..
    }

    //public member variable
    MyClass.prototype.publicVar = "My Public Variable";

    //public member function
    MyClass.prototype.publicFunction = function () {
        alert( this.publicVar );
    }

    //create an instance
    var oClass = new MyClass();

    //run a member function
    oClass.publicFunction(); //Alert: "My Public Variable"

Private
Private member functions and variables are hidden to outside code. Only public functions can access them.

    function MyClass () {

        //reference to this
        var self = this;

        //private member variable
        var privateVar = "My Private Variable";

        //public member variable
        this.publicVar = "My Public Variable";

        //private member function
        //shorthand function privateFunction() {...}
        var privateFunction = function () {

            self.publicVar += " Modified By A Private Fucntion";

            alert( self.publicVar );

        }
    }

    //create an instance
    var oClass = new MyClass();

    //run a private member function
    oClass.privateFunction(); //private function is undefined

    //get a private member var
    alert( oClass.privateVar ); //private var is undefined

Privileged
A privileged member function has access to private variables, but is available publicly.

    function MyClass () {

        //private member variable
        var privateVar = "My Private Variable";

        //privileged member function
        this.privilegedFunction = function () {
            alert( privateVar );
        }
    }
    
    //create an instance
    var oClass = new MyClass();

    //run a privileged member function
    oClass.privilegedFunction(); //Output: alerts the value of the private var

Static
A static function or variable is available on the base class (or JavaScript?) function, but is not available to the class instance.

    function MyClass () {
        //...
    }

    //declare a static member
    MyClass.staticVar = "My static variable";

    //declare a static function
    MyClass.staticFunction = function ( pInput ) {
        return new MyClass( MyClass.staticVar , pInput );
    }

    //create an instance
    var oClass = new MyClass();

    //run a static function (NO access to private or public)
    oClass.staticFunction( 9 ); //staticFunction is undefined on an instance
    
    //run a privileged member function on the class
    MyClass.privilegedFunction(); //The function runs
    

Change History (17)

comment:1 Changed 13 years ago by atarkowska

  • Status changed from new to accepted

comment:2 Changed 13 years ago by atarkowska

  • Description modified (diff)

comment:3 Changed 13 years ago by atarkowska

  • Description modified (diff)

comment:4 Changed 13 years ago by atarkowska

  • Description modified (diff)

comment:5 Changed 13 years ago by atarkowska

  • Description modified (diff)

comment:6 Changed 13 years ago by atarkowska

  • Remaining Time changed from 2 to 1.5

comment:7 Changed 13 years ago by jburel

  • Sprint changed from 2011-02-10 (5) to 2011-02-24 (6)

Moved from sprint 2011-02-10 (5)

comment:8 Changed 13 years ago by atarkowska

  • Owner atarkowska deleted
  • Status changed from accepted to new

comment:9 Changed 13 years ago by atarkowska

  • Owner set to atarkowska

comment:10 Changed 13 years ago by atarkowska

  • Remaining Time changed from 1.5 to 1

comment:11 Changed 13 years ago by atarkowska

  • Sprint changed from 2011-02-24 (6) to 2011-03-10 (7)

comment:12 Changed 13 years ago by atarkowska

  • Sprint changed from 2011-03-10 (7) to 2011-03-24 (8)

comment:13 Changed 13 years ago by atarkowska

  • Sprint changed from 2011-03-24 (8) to 2011-04-07 (9)

comment:14 Changed 13 years ago by atarkowska

  • Sprint changed from 2011-04-07 (9) to 2011-04-21 (10)

comment:15 Changed 13 years ago by atarkowska

  • Milestone changed from OMERO-Beta4.3 to Unscheduled
  • Sprint 2011-04-21 (10) deleted

comment:16 Changed 13 years ago by wmoore

Referencing ticket #3300 has changed sprint.

comment:17 Changed 11 years ago by wmoore

  • Remaining Time changed from 1 to 0
  • Resolution set to fixed
  • Status changed from new to closed

I vote for using Crockford's style, since we are now using jsHint.

Note: See TracTickets for help on using tickets. You may also have a look at Agilo extensions to the ticket.

1.3.13-PRO © 2008-2011 Agilo Software all rights reserved (this page was served in: 0.70671 sec.)

We're Hiring!