Was das Smartifizieren bringt
Friday, 2. March 2012
Es wird öfter geschrieben, dass Serendipity sauberen Code hätte und ein gutes Stück Software sei. Letztes bestreite ich keinesfalls. Aber über den sauberen Code kann man streiten: es ist halt ursprünglich ein PHP4-Programm, und das sieht man.
Im Backend sieht es besonders übel aus. Gerne wurde da mit ?> gearbeitet und daraufhin der HTML-Code direkt ausgegeben - und dabei die Einrückung aufgegeben. Dadurch wird der Code richtig schwer lesbar. Ein gutes Beispiel ist dieser Abschnitt der plugins.inc.php:
if ($serendipity['GET']['only_group'] == 'UPGRADE') { serendipity_plugin_api::hook_event('backend_pluginlisting_header_upgrade', $pluggroups); } ?> <table cellspacing="0" cellpadding="0" border="0" width="100%"> <?php $available_groups = array_keys($pluggroups); foreach($pluggroups AS $pluggroup => $groupstack) { if (empty($pluggroup)) { ?> <tr> <td colspan="2" class="serendipity_pluginlist_header"> <form action="serendipity_admin.php" method="get"> <?php echo serendipity_setFormToken(); ?> <input type="hidden" name="serendipity[adminModule]" value="plugins" /> <input type="hidden" name="serendipity[adminAction]" value="addnew" /> <input type="hidden" name="serendipity[type]" value="<?php echo htmlspecialchars($serendipity['GET']['type']); ?>" /> <?php echo FILTERS; ?>: <select name="serendipity[only_group]"> <?php foreach((array)$available_groups AS $available_group) { ?> <option value="<?php echo $available_group; ?>" <?php echo ($serendipity['GET']['only_group'] == $available_group ? 'selected="selected"' : ''); ?>> <?php echo serendipity_groupname($available_group); ?> <?php } ?> <option value="ALL" <?php echo ($serendipity['GET']['only_group'] == 'ALL' ? 'selected="selected"' : ''); ?>> <?php echo ALL_CATEGORIES; ?> <option value="UPGRADE" <?php echo ($serendipity['GET']['only_group'] == 'UPGRADE' ? 'selected="selected"' : ''); ?>> <?php echo WORD_NEW; ?> </select> <input class="serendipityPrettyButton input_button" type="submit" value="<?php echo GO; ?>" /> </form> </td> </tr> <?php if (!empty($serendipity['GET']['only_group'])) { continue; } } elseif (!empty($serendipity['GET']['only_group']) && $pluggroup != $serendipity['GET']['only_group']) { continue; } else { ?><td colspan="2" class="serendipity_pluginlist_section"><strong><?php echo serendipity_groupname($pluggroup); ?></strong></td> </tr> <?php } ?> <tr> <td><strong>Plugin</strong></td> <td width="100" align="center"><strong>Action</strong></td> </tr> <?php foreach ($groupstack as $plug) { Die gleiche Stelle in der smartifizierten Version:
if ($serendipity['GET']['only_group'] == 'UPGRADE') { serendipity_plugin_api::hook_event('backend_pluginlisting_header_upgrade', $pluggroups); } $available_groups = array_keys($pluggroups); $data['available_groups'] = $available_groups; $groupnames = array(); foreach($available_groups as $available_group) { $groupnames[$available_name] = serendipity_groupname($available_group); } $data['groupnames'] = $groupnames; $data['pluggroups'] = $pluggroups; $data['formToken'] = $formToken; $data['only_group'] = $serendipity['GET']['only_group']; $requirement_failures = array(); foreach($pluggroups AS $pluggroup => $groupstack) { foreach ($groupstack as $plug) {Man spart zwar nicht insgesamt an Zeilen:
wc -l include/admin/plugins.inc.php 583 include/admin/plugins.inc.php wc -l /var/www/include/admin/plugins.inc.php /var/www/include/admin/tpl/plugins.inc.tpl 448 /var/www/include/admin/plugins.inc.php 209 /var/www/include/admin/tpl/plugins.inc.tpl 657 insgesamtEs wurden zusammengerechnet sogar mehr. Aber man bekommt weniger und besser lesbaren Code auf der Logikebene, und sowieso: Eine Trennung zwischen Logikebene und Sicht.
Eine sehr kleine Datei fehlt noch, bis jetzt bin ich mit dem Ergebnis unserer Arbeit schon sehr zufrieden.
Artikel mit ähnlichen Themen:
- 15 Jahre Serendipity als Entwickler - ein Rückblick und ein Ausblick
- Serendipity 2.5-beta1
- Serendipity 2.4.0 ist draußen (das stabile Release für PHP 8.0)
- Das perfekte Blogsystem
- Immer sichtbare Seitenleisten im Blog via CSS-Grid
Suche
Kategorien
Blog abonnieren
onli blogging am : Serendipity 2.0 pre-alpha: Der aktuelle Stand
Vorschau anzeigen
www.onli-blogging.de am : PingBack
Vorschau anzeigen