Coding Standards: Difference between revisions

From ParaQ Wiki
Jump to navigationJump to search
No edit summary
Line 1: Line 1:
==Style==
==Style==


We'll adhere to VTK coding standards except where noted here.
We'll adhere to [http://www.vtk.org/Wiki/VTK_Coding_Standards VTK coding standards] except where noted here.


* Qt derived classes will follow Qt style for member functions.  We don't want to mix two styles in one class (Qt virtual overloads & VTK style).
* Qt derived classes will follow Qt style for member functions.  We don't want to mix two styles in one class (Qt virtual overloads & VTK style).

Revision as of 11:46, 27 March 2006

Style

We'll adhere to VTK coding standards except where noted here.

  • Qt derived classes will follow Qt style for member functions. We don't want to mix two styles in one class (Qt virtual overloads & VTK style).
  • Avoid multiple inheritance of Qt & VTK classes. Style in such classes would be mixed. Besides, object management is not compatible (VTK's A::New, a->Delete vs. Qt's new A(), nothing).
  • Member variables will follow VTK style. In contrast, Qt headers do one of two things: use '_' prefix to prevent collisions with get methods of the same name, hide all data in an internals class/struct. Using the VTK style will lead to more readable code.


Here's an example class

/// Widget that paints a property
class pqMyWidget : public QWidget
{
  Q_OBJECT
  Q_PROPERTY(QString property READ property WRITE setProperty)
  
public:
  pqMyWidget(QWidget* parent);
  ~pqMyWidget();

  /// overloaded paint event to paint property
  virtual bool paintEvent(QPaintEvent* e);

  /// get property
  QString property() const;
  /// set property
  void setProperty(QString s);

protected:
  QString Property;
};

Comments

Historically, most VTK-style source documentation (.NAME, .SECTION, Description:, etc) has been converted into [Doxygen] compatible tags, then the source docs have been generated by Doxygen. Some projects (vtkSNL, CMake) have been using Doxygen tags directly. To capitalize on the popularity and features offered by Doxygen, all ParaQ-related source docs must use Doxygen tags. At a minimum, all public interfaces should be documented with Doxygen "brief" descriptions, but there are many useful tags available, see the [Doxygen Manual]. A couple of favorites are "\todo" and "\deprecated", which can help considerably in eliminating orphaned code.