Documentation

Trace: C# Style

(jvx:join)
Translations of this page:

Table of Contents

All of our C# classes use a standardized style.

Classes

We use the following style for classes:

ClassTemplate.cs
/*
 * Copyright 2018 SIB Visions GmbH
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 *
 *
 * History
 *
 * dd.MM.yyyy - [XX] - creation
 */
 
namespace com.sibvisions.foo
{
    /// <summary>This is the base bar class.</summary>
    /// <author>First Last</author>
    public class Bar
    {
        #region Fields
 
        /// <summary>the property name for the serializer.</summary>
        public const int TYPE_FOO = 1;
 
        /// <summary>the value of foo bar.</summary>
        protected Object oValue = null;
 
        #endregion
 
        #region Constructors
 
        /// <summary>Creates a new instance of Foo</summary>
        /// <param name="pName">the simple name.</param>                            
        public Foo(String pName)
        {
        }
 
        #endregion
 
        #region Properties
 
        /// <summary>Returns the value object.</summary>
        /// <returns>the value</returns>
        public Object Value
        {
            get
            {
                return oValue;
            }
        }
 
        #endregion
 
        #region Interface implementation
 
        #endregion
 
        #region Methods
 
        #endregion
 
    }    // Foo
 
    /// <summary>The FooBar handles everything.</summary>
    /// <author>First Last</author>
    sealed class FooBar
    {
        #region Fields
 
        #endregion
 
        #region Constructor
 
        #endregion
 
    }    // FooBar
 
}

The following rules are defined by this template:

  • Variable declaration at the beginning (first constants, then variables)
  • Then constructors and initialization methods
  • Then the definition of properties
  • Then the implementation of interface methods
  • Then all overwritten methods (marked with @Override)
  • Then all methods of the class
  • Sub/Inner classes at the end

  • Each parameter of a method is marked using the prefix “p”
  • A prefix is also used for instance variables, e.g.:
    String sValue = "bar";
  • Important changes are documented in the header, including time stamp and author
  • Documentation for the class declaration, ALL methods, properties and instance variables and constants

Interfaces

We use the following style for interfaces:

InterfaceTemplate.cs
/*
 * Copyright 2018 SIB Visions GmbH
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 *
 *
 * History
 *
 * dd.MM.yyyy - [XX] - creation
 */
 
namespace com.sibvisions.foo
{
    /// <summary>This is the base bar interface</summary>
    /// <author>First Last</author>
    public interface IBar
    {
        #region Method definitions
 
        /// <summary>Gets the value.</summary>
        /// <returns>the value.</returns>
        public Object getValue();
 
        #endregion
 
    }    // IBar
}

The following rules are defined by this template:

  • Interface methods are defined at the beginning
  • Sub/Inner interfaces at the end

  • Each interface starts with “I”
  • Important changes are documented in the header, including time stamp and author
  • Documentation for the interface declaration and ALL methods

Unit Tests

The use of unit tests ensures that basic functionality works as expected. A unit test can never test the entire functionality in all conceivable configurations, but without it the required quality standards cannot be met. We therefore require a working set of unit tests.

Unit test are saved separately from the core source code:

<jvxnet>/trunk/net/JVxWin/src/com/sibvisions/foo
<jvxnet>/trunk/net/JVxWin/test/com/sibvisions/foo

NUnit is used as the testing framework.

We use the following style for unit tests:

TestTemplate.cs
/*
 * Copyright 2010 SIB Visions GmbH
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 *
 *
 * History
 *
 * dd.MM.yyyy - [XX] - creation
 */
 
namespace com.sibvisions.foo
{
    /// <summary>Tests the functionality of ...</summary>
    /// <author>First Last</author>
    [TestFixture]
    public class TestBar
    {
        #region Fields
 
        #endregion
 
        #region Initialization
 
        ///<summary>Initializes the unit test.</summary>
        [SetUp]
        public void SetUp()
        {
        }
 
        ///<summary>Sets values before each test.</summary>
        [TestFixtureSetUp]
        public virtual void FixtureSetUp()
        {
        }
 
        #endregion
 
        #region Test Methods
 
        /// <summary>Tests the ... method.</summary>
        [Test]
        public void testGet()
        {
        }
 
        #endregion
 
    }    // TestBar
}

The following rules are defined by this template:

  • Variables are declared at the beginning (first constants, then variables)
  • Then methods for the test initialization
  • Then all test methods (marked with [Test])

  • Each test class starts with “Test”
  • Each test method starts with “test”
  • Each test method begins with
  • Documentation for the class declaration, ALL methods, properties and instance variables and constants
This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information