Project

General

Profile

Developer guideline » History » Version 12

Max Milbers, 02/25/2011 04:42 PM

1 1 Max Milbers
h1. Developer guideline
2
3 12 Max Milbers
h2. Philosophy and goal
4
The goal is to write a small fast and stable core code which is easy to extend. The priorities are as the following:
5
- Write OOP and clean in the given MVC structure
6
- Protect and secure the code
7
- the code should be fast and performant
8
- Focus on the core functions
9 1 Max Milbers
10 12 Max Milbers
and as last thing, think about eyecandies and design.
11 7 Max Milbers
12 12 Max Milbers
Remember we dont want an ecommerce framework full of features. We want a slim and fast framework which can be easily extended with features.
13 7 Max Milbers
14 1 Max Milbers
- Mistakes might happen, important is to learn from them
15
16
- It is better to do something wrong than to do nothing
17 12 Max Milbers
18
h2. Guidelines for teamwork
19
The first very important rule is, 
20
21
"Stay at your task"
22
23
This means, when you find a bug somewhere while you are working on your task, dont just fix it. Look in the tracker who is responsible for the code, look in the svn history to see who did the last change or even better the changes which cause your bugs. When you dont find any person ask the projectleader (Max Milbers). Give the person some time to correct the code, fix it only, when you get an OK by the projectleader.
24
25
This rule is very important for the teamwork and has several reasons.
26
It often happens that someone is changing something which is effecting the code in many areas. We already had the case that someone (lets call him A) changed the code. Another guym, B, was working on his own code, using code written by A. Due the changes the code of B didnt worked before and B started to "fix" the code of A, which just destroyed the work of A, because B thought in the old structure and A just invented a new system.
27
Or another annoying and frustrating case is when B says to A, hey there is a bug in your code. A starts immediatly fixing it, but B fixed it also and A gets an conflicted SVN and did his working for nothing or even worse (we had that also), gets an conflicted svn and has to fix the "fix" of B again, because only A really understoods that part of code.
28
29
So working in the svn together is quite easy even when we work on the same files, when everyone follows the rules:
30
- update your svn often
31
- stay at your task
32
- dont fix bugs not related to your task without permission by the projectleader.
33
34
Note about svn:
35
If you want to committ a new version, first do an update via SVN of it, then test it again and after that committ it.
36
37
h2. Requesting features.
38
39
If you have an idea or special interest for VirtueMart, write it in the internal forums where we can discuss it and develop a plan. However, if you start developing something then finish it. Too often developers are very enthuastic and start a great, big, mega feature and end up with nothing useable. Discussion and planning in the forum should make possible to work together
40
41
Everyone can add features as many as he wants but must follow 3 rules
42
1. it must not slow down the page and/or can be disabled and the standard is disabled
43
2. it must fit in the rest of the architecture
44
3. it must be bugfree for the release date (Beta, RC, Final)
45
46 7 Max Milbers
47
h2. Some general coding advices
48 1 Max Milbers
49 10 Max Milbers
In general we avoid the use of globals. Globals are hard to maintain and they are unsure variables. 
50
Here a guide for [[Setting up a Development Environment]]
51 7 Max Milbers
Here are some general tips and tricks for php: [[general php hints]]
52
53 1 Max Milbers
h2. Code Formatting:
54
55
We follow the joomla standard in most cases. We use camelCase for methods. For faster copypasting and working with database fields. Both variable and database fields are lowercase and seperated with "_". You may use for internal variables camelCase also.
56
57
Example:
58
59
60 5 Max Milbers
<pre>
61 4 Max Milbers
function exampleMethod($data = 0) {
62 2 Max Milbers
    if (!$product_id) $product_id = JRequest::getInt('product_id', 0);
63
    if ($product_id > 0) {
64 1 Max Milbers
        ...;
65
    }
66 2 Max Milbers
}
67 1 Max Milbers
</pre>
68 6 Max Milbers
69 1 Max Milbers
h2. SQL Formatting:
70
71
The queries should follow this format:
72
73
@$q  = 'SELECT `example_id` FROM  `#__vm_table` WHERE `user_id`=' . (int)$user_id;@
74
75
or if the
76
77
$user_id is an array, use $user_id["myId"]
78
79
Placing of the ` improves speed, because the sql-engine can parse faster ( and do not have to reparse).
80
81
h2. Variable Formatting:
82
83
Due abstract logic many people name their variables or database fields just "id", "key", "value" and so on.
84
85
In our case we want to rewrite the structure of an old code, therefore it is very important to find the variable in the code rather fields in the database.
86
87
So we want a kind of this: <classname><tablename>variable like here
88
89
$vendor_id or $payment_method_id
90
91
Exception from this rule is the use of ordering and published. Ordering and published with 0 and 1 as values are useable with the joomla standard methods.
92
93
h2. Filename Formatting:
94
95
Filenames should be lowercase.
96
97
Models filenames (mymodel.php), view direcorynames (myview), all helper files and probably all other files loaded by the Joomla Framework, must be lowercase, no matter how you load the file:
98
99
 @$this->loadHelper('adminMenu'); // looks for the file helpers/adminmenu.php@
100
101
More complex filenames that are specific to your task and loaded by your own code (using require_once()), e.g. mySpecificClass.php, can be camelcase.
102
103
Read this article for more info http://docs.joomla.org/Talk:Developing_a_Model-View-Controller_Component_-_Part_1#Use_lowercase_file_and_folder_names_in_your_components.21 
104
105 11 Oscar van Eijk
h2. Table names
106
107
Depending on the way mysqld is configured, the MySQL server might be case sensitive on linux systems too, so _always_ use the correct case, preferably lowercase only.
108
109 9 Oscar van Eijk
h2. URL Requests:
110
111
As written in the section __Filename Formatting__ above, Joomla requires lowercase filenames. However, URL requests are not lowercased by Joomla. In order to find the proper views and controllers, make sure you use lowercase only in requests, e.g.:
112
113
  $this->setRedirect('index.php?option=com_virtuemart&view=updatesMigration', $msg); // Fails
114
$this->setRedirect('index.php?option=com_virtuemart&view=updatesmigration', $msg); // Works
115
116
117 1 Max Milbers
h2. Character Encoding:
118
119
Like in joomla we use UTF-8. Please ensure the right character set in your IDE.