De afgelopen anderhalf jaar ben ik erg enthousiast bezig geweest met een eigen CMS'je. Omdat ik toch op een groot scherm met een hoge resolutie werk vond ik het niet nodig, en ook niet overzichtelijk, om lange regels code af te breken.
Vandaag wilde ik delen van de code uitprinten, en dat ziet er niet uit. Had ik nu maar een maximum van 80 karakters aangehouden! Enkele voorbeelden:
Neem de regels 12, 13, 34, 36 en 40 als voorbeeld. Deze zijn veel te breed, maar de "flow" van de code is ihmo op deze manier wel overzichtelijker dan wanneer je deze regels gaat afbreken. Bijvoorbeeld regel 34-37:
Ik vind de code er niet leesbaarder op geworden. Ik heb zojuist een aantal topics op GoT doorgelopen die gaan over programmeer stijlen, maar in geen van die topics wordt ingegaan op regel lengte. Mijn vragen aan jullie zijn dan ook:
Vandaag wilde ik delen van de code uitprinten, en dat ziet er niet uit. Had ik nu maar een maximum van 80 karakters aangehouden! Enkele voorbeelden:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| // Eerste voorbeeld function nav_item_list($unfold_items) { $header = array('', 'Title', array('data' => 'Access', 'align' => 'right'), array('data' => 'Operations', 'colspan' => 4, 'align' => 'right')); $unfold = ($unfold_items) ? explode(',', $unfold_items) : array(1); $rows = _item_list($unfold); foreach (user_fetch_roles() as $rid => $role) { $roles.= " $rid $role"; } $output = get_messages(); $output.= p('Navigatie', "Overzicht navigatie menu. U kunt pagina's toevoegen, bewerken of verwijderen. De legenda voor de gebruikersgroepen is: $roles."); $output.= p(null, l('Maak een nieuwe pagina', 'admin/nav/add').' om aan de navigatie toe te voegen.'); $output.= form(table($header, $rows, array('id' => 'nodelist', 'cellpadding' => 4, 'border' => 1))); theme('body', $output); } // Tweede voorbeeld function nav_multi_tree($active_item, $level = null) { global $nav; $active_item = $active_item ? $active_item : 1; $level = $level ? $level : 1; $unfold_items = nav_path_to_top($active_item); $child_table = nav_child_table(); foreach ($unfold_items as $unfold_item) { if (isset($child_table[$unfold_item]) && $unfold_item != 0) { $childcode = ''; foreach ($child_table[$unfold_item] as $child_id) { $child = $nav[$child_id]; if ($child['innav'] == 1 && $child['status'] == 1 && ($child['level'] >= $level) && nav_access($child['roles'])) { $class = (in_array($child_id, $unfold_items)) ? 'active' : 'inactive'; $childcode.= sprintf("<li %s>%s</li>", 'class="'.$class.'"', l($child['title'], $child['url'])); } } if ($childcode) { $output = sprintf('<div class="subnav"><div class="header"></div><ul>%s</ul><div class="footer"></div></div>', $childcode).$output; } } } return $output; } |
Neem de regels 12, 13, 34, 36 en 40 als voorbeeld. Deze zijn veel te breed, maar de "flow" van de code is ihmo op deze manier wel overzichtelijker dan wanneer je deze regels gaat afbreken. Bijvoorbeeld regel 34-37:
PHP:
1
2
3
4
5
6
| if ($child['innav'] == 1 && $child['status'] == 1 && ($child['level'] >= $level) && nav_access($child['roles'])) { $class = (in_array($child_id, $unfold_items)) ? 'active' : 'inactive'; $childcode.= sprintf("<li %s>%s</li>", 'class="'.$class.'"', l($child['title'], $child['url'])); } |
Ik vind de code er niet leesbaarder op geworden. Ik heb zojuist een aantal topics op GoT doorgelopen die gaan over programmeer stijlen, maar in geen van die topics wordt ingegaan op regel lengte. Mijn vragen aan jullie zijn dan ook:
- houd jij je aan een maximum aantal karakters per regel, en zo ja - hoeveel?
- stamt de 80-karakters regel niet nog uit de tijd dat unix-terminals nu eenmaal niet meer karakters op een regel konden weergeven en is die regel dan niet achterhaald?
- wat zijn jouw motieven om je eventueel aan een maximale breedte te houden? Vind je "anders kan ik niet printen" een goede reden? (Weet niet of ik m'n code om alleen die reden wil aanpassen)
- zijn er ergens standaarden te vinden over het afbreken van regels? Ik kon ze niet vinden in de MS .NET coding style bijvoorbeeld
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."