Difference between revisions of "DesignGuidelines"

From Lazarus wiki
Jump to navigationJump to search
Line 6: Line 6:
 
;Coding style:
 
;Coding style:
 
* Since one style is easier to read, Lazarus follows the [http://dn.codegear.com/article/10280 CodeGear Coding Style Guide] lines. Of course, almost anyone will find some points there, that are arguable less readable than other styles. That's ok, just try to follow at least 90%.
 
* Since one style is easier to read, Lazarus follows the [http://dn.codegear.com/article/10280 CodeGear Coding Style Guide] lines. Of course, almost anyone will find some points there, that are arguable less readable than other styles. That's ok, just try to follow at least 90%.
* Try to avoid unit circles. This makes it easier to navigate and when unit is growing allows to split it.
+
* Try to avoid unit circles (uses section in implementation sections). Reasons: 1. FPC has problems them. 2. This makes it easier to navigate and when unit is growing allows to split it.
 
* Minimize the number of calls from Interfaces to LCL, when performing an action requested by the LCL. The interfaces only notify the LCL, never forces something. The LCL decides.
 
* Minimize the number of calls from Interfaces to LCL, when performing an action requested by the LCL. The interfaces only notify the LCL, never forces something. The LCL decides.
 
* Naming convention, see [[Nomenclature]]
 
* Naming convention, see [[Nomenclature]]

Revision as of 14:55, 22 January 2009

Deutsch (de) English (en) español (es) français (fr) 日本語 (ja) 한국어 (ko) português (pt) русский (ru)

Coding Guidelines for Lazarus

Coding style
  • Since one style is easier to read, Lazarus follows the CodeGear Coding Style Guide lines. Of course, almost anyone will find some points there, that are arguable less readable than other styles. That's ok, just try to follow at least 90%.
  • Try to avoid unit circles (uses section in implementation sections). Reasons: 1. FPC has problems them. 2. This makes it easier to navigate and when unit is growing allows to split it.
  • Minimize the number of calls from Interfaces to LCL, when performing an action requested by the LCL. The interfaces only notify the LCL, never forces something. The LCL decides.
  • Naming convention, see Nomenclature
  • All code must work with all checks (range, io, overflow, stack) on. Besides that this helps debugging, some users put these checks into their fpc.cfg, so they are applied to whole lazarus. Including packages and examples.


New files
  • Every file should start with a header containing the license and a few lines describing the content.
  • Pascal sources should have lowercase filenames (.pas, .pp, .inc, .lfm, .lrs)


Include files
  • should start with the {%MainUnit } directive


Packages
  • should have an .lpl entry in packager/globallinks/


Dialogs (modal forms)
  • Close on Escape (if key not used otherwise)
  • Define default button and Return activates it (if key not used)
  • Medium to complex dialogs should be resizable and size is stored


Main Menu Items
  • Should have a key in keymapping.pp



Authoritive version can be found in svn. Proposals for improvement can be added to talk page (discussion).